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

/*
* 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_ */