Energy Micro IEC60355 Library Project 1.037 GCC-Version
IEC60355 Library documentation and API

iec60335_class_b_typedef.h

Go to the documentation of this file.
00001 /***************************************************************************/
00028 #ifndef __IEC60335_CLASS_B_TYPEDEF_H__
00029 #define __IEC60335_CLASS_B_TYPEDEF_H__
00030 
00031 #include <stdint.h>
00032 #include <stdbool.h>
00033 
00034 #ifdef __cplusplus
00035 extern "C"
00036 {
00037 #endif /* __cplusplus */
00038 
00039 typedef enum testResult_enum
00040 {
00041   IEC60335_testFailed     = 0,              
00042   IEC60335_testPassed     = 1,              
00043   IEC60335_testInProgress = 2               
00044 } testResult_t;
00045 
00046 typedef enum testState_enum
00047 {
00048   IEC60335_stateDone       = 0,             
00049   IEC60335_statePending    = 1,             
00050   IEC60335_stateInProgress = 2              
00051 } type_testState_t;
00052 
00053 typedef enum testStart_enum
00054 {
00055   IEC60335_stop  = 0,                       
00056   IEC60335_start = 1                        
00057 } type_testStart_t;
00058 
00059 /* CPU register test */
00060 typedef struct
00061 {
00062   unsigned int testState;                   
00063   testResult_t testResult;                  
00064 } IEC60335_CPUreg_struct;
00065 
00066 /* clock test */
00067 typedef struct ClkTest_struct
00068 {
00069   uint32_t Ratio;                           
00070   uint32_t Tolerance;                       
00071   uint32_t timerCounter;                    
00072   uint32_t baseTicks;                       
00073   uint32_t result;                          
00074 } ClockTest_t;
00075 
00076 /* Interrupt test */
00077 #define _VAL_A    0x01234567                
00078 #define _VAL_B    0x12345678
00079 #define _VAL_C    0x23456789
00080 #define _VAL_D    0x3456789A
00081 #define _VAL_E    0x456789AB
00082 #define _VAL_F    0x56789ABC
00083 #define _VAL_G    0x6789ABCD
00084 /* possible return values */
00085 enum _ReturnValues
00086 {
00087   VAL_A = _VAL_A,
00088   VAL_B = _VAL_B,
00089   VAL_C = _VAL_C,
00090   VAL_D = _VAL_D,
00091   VAL_E = _VAL_E,
00092   VAL_F = _VAL_F,
00093   VAL_G = _VAL_G,
00094 };
00095 typedef enum _ReturnValues   IEC60335_B_PCTest_ReturnValues;
00096 
00100 typedef struct
00101 {
00102   uint32_t Active;                              
00103   uint32_t Mode;                                
00104 } IEC60335_IRQ_Test_t;
00105 
00112 typedef struct
00113 {
00114   uint32_t EffectiveCount;                      
00115   uint32_t MinThres;                            
00116   uint32_t MaxThres;                            
00117 } IRQTestData_t;
00118 
00119 /* Program Counter test */
00120 struct _Data
00121 {
00122   IEC60335_B_PCTest_ReturnValues ret;
00123   uint32_t                       number;        
00124 };
00125 typedef struct _Data   Data_t;
00126 
00127 typedef IEC60335_B_PCTest_ReturnValues (*Exec_t)(Data_t *data);
00128 
00129 
00130 /* Flash test */
00131 typedef struct IEC60335_FlashSign
00132 {
00133   uint32_t CRC32Val;                            
00134   uint32_t MemLenght;                           
00135   uint32_t NextAddress;                         
00136   uint32_t BlockSize;                           
00137   uint32_t Status;                              
00138 } FlashCRC_t;
00139 
00140 #define MIN(a, b)             ((a < b) ? a : b)     
00141 #define MAX(a, b)             ((a > b) ? a : b)     
00142 #define CUT(a, b, c)          (MAX(a, MIN(b, c)))   
00143 #define IsInRange(a, b, c)    ((CUT(a, b, c) == b) ? true : false) 
00145 #ifdef __cplusplus
00146 }
00147 #endif  /* __cplusplus */
00148 
00149 #endif  /* __IEC60335_CLASS_B_TYPEDEF_H__ */