/* * RUBUSTypes.h * * Author: Aleksey Gerasimenko * gerasimenko.aleksey.n@gmail.com */ #ifndef MODBUSRTU_RUBUSTYPES_H_ #define MODBUSRTU_RUBUSTYPES_H_ #include #include #include "framework.h" namespace MODBUSRTU { typedef unsigned char uint8_t; typedef signed char int8_t; enum rubus_variant_type_t { RUBUS_UNDEFINED, RUBUS_BOOL, RUBUS_FLOAT, RUBUS_UINT8, RUBUS_UINT16, RUBUS_UINT32, RUBUS_INT8, RUBUS_INT16, RUBUS_INT32, RUBUS_BIT0, RUBUS_BIT1, RUBUS_BIT2, RUBUS_BIT3, RUBUS_BIT4, RUBUS_BIT5, RUBUS_BIT6, RUBUS_BIT7, RUBUS_BIT8, RUBUS_BIT9, RUBUS_BIT10, RUBUS_BIT11, RUBUS_BIT12, RUBUS_BIT13, RUBUS_BIT14, RUBUS_BIT15, RUBUS_BIT16, RUBUS_BIT17, RUBUS_BIT18, RUBUS_BIT19, RUBUS_BIT20, RUBUS_BIT21, RUBUS_BIT22, RUBUS_BIT23, RUBUS_BIT24, RUBUS_BIT25, RUBUS_BIT26, RUBUS_BIT27, RUBUS_BIT28, RUBUS_BIT29, RUBUS_BIT30, RUBUS_BIT31}; struct RUBUS_REGISTER_16_BIT_FIELD { 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; };//RUBUS_REGISTER_16_BIT_FIELD struct RUBUS_REGISTER_32_BIT_FIELD { uint32_t b00: 1; uint32_t b01: 1; uint32_t b02: 1; uint32_t b03: 1; uint32_t b04: 1; uint32_t b05: 1; uint32_t b06: 1; uint32_t b07: 1; uint32_t b08: 1; uint32_t b09: 1; uint32_t b10: 1; uint32_t b11: 1; uint32_t b12: 1; uint32_t b13: 1; uint32_t b14: 1; uint32_t b15: 1; uint32_t b16: 1; uint32_t b17: 1; uint32_t b18: 1; uint32_t b19: 1; uint32_t b20: 1; uint32_t b21: 1; uint32_t b22: 1; uint32_t b23: 1; uint32_t b24: 1; uint32_t b25: 1; uint32_t b26: 1; uint32_t b27: 1; uint32_t b28: 1; uint32_t b29: 1; uint32_t b30: 1; uint32_t b31: 1; };//RUBUS_REGISTER_32_BIT_FIELD struct RUBUS_REGISTER_16_BYTE_FIELD { uint16_t bt0 :8; uint16_t bt1 :8; };//RUBUS_REGISTER_16_BYTE_FIELD union RUBUS_REGISTER_16 { uint16_t all; RUBUS_REGISTER_16_BIT_FIELD bit; RUBUS_REGISTER_16_BYTE_FIELD byte; RUBUS_REGISTER_16(uint16_t val): all(val) {} };//RUBUS_REGISTER_16 struct RUBUS_REGISTER_32_BYTE_FIELD { uint16_t bt0 :8; uint16_t bt1 :8; uint16_t bt2 :8; uint16_t bt3 :8; };//RUBUS_REGISTER_32_BYTE_FIELD union RUBUS_REGISTER_16_WORD { uint16_t all; RUBUS_REGISTER_16_BIT_FIELD bit; RUBUS_REGISTER_16_BYTE_FIELD byte; };//RUBUS_REGISTER_16_WORD struct RUBUS_REGISTER_32_WORD_FIELD { RUBUS_REGISTER_16_WORD wL; RUBUS_REGISTER_16_WORD wH; };//RUBUS_REGISTER_32_WORD_FIELD union RUBUS_REGISTER_32 { uint32_t all; bool b; float f; uint8_t u8; uint16_t u16; uint32_t u32; int8_t i8; int16_t i16; int32_t i32; RUBUS_REGISTER_16_BIT_FIELD bit16; RUBUS_REGISTER_32_BIT_FIELD bit32; RUBUS_REGISTER_32_WORD_FIELD word; RUBUS_REGISTER_32_BYTE_FIELD byte; RUBUS_REGISTER_32(): all((uint32_t)0) {}; RUBUS_REGISTER_32(uint32_t val): all(val) {} };//RUBUS_REGISTER_32 } /* namespace MODBUSRTU */ #endif /* MODBUSRTU_RUBUSTYPES_H_ */