blob: 396ae2d998d8713130ea8a9ac38d2cbcfd8cd421 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
#include "handshake.pb.h"
#define _MDR s2m_MDR_response
typedef struct _device_info {
uint8_t device_id;
uint8_t i2c_addr;
_MDR MDR;
uint32_t subscription_requests[4]; /* Subscriptions to this device */
uint32_t subscriptions[4]; /* Subscriptions by this device */
} device_info_t;
typedef struct _subscription_info {
uint8_t module_ids[128];
uint8_t entity_ids[128];
uint8_t module_class[3];
uint8_t i2c_address[128];
uint8_t mod_idx, entity_idx, class_idx, i2c_idx;
} subscription_info_t;
typedef enum hs_status {
IDLE = 0, // send mdr request. success: mdr_ack. fail: hs_fail
HS_MDR_ACK = 1, // get mdr ack. success: mdr_cts. fail: hs_fail
HS_MDR_CTS = 2, // send mdr cts. success: mdr_mdr. fail: hs_fail
HS_MDR_MDR = 3, // get mdr. success: registered. fail: hs_fail
HS_REGISTERED = 4, // send registered. success: exit. fail: hs_fail
HS_FAILED = 5
} hs_status_t;
typedef enum state {
OFFLINE = 0, /* Device not found on bus */
CONNECTED = 1, /* Device found on bus but handshake not completed */
REGISTERED = 2, /* Completed handshake; ready for action */
HS_FAILED = 3, /* Handshake failed */
NO_DATA = 4 /* ??? */
} state_t;
/* Handshake message size definitions */
#define MDR_req_buf_len 2
|