![]() |
Energy Micro IEC60355 Library Example Project 1.0 (internal use only!) GCC-Version
Example project demonstrating POST and BIST library functions
|
00001 /***************************************************************************/ 00030 #ifndef __IEC60335_CLASS_B_CRITCAL_DATA_H__ 00031 #define __IEC60335_CLASS_B_CRITCAL_DATA_H__ 00032 00037 #include "iec60335_class_b_typedef.h" 00038 00039 #ifdef __cplusplus 00040 extern "C" 00041 { 00042 #endif /* __cplusplus */ 00043 00059 typedef struct critical_double_struct 00060 { 00061 double inverse; 00062 double data; 00063 } critical_double; 00064 00077 typedef struct critical_float_struct 00078 { 00079 float inverse; 00080 float data; 00081 } critical_float; 00082 00095 typedef struct critical_uint64_t_struct 00096 { 00097 uint64_t inverse; 00098 uint64_t data; 00099 } critical_uint64_t; 00100 00113 typedef struct critical_int64_t_struct 00114 { 00115 int64_t inverse; 00116 int64_t data; 00117 } critical_int64_t; 00118 00131 typedef struct critical_uint32_t_struct 00132 { 00133 uint32_t inverse; 00134 uint32_t data; 00135 } critical_uint32_t; 00136 00149 typedef struct critical_int32_t_struct 00150 { 00151 int32_t inverse; 00152 int32_t data; 00153 } critical_int32_t; 00154 00167 typedef struct critical_uint16_t_struct 00168 { 00169 uint16_t inverse; 00170 uint16_t data; 00171 } critical_uint16_t; 00172 00185 typedef struct critical_int16_t_struct 00186 { 00187 int16_t inverse; 00188 int16_t data; 00189 } critical_int16_t; 00190 00203 typedef struct critical_uint8_t_struct 00204 { 00205 uint8_t inverse; 00206 uint8_t data; 00207 } critical_uint8_t; 00208 00221 typedef struct critical_int8_t_struct 00222 { 00223 int8_t inverse; 00224 int8_t data; 00225 } critical_int8_t; 00226 00232 #define IEC60335_ClassB_CriticalDataValidate(criticalVar) \ 00233 ((criticalVar.data == ~(criticalVar.inverse)) ? (IEC60335_testPassed) : (IEC60335_testFailed)) 00234 00239 #define IEC60335_ClassB_CriticalDataPop(criticalVar) \ 00240 (criticalVar.data) 00241 00247 #define IEC60335_ClassB_CriticalDataPush(criticalVar, value) { \ 00248 criticalVar.inverse = ~value; \ 00249 criticalVar.data = value; \ 00250 } 00251 00257 #define IEC60335_ClassB_CriticalDataInit(value) { \ 00258 ~value, value \ 00259 } 00260 00261 #ifdef __cplusplus 00262 } 00263 #endif /* __cplusplus */ 00264 00269 #endif /* __IEC60335_CLASS_B_CRITCAL_DATA_H__ */ 00270 00271 /************************************** EOF *********************************/