/* * DataType.h * * Author: Aleksey Gerasimenko * gerasimenko.aleksey.n@gmail.com */ #include #include #ifndef SYSTEM_DATATYPE_H_ #define SYSTEM_DATATYPE_H_ typedef void (*pGPIO_FUNCTION)(); typedef void (*pGPIO_FUNCTION_UINT)(uint16_t& data); struct Register16BitField { uint16_t b00: 1; uint16_t b01: 1; uint16_t b02: 1; uint16_t b03: 1; uint16_t b04: 1; uint16_t b05: 1; uint16_t b06: 1; uint16_t b07: 1; uint16_t b08: 1; uint16_t b09: 1; uint16_t b10: 1; uint16_t b11: 1; uint16_t b12: 1; uint16_t b13: 1; uint16_t b14: 1; uint16_t b15: 1; };//Register16BitField struct Register16ByteField { uint16_t low :8; uint16_t high :8; };//Register16ByteField struct Register16WordField { uint16_t wL :16; };//Register16WordField union Register16 { uint16_t all; Register16BitField bit; Register16ByteField byte; };//Register16 struct Register32BitField { uint16_t b00: 1; uint16_t b01: 1; uint16_t b02: 1; uint16_t b03: 1; uint16_t b04: 1; uint16_t b05: 1; uint16_t b06: 1; uint16_t b07: 1; uint16_t b08: 1; uint16_t b09: 1; uint16_t b10: 1; uint16_t b11: 1; uint16_t b12: 1; uint16_t b13: 1; uint16_t b14: 1; uint16_t b15: 1; uint16_t b16: 1; uint16_t b17: 1; uint16_t b18: 1; uint16_t b19: 1; uint16_t b20: 1; uint16_t b21: 1; uint16_t b22: 1; uint16_t b23: 1; uint16_t b24: 1; uint16_t b25: 1; uint16_t b26: 1; uint16_t b27: 1; uint16_t b28: 1; uint16_t b29: 1; uint16_t b30: 1; uint16_t b31: 1; };//Register32BitField struct Register32ByteField { uint16_t bt0 :8; uint16_t bt1 :8; uint16_t bt2 :8; uint16_t bt3 :8; };//Register32ByteField struct Register32WordField { uint16_t wL :16; uint16_t wH :16; };//Register32WordField union UIntRegister32 { uint32_t all; Register32BitField bit; Register32ByteField byte; Register32WordField word; };//UIntRegister32 struct BoolRegisterBitField { uint16_t b0 :1; };//BoolRegisterBitField union BoolRegister { uint16_t all; BoolRegisterBitField boolbit; BoolRegister(): all(0) {} };//BoolRegister struct AnalogFaultRegister16BitField { uint16_t a0: 1; uint16_t a1: 1; uint16_t a2: 1; };//AnalogFaultRegister16BitField union AnalogFaultRegister { uint16_t all; AnalogFaultRegister16BitField bit; AnalogFaultRegister(): all(0) {} };//AnalogFaultRegister struct HardFaultRegister16BitField { uint16_t h0: 1; uint16_t h1: 1; uint16_t h2: 1; };//HardFaultRegister16BitField union HardFaultRegister { uint16_t all; HardFaultRegister16BitField bit; HardFaultRegister(): all(0) {} };//HardFaultRegister #endif /* SYSTEM_DATATYPE_H_ */