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.
135 lines
2.4 KiB
C
135 lines
2.4 KiB
C
4 weeks ago
|
/*
|
||
|
* WeinbusDefines.h
|
||
|
*
|
||
|
* Author: Aleksey Gerasimenko
|
||
|
* gerasimenko.aleksey.n@gmail.com
|
||
|
*/
|
||
|
|
||
|
#include <math.h>
|
||
|
#include <stdint.h>
|
||
|
|
||
|
#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_ */
|