libneoradio2
radio2_frames.h
Go to the documentation of this file.
1 #pragma once
2 #include <stdint.h>
3 
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7 
8 #ifdef _MSC_VER
9 #pragma pack(push,1)
10 #define PACKED
11 #else
12 #define PACKED __attribute__((packed))
13 #endif
14 
15  typedef enum _neoRADIO2_deviceTypes {
25 
27  uint32_t serial_number;
28  uint16_t manufacture_year;
30  uint8_t manufacture_day;
31  uint8_t device_type;
32  uint8_t device_number;
33  uint8_t device_bank;
38  uint8_t current_state;
40 
41  typedef struct _neoRADIO2frame_header {
42  uint8_t start_of_frame; //0xAA for host packets or 0x55 for device packets
43  uint8_t command_status;
44  uint8_t device;
45  uint8_t bank; //bank is bitmasked so 0b0001000 is the fourth bank
46  uint8_t len;
48 
49  typedef struct _neoRADIO2frame {
51  uint8_t data[64];
52  uint8_t crc;
54 
55  typedef struct _neoRADIO2frame_identify {
56  uint8_t device_type;
57  uint8_t device_number;
58  uint8_t bank_number;
60 
61  typedef enum _neoRADIO2frame_commands {
72 
80 
86 
100 
101  typedef struct _neoRADIO2_deviceSettings {
102  uint32_t poll_rate_ms;
107 
109  uint32_t u32;
110  struct {
111  uint16_t initOutputValue;
112  uint8_t initEnabled;
113  uint8_t enabled;
114  } data;
116 
117  typedef enum _neoRADIO2states {
120  } neoRADIO2states;
121 
122  // Used with NEORADIO2_COMMAND_READ_CAL/NEORADIO2_COMMAND_WRITE_CAL/NEORADIO2_COMMAND_WRITE_CALPOINTS
123  typedef struct _neoRADIO2frame_calHeader {
124  // read sets this, write needs this
125  uint8_t num_of_pts;
126  // read/write needs this. see cr_is_bitmask
127  uint8_t channel;
128  // read/write needs this. see cr_is_bitmask
129  uint8_t range;
130  // read sets this, write ignores this.
131  uint8_t cal_is_valid;
133 
134  typedef enum _neoRADIO2CalType {
135  NEORADIO2CALTYPE_ENABLED = 0, // Reads raw sensor value with using calibration values. This is the same as reading without a caltype
136  NEORADIO2CALTYPE_NOCAL = 1, // Reads sensor value without calibration applied
137  NEORADIO2CALTYPE_NOCAL_ENHANCED = 2, // Same as ENABLE but with slower sample rate
139 
140  typedef enum _neoRADIO2_CANMsgType {
146 
147  typedef struct _neoRADIO2settings_CAN
148  {
149  uint32_t Arbid; //Arb Id
150  uint8_t Location; //byte where the message starts
151  uint8_t msgType; //neoRADIO2_CANMsgType
153 
155  uint8_t length;
156  uint8_t charSize;
157  union {
158  uint32_t u32[16];
159  uint16_t u16[16 * 2];
160  uint8_t u8[16 * 4];
161  } chars;
163 
164  typedef struct _neoRADIO2_settings {
171 
172 #define NEORADIO2_SETTINGS_PARTSIZE 32
173  typedef struct _neoRADIO2_SettingsPart {
174  uint8_t part;
177 
178 #define NEORADIO2_DESTINATION_BANK1 0x01
179 #define NEORADIO2_DESTINATION_BANK2 0x02
180 #define NEORADIO2_DESTINATION_BANK3 0x04
181 #define NEORADIO2_DESTINATION_BANK4 0x08
182 #define NEORADIO2_DESTINATION_BANK5 0x10
183 #define NEORADIO2_DESTINATION_BANK6 0x20
184 #define NEORADIO2_DESTINATION_BANK7 0x40
185 #define NEORADIO2_DESTINATION_BANK8 0x80
186 
187  typedef union _bytesToFloat {
188  float fp;
189  uint8_t b[sizeof(float)];
190  } bytesToFloat;
191 
192 #ifdef _MSC_VER
193 #pragma pack(pop)
194 #undef PACKED
195 #else
196 #undef PACKED
197 #endif
198 
199 
200 #ifdef __cplusplus
201 }
202 #endif
neoRADIO2Settings_ChannelName name3
Definition: radio2_frames.h:168
Definition: radio2_frames.h:22
Definition: radio2_frames.h:79
Definition: radio2_frames.h:21
Definition: radio2_frames.h:136
uint8_t b[sizeof(float)]
Definition: radio2_frames.h:189
Definition: radio2_frames.h:91
neoRADIO2Settings_ChannelName name1
Definition: radio2_frames.h:166
struct _neoRADIO2_SettingsPart neoRADIO2_SettingsPart
uint8_t device_bank
Definition: radio2_frames.h:33
Definition: radio2_frames.h:173
uint16_t u16[16 *2]
Definition: radio2_frames.h:159
Definition: radio2_frames.h:77
Definition: radio2_frames.h:83
Definition: radio2_frames.h:64
Definition: radio2_frames.h:123
Definition: radio2_frames.h:67
Definition: radio2_frames.h:23
Definition: radio2_frames.h:97
enum _neoRADIO2CalType neoRADIO2CalType
neoRADIO2_deviceSettings config
Definition: radio2_frames.h:165
uint8_t bank_number
Definition: radio2_frames.h:58
Definition: radio2_frames.h:92
uint8_t device_type
Definition: radio2_frames.h:31
enum _neoRADIO2frame_commands neoRADIO2frame_commands
uint8_t num_of_pts
Definition: radio2_frames.h:125
Definition: radio2_frames.h:164
struct _neoRADIO2settings_CAN neoRADIO2settings_CAN
Definition: radio2_frames.h:17
uint32_t u32[16]
Definition: radio2_frames.h:158
uint8_t device
Definition: radio2_frames.h:44
Definition: radio2_frames.h:144
Definition: radio2_frames.h:76
struct _neoRADIO2AOUT_channelConfig::@0 data
Definition: radio2_frames.h:26
struct _neoRADIO2frame_header neoRADIO2frame_header
Definition: radio2_frames.h:18
Definition: radio2_frames.h:78
uint8_t data[NEORADIO2_SETTINGS_PARTSIZE]
Definition: radio2_frames.h:175
float fp
Definition: radio2_frames.h:188
Definition: radio2_frames.h:65
uint8_t len
Definition: radio2_frames.h:46
Definition: radio2_frames.h:68
Definition: radio2_frames.h:82
uint16_t manufacture_year
Definition: radio2_frames.h:28
union _bytesToFloat bytesToFloat
Definition: radio2_frames.h:95
Definition: radio2_frames.h:71
uint8_t initEnabled
Definition: radio2_frames.h:112
uint8_t channel
Definition: radio2_frames.h:127
uint8_t hardware_revMinor
Definition: radio2_frames.h:36
_neoRADIO2CalType
Definition: radio2_frames.h:134
Definition: radio2_frames.h:63
Definition: radio2_frames.h:98
struct _neoRADIO2frame_identifyResponse neoRADIO2frame_identifyResponse
uint8_t part
Definition: radio2_frames.h:174
enum _neoRADIO2_CANMsgType neoRADIO2_CANMsgType
uint32_t channel_1_config
Definition: radio2_frames.h:103
uint8_t length
Definition: radio2_frames.h:155
Definition: radio2_frames.h:141
Definition: radio2_frames.h:84
uint8_t start_of_frame
Definition: radio2_frames.h:42
uint32_t channel_3_config
Definition: radio2_frames.h:105
uint32_t serial_number
Definition: radio2_frames.h:27
Definition: radio2_frames.h:62
uint8_t device_number
Definition: radio2_frames.h:32
Definition: radio2_frames.h:16
uint8_t enabled
Definition: radio2_frames.h:113
uint8_t manufacture_month
Definition: radio2_frames.h:29
Definition: radio2_frames.h:70
neoRADIO2Settings_ChannelName name2
Definition: radio2_frames.h:167
uint8_t firmwareVersion_minor
Definition: radio2_frames.h:35
uint8_t hardware_revMajor
Definition: radio2_frames.h:37
uint8_t u8[16 *4]
Definition: radio2_frames.h:160
Definition: radio2_frames.h:135
union _neoRADIO2AOUT_channelConfig neoRADIO2AOUT_channelConfig
struct _neoRADIO2_settings neoRADIO2_settings
struct _neoRADIO2_deviceSettings neoRADIO2_deviceSettings
Definition: radio2_frames.h:147
enum _neoRADIO2frame_deviceStatus neoRADIO2frame_deviceStatus
Definition: radio2_frames.h:96
Definition: radio2_frames.h:88
uint8_t current_state
Definition: radio2_frames.h:38
enum _neoRADIO2_deviceTypes neoRADIO2_deviceTypes
Definition: radio2_frames.h:81
uint8_t msgType
Definition: radio2_frames.h:151
uint8_t range
Definition: radio2_frames.h:129
Definition: radio2_frames.h:137
#define PACKED
Definition: radio2_frames.h:12
_neoRADIO2_CANMsgType
Definition: radio2_frames.h:140
struct _neoRADIO2frame_calHeader neoRADIO2frame_calHeader
Definition: radio2_frames.h:55
_neoRADIO2_deviceTypes
Definition: radio2_frames.h:15
neoRADIO2frame_header header
Definition: radio2_frames.h:50
uint32_t Arbid
Definition: radio2_frames.h:149
uint8_t device_number
Definition: radio2_frames.h:57
Definition: radio2_frames.h:101
Definition: radio2_frames.h:143
uint8_t cal_is_valid
Definition: radio2_frames.h:131
Definition: radio2_frames.h:20
Definition: radio2_frames.h:90
Definition: radio2_frames.h:69
Definition: radio2_frames.h:66
Definition: radio2_frames.h:187
_neoRADIO2states
Definition: radio2_frames.h:117
neoRADIO2settings_CAN can
Definition: radio2_frames.h:169
Definition: radio2_frames.h:154
enum _neoRADIO2states neoRADIO2states
uint8_t charSize
Definition: radio2_frames.h:156
uint8_t data[64]
Definition: radio2_frames.h:51
uint8_t bank
Definition: radio2_frames.h:45
_neoRADIO2frame_commands
Definition: radio2_frames.h:61
Definition: radio2_frames.h:19
#define NEORADIO2_SETTINGS_PARTSIZE
Definition: radio2_frames.h:172
struct _neoRADIO2frame neoRADIO2frame
uint8_t firmwareVersion_major
Definition: radio2_frames.h:34
Definition: radio2_frames.h:89
uint8_t manufacture_day
Definition: radio2_frames.h:30
Definition: radio2_frames.h:93
uint8_t Location
Definition: radio2_frames.h:150
Definition: radio2_frames.h:118
struct _neoRADIO2settings_ChannelName neoRADIO2Settings_ChannelName
uint32_t u32
Definition: radio2_frames.h:109
Definition: radio2_frames.h:74
Definition: radio2_frames.h:73
Definition: radio2_frames.h:142
Definition: radio2_frames.h:41
union _neoRADIO2settings_ChannelName::@1 chars
Definition: radio2_frames.h:119
Definition: radio2_frames.h:108
uint8_t device_type
Definition: radio2_frames.h:56
Definition: radio2_frames.h:49
Definition: radio2_frames.h:94
uint32_t channel_2_config
Definition: radio2_frames.h:104
_neoRADIO2frame_deviceStatus
Definition: radio2_frames.h:87
uint16_t initOutputValue
Definition: radio2_frames.h:111
uint8_t command_status
Definition: radio2_frames.h:43
struct _neoRADIO2frame_identify neoRADIO2frame_identify
Definition: radio2_frames.h:75
uint32_t poll_rate_ms
Definition: radio2_frames.h:102
uint8_t crc
Definition: radio2_frames.h:52