#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; /* Handshake message size definitions */ #define MDR_req_buf_len 2