/* * WeinbusDefines.h * * Author: Aleksey Gerasimenko * gerasimenko.aleksey.n@gmail.com */ #include #include #ifndef WEINBUS_WEINBUSDEFINES_H_ #define WEINBUS_WEINBUSDEFINES_H_ typedef unsigned char uint8_t; typedef signed char int8_t; #ifndef WEINBUS_INPUT_REGISTERS_SIZE #define WEINBUS_INPUT_REGISTERS_SIZE 20 #endif #ifndef WEINBUS_OUTPUT_REGISTERS_SIZE #define WEINBUS_OUTPUT_REGISTERS_SIZE 20 #endif namespace WEINBUS { enum data_variant_type_t {DATA_UINT16, DATA_INT16, DATA_UINT32, DATA_INT32, DATA_FLOAT}; enum buffer_type_t {OUTPUTCOILS, INPUTCOILS, OUTPUTREGISTERS, INPUTREGISTERS}; enum weinbus_coil_t { COIL00, COIL01, COIL02, COIL03, COIL04, COIL05, COIL06, COIL07, COIL08, COIL09, COIL10, COIL11, COIL12, COIL13, COIL14, COIL15}; struct 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; };//REGISTER_16_BIT_FIELD struct REGISTER_16_BYTE_FIELD { uint16_t bt0 :8; uint16_t bt1 :8; };//REGISTER_16_BYTE_FIELD union REGISTER_16 { uint16_t all; REGISTER_16_BIT_FIELD bit; REGISTER_16_BYTE_FIELD byte; REGISTER_16(): all(0) {} REGISTER_16(uint16_t val): all(val) {} };//REGISTER_16 struct REGISTER_32_BYTE_FIELD { uint16_t bt0 :8; uint16_t bt1 :8; uint16_t bt2 :8; uint16_t bt3 :8; };//REGISTER_32_BYTE_FIELD union REGISTER_32 { uint32_t all; bool b; uint8_t u8; int8_t i8; uint16_t u16; int16_t i16; uint32_t u32; int32_t i32; float f; REGISTER_32_BYTE_FIELD byte; REGISTER_32(): all((uint32_t)0) {}; REGISTER_32(uint32_t val): all(val) {} };//REGISTER_32 }//namespace WEINBUS #endif /* WEINBUS_WEINBUSDEFINES_H_ */