blob: ef4e65b4b82ce7802921363085ae4514fae24edd (
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
42
|
#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 {
NO_HS = 0, /* Initial state: handshake not attempted yet */
OFFLINE = 1, /* Device not found on bus */
CONNECTED = 2, /* Device found on bus but handshake not completed */
REGISTERED = 3, /* Completed handshake; ready for action */
FAILED = 4, /* Handshake failed */
NO_DATA = 5 /* ??? */
} state_t;
/* Handshake message size definitions */
#define MDR_req_buf_len 2
|