You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
198 lines
4.4 KiB
C++
198 lines
4.4 KiB
C++
/*
|
|
* RUBUSTypes.h
|
|
*
|
|
* Author: Aleksey Gerasimenko
|
|
* gerasimenko.aleksey.n@gmail.com
|
|
*/
|
|
|
|
#ifndef MODBUSRTU_RUBUSTYPES_H_
|
|
#define MODBUSRTU_RUBUSTYPES_H_
|
|
|
|
#include <math.h>
|
|
#include <stdint.h>
|
|
|
|
#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_ */
|