538 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			538 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /****************************************************************************
 | |
| 
 | |
| Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED.
 | |
| 
 | |
| This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT
 | |
| be copied by any method or incorporated into another program without
 | |
| the express written consent of Aerospace C.Power. This Information or any portion
 | |
| thereof remains the property of Aerospace C.Power. The Information contained herein
 | |
| is believed to be accurate and Aerospace C.Power assumes no responsibility or
 | |
| liability for its use in any way and conveys no license or title under
 | |
| any patent or copyright and makes no representation or warranty that this
 | |
| Information is free from patent or copyright infringement.
 | |
| 
 | |
| ****************************************************************************/
 | |
| #ifndef IOT_PROTO_GE_H
 | |
| #define IOT_PROTO_GE_H
 | |
| 
 | |
| #include "iot_flashinfo.h"
 | |
| #include "iot_proto_common.h"
 | |
| #include "iot_grapp.h"
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| extern "C" {
 | |
| #endif
 | |
| 
 | |
| #pragma pack(push)  // save the pack status
 | |
| #pragma pack(1)     // 1 byte align
 | |
| /* timer delay */
 | |
| typedef enum {
 | |
|     CCO_TX_TIME = 1,
 | |
|     STA_RX_TIME = 2,
 | |
|     STA_TX_TIME = 3,
 | |
|     CCO_RX_TIME = 4,
 | |
| } app_delay_timer_id_e;
 | |
| 
 | |
| /** subfn = PROTO_LOCAL_MAC_SET_CMD */
 | |
| typedef struct _ge_frame_local_mac_set_subfn1_t {
 | |
|     ge_extend_fn_hdr_t  hdr;
 | |
|     uint8_t         resv0;
 | |
|     uint8_t         resv1;
 | |
|     uint8_t         seq;
 | |
|     uint8_t         mac[IOT_MAC_ADDR_LEN];
 | |
|     ge_frm_tail_t tail;
 | |
| } ge_frame_local_mac_set_subfn1_t;
 | |
| 
 | |
| /* subfn = PROTO_JOIN_NW_SET_CMD */
 | |
| typedef struct _ge_frame_join_nw_set_subfn3_t {
 | |
|     ge_extend_fn_hdr_t hdr;
 | |
|     uint8_t            nid;
 | |
|     uint8_t            resv1;
 | |
|     uint8_t            seq;
 | |
|     ge_frm_tail_t      tail;
 | |
| } ge_frame_join_nw_set_subfn3_t;
 | |
| 
 | |
| /* subfn = PROTO_LEAVE_NW_SET_CMD */
 | |
| typedef struct _ge_frame_leave_nw_set_subfn4_t {
 | |
|     ge_extend_fn_hdr_t hdr;
 | |
|     uint8_t            nid;
 | |
|     uint8_t            resv1;
 | |
|     uint8_t            seq;
 | |
|     ge_frm_tail_t      tail;
 | |
| } ge_frame_leave_nw_set_subfn4_t;
 | |
| 
 | |
| /* subfn = PROTO_OP_WHITELIST_SET_CMD */
 | |
| typedef struct _ge_frame_op_wl_set_subfn5_t {
 | |
|     ge_extend_fn_hdr_t  hdr;
 | |
|     uint8_t action;
 | |
|     uint8_t resv0;
 | |
|     uint8_t seq;
 | |
|     uint16_t total_frame;
 | |
|     uint16_t cur_frame;
 | |
|     uint8_t mac[IOT_MAC_ADDR_LEN];
 | |
|     ge_frm_tail_t tail;
 | |
| } ge_frame_op_wl_set_subfn5_t;
 | |
| 
 | |
| /** subfn = PROTO_CONN_IND_RPT_CMD */
 | |
| typedef struct _ge_frame_conn_ind_rpt_set_subfn9_t {
 | |
|     ge_extend_fn_hdr_t  hdr;
 | |
|     uint8_t         nid;
 | |
|     uint8_t         resv0;
 | |
|     uint8_t         seq;
 | |
|     uint8_t         mac[IOT_MAC_ADDR_LEN];
 | |
|     uint8_t         rssi;
 | |
|     uint8_t         snr;
 | |
|     ge_frm_tail_t tail;
 | |
| } ge_frame_conn_ind_rpt_set_subfn9_t;
 | |
| 
 | |
| /* subfn = PROTO_DISCONN_IND_RPT_CMD */
 | |
| typedef struct _ge_frame_disc_ind_rpt_set_subfn10_t {
 | |
|     ge_extend_fn_hdr_t  hdr;
 | |
|     uint8_t         nid;
 | |
|     uint8_t         resv0;
 | |
|     uint8_t         seq;
 | |
|     uint8_t         mac[IOT_MAC_ADDR_LEN];
 | |
|     uint8_t         reason;
 | |
|     ge_frm_tail_t tail;
 | |
| } ge_frame_disc_ind_rpt_set_subfn10_t;
 | |
| 
 | |
| /* subfn = PROTO_REJECT_IND_RPT_CMD */
 | |
| typedef struct _ge_frame_reject_ind_rpt_set_subfn36_t {
 | |
|     ge_extend_fn_hdr_t  hdr;
 | |
|     uint8_t         resv0;
 | |
|     uint8_t         resv1;
 | |
|     uint8_t         seq;
 | |
|     uint8_t         mac[IOT_MAC_ADDR_LEN];
 | |
|     uint8_t         reason;
 | |
|     ge_frm_tail_t tail;
 | |
| } ge_frame_reject_ind_rpt_set_subfn36_t;
 | |
| 
 | |
| /* subfn = PROTO_CCO_START_GROUP_NET_CMD */
 | |
| typedef struct _ge_frame_start_group_set_subfn13_t {
 | |
|     ge_extend_fn_hdr_t  hdr;
 | |
|     uint8_t         nid;
 | |
|     uint8_t         resv0;
 | |
|     uint8_t         seq;
 | |
|     uint8_t         mac[IOT_MAC_ADDR_LEN];
 | |
|     ge_frm_tail_t tail;
 | |
| } ge_frame_start_group_set_subfn13_t;
 | |
| 
 | |
| /* subfn = PROTO_CCO_END_GROUP_NET_CMD */
 | |
| typedef struct _ge_frame_end_group_set_subfn14_t {
 | |
|     ge_extend_fn_hdr_t  hdr;
 | |
|     uint8_t         nid;
 | |
|     uint8_t         resv0;
 | |
|     uint8_t         seq;
 | |
|     uint8_t         mac[IOT_MAC_ADDR_LEN];
 | |
|     ge_frm_tail_t tail;
 | |
| } ge_frame_end_group_set_subfn14_t;
 | |
| 
 | |
| /* subfn = PROTO_CCO_NID_SET_CMD */
 | |
| typedef struct _ge_frame_cco_nid_set_subfn17_t {
 | |
|     ge_extend_fn_hdr_t  hdr;
 | |
|     uint8_t         nid;
 | |
|     uint8_t         resv0;
 | |
|     uint8_t         seq;
 | |
|     uint8_t         mac[IOT_MAC_ADDR_LEN];
 | |
|     ge_frm_tail_t tail;
 | |
| } ge_frame_cco_nid_set_subfn17_t;
 | |
| 
 | |
| /** subfn = PROTO_LOCAL_IP4_SET_CMD */
 | |
| typedef struct _ge_frame_local_ip4_set_subfn35_t {
 | |
|     ge_extend_fn_hdr_t  hdr;
 | |
|     uint8_t         resv0;
 | |
|     uint8_t         resv1;
 | |
|     uint8_t         seq;
 | |
|     uint8_t         ip4_addr[IOT_IP4_ADDR_LEN];
 | |
|     uint8_t         ip4_mask[IOT_IP4_ADDR_LEN];
 | |
|     ge_frm_tail_t   tail;
 | |
| } ge_frame_local_ip4_set_subfn35_t;
 | |
| 
 | |
| /* subfn = PROTO_STA_LEAVE_IND */
 | |
| typedef struct _ge_frame_sta_leave_ind_set_subfn154_t {
 | |
|     ge_extend_fn_hdr_t  hdr;
 | |
|     uint8_t         resv0;
 | |
|     uint8_t         resv1;
 | |
|     uint8_t         seq;
 | |
|     uint8_t         mac[IOT_MAC_ADDR_LEN];
 | |
|     ge_frm_tail_t tail;
 | |
| } ge_frame_sta_leave_ind_set_subfn154_t;
 | |
| 
 | |
| /* subfn = PROTO_GE_DATA_CMD, general data send subfn */
 | |
| typedef struct _ge_frame_data_send_set_subfn160_t {
 | |
|     ge_extend_fn_hdr_t  hdr;
 | |
|     /* This byte is used for TX.It is useless for RX. */
 | |
|     uint8_t             force_tx_connless : 1, /* send as connless */
 | |
|                         force_noaggr      : 1, /* force no aggr */
 | |
|                         recv_connless     : 1, /* received as connless */
 | |
|                         not_need_ack      : 1, /* flag if ack, 0:need ack */
 | |
|                                                /* 1:not need ack */
 | |
|                         retr_cnt          : 2, /* retransmission cnts */
 | |
|                         resv              : 2;
 | |
|     /* 0:host data 1:internal beacon data */
 | |
|     uint8_t             data_type         : 1,
 | |
|                         port_id           : 6, /* Port ID for cust used. */
 | |
|                         data_ext_flag     : 1; /* payload data extend flag, */
 | |
|                                                /* 0:not extend, 1: extend */
 | |
| 
 | |
|     uint8_t             dest_mac[IOT_MAC_ADDR_LEN];
 | |
|     uint8_t             data[0];
 | |
| } ge_frame_data_send_set_subfn160_t;
 | |
| 
 | |
| /* subfn = PROTO_GE_UART_PARAM_SET_CMD, set uart parameter */
 | |
| typedef struct _ge_frame_uart_param_set_subfn161_t {
 | |
|     ge_extend_fn_hdr_t  hdr;
 | |
|     uint8_t         resv[2];
 | |
|     uint8_t         seq;
 | |
|     uint32_t        baudrate;
 | |
|     uint8_t         parity;
 | |
|     uint8_t         data_bit;
 | |
|     uint8_t         stop_bit;
 | |
|     ge_frm_tail_t tail;
 | |
| } ge_frame_uart_param_set_subfn161_t;
 | |
| 
 | |
| #if IOT_GE_AES_ENABLE
 | |
| /* subfn = PROTO_GE_AES_CMD, general data send subfn */
 | |
| typedef struct _ge_frame_aes_set_subfn163_t {
 | |
|     ge_extend_fn_hdr_t  hdr;
 | |
|     /* aes contxt */
 | |
|     ge_aes_contxt_t     aes;
 | |
|     uint8_t             dest_mac[IOT_MAC_ADDR_LEN];
 | |
|     uint8_t             seq;
 | |
|     ge_frm_tail_t       tail;
 | |
| } ge_frame_aes_set_subfn163_t;
 | |
| #endif
 | |
| 
 | |
| /* subfn = PROTO_GE_GPIO_CONFIG_CMD, config gpio */
 | |
| typedef struct _ge_frame_gpio_config_subfn164_t {
 | |
|     ge_extend_fn_hdr_t  hdr;
 | |
|     uint8_t         resv[2];
 | |
|     uint8_t         seq;
 | |
|     uint8_t         dest_mac[IOT_MAC_ADDR_LEN];
 | |
|     uint8_t         src_mac[IOT_MAC_ADDR_LEN];
 | |
|     uint8_t         gpio_num;
 | |
|     uint8_t         dir_mode; /* 1:output  , 2:input */
 | |
|     uint8_t         pull_mode;/* 1:pullup  , 2:pulldown */
 | |
|     uint8_t         output_value; /* if config output, need set the value */
 | |
|     ge_frm_tail_t   tail;
 | |
| } ge_frame_gpio_config_subfn164_t;
 | |
| 
 | |
| 
 | |
| /* subfn = PROTO_GE_GPIO_SET_CMD, set gpio */
 | |
| typedef struct _ge_frame_gpio_set_subfn165_t {
 | |
|     ge_extend_fn_hdr_t  hdr;
 | |
|     uint8_t         resv[2];
 | |
|     uint8_t         seq;
 | |
|     uint8_t         dest_mac[IOT_MAC_ADDR_LEN];
 | |
|     uint8_t         src_mac[IOT_MAC_ADDR_LEN];
 | |
|     uint8_t         gpio_num;
 | |
|     uint8_t         value;
 | |
|     ge_frm_tail_t   tail;
 | |
| } ge_frame_gpio_set_subfn165_t;
 | |
| 
 | |
| typedef struct _ge_delay_time_test_t {
 | |
|     /* node level */
 | |
|     int8_t level;
 | |
|     /* sequency number */
 | |
|     uint32_t sn;
 | |
|     /* fill data length */
 | |
|     uint16_t datalen;
 | |
|     /* mcu transmit time (us) */
 | |
|     uint32_t mcu_tx_time;
 | |
|     /* cco transmit time (us) */
 | |
|     uint32_t cco_tx_time;
 | |
|     /* sta receive time (us) */
 | |
|     uint32_t sta_rx_time;
 | |
|     /* sta transmit time (us) */
 | |
|     uint32_t sta_tx_time;
 | |
|     /* cco receive time (us) */
 | |
|     uint32_t cco_rx_time;
 | |
| } ge_delay_tm_test_t;
 | |
| 
 | |
| /* subfn = PROTO_GE_TM_CMD, test delay time */
 | |
| typedef struct _ge_frame_delay_time_subfn166_t {
 | |
|     ge_extend_fn_hdr_t  hdr;
 | |
|     uint8_t             force_tx_connless : 1, /* send as connless */
 | |
|                         force_noaggr      : 1, /* force no aggr */
 | |
|                         recv_connless     : 1, /* received as connless */
 | |
|                         not_need_ack      : 1, /* flag if ack, 0:need ack */
 | |
|                                                /* 1:not need ack */
 | |
|                         retr_cnt          : 2, /* retransmission cnts */
 | |
|                         resv              : 2;
 | |
|     uint8_t             resv1;
 | |
|     uint8_t             seq;
 | |
|     uint8_t             dest_mac[IOT_MAC_ADDR_LEN];
 | |
|     ge_delay_tm_test_t  tm_test;
 | |
| } ge_frame_delay_time_subfn166_t;
 | |
| 
 | |
| /* subfn = PROTO_NET_STS_QUERY_CMD, MCU query net states */
 | |
| typedef struct _ge_frame_net_stat_query_subfn6_t {
 | |
|     ge_extend_fn_hdr_t  hdr;
 | |
|     uint8_t         resv0;
 | |
|     uint8_t         resv1;
 | |
|     uint8_t         seq;
 | |
|     uint8_t         mac[IOT_MAC_ADDR_LEN];
 | |
|     ge_frm_tail_t tail;
 | |
| } ge_frame_net_stat_query_subfn6_t;
 | |
| 
 | |
| /* subfn = PROTO_GE_UART_PARAM_QUERY_CMD */
 | |
| typedef struct _ge_frame_uart_param_query_subfn14_t {
 | |
|     ge_extend_fn_hdr_t  hdr;
 | |
|     uint8_t             resv[2];
 | |
|     uint8_t             seq;
 | |
|     ge_frm_tail_t       tail;
 | |
| } ge_frame_uart_param_query_subfn14_t;
 | |
| 
 | |
| /* subfn = PROTO_NODE_INFO_QUERY_CMD, MCU query node info */
 | |
| typedef struct _ge_frame_node_info_query_subfn23_t {
 | |
|     ge_extend_fn_hdr_t  hdr;
 | |
|     uint8_t             resv0;
 | |
|     uint8_t             type;
 | |
|     uint8_t             seq;
 | |
|     uint8_t             mac[IOT_MAC_ADDR_LEN];
 | |
|     ge_frm_tail_t       tail;
 | |
| } ge_frame_node_info_query_subfn23_t;
 | |
| 
 | |
| /* subfn = PROTO_NW_INFO_QUERY_CMD, MCU query network info */
 | |
| typedef struct _ge_frame_nw_info_query_subfn24_t {
 | |
|     ge_extend_fn_hdr_t  hdr;
 | |
|     uint8_t             resv0;
 | |
|     uint8_t             type;
 | |
|     uint8_t             seq;
 | |
|     ge_frm_tail_t       tail;
 | |
| } ge_frame_nw_info_query_subfn24_t;
 | |
| 
 | |
| /* subfn = PROTO_GE_EXT_WL_QUERY_CMD */
 | |
| typedef struct _ge_frame_ext_wl_query_subfn15_t {
 | |
|     ge_extend_fn_hdr_t  hdr;
 | |
|     uint8_t             resv[2];
 | |
|     uint8_t             seq;
 | |
|     uint16_t            index;
 | |
|     uint16_t            sta_cnt;
 | |
|     ge_frm_tail_t       tail;
 | |
| } ge_frame_ext_wl_query_subfn15_t;
 | |
| 
 | |
| /* subfn = PROTO_NID_QUERY_CMD */
 | |
| typedef struct _ge_frame_nid_query_subfn16_t {
 | |
|     ge_extend_fn_hdr_t  hdr;
 | |
|     uint8_t             resv[2];
 | |
|     uint8_t             seq;
 | |
|     ge_frm_tail_t       tail;
 | |
| } ge_frame_nid_query_subfn16_t;
 | |
| 
 | |
| #if IOT_GE_AES_ENABLE
 | |
| /* subfn = PROTO_AES_QUERY_CMD */
 | |
| typedef struct _ge_frame_aes_query_subfn26_t {
 | |
|     ge_extend_fn_hdr_t  hdr;
 | |
|     uint8_t             resv[2];
 | |
|     uint8_t             seq;
 | |
|     ge_frm_tail_t       tail;
 | |
| } ge_frame_aes_query_subfn26_t;
 | |
| #endif
 | |
| 
 | |
| /* subfn = PROTO_GE_GPIO_QUERY_CMD, query gpio */
 | |
| typedef struct _ge_frame_gpio_query_subfn27_t {
 | |
|     ge_extend_fn_hdr_t  hdr;
 | |
|     uint8_t             resv[2];
 | |
|     uint8_t             seq;
 | |
|     uint8_t             dest_mac[IOT_MAC_ADDR_LEN];
 | |
|     uint8_t             src_mac[IOT_MAC_ADDR_LEN];
 | |
|     uint8_t             gpio_num;
 | |
|     ge_frm_tail_t       tail;
 | |
| } ge_frame_gpio_query_subfn27_t;
 | |
| 
 | |
| /** subfn = PROTO_LOCAL_MAC_RESP_CMD */
 | |
| typedef struct _ge_frame_local_mac_resp_subfn1_t {
 | |
|     ge_extend_fn_hdr_t  hdr;
 | |
|     uint8_t         resv0;
 | |
|     uint8_t         resv1;
 | |
|     uint8_t         seq;
 | |
|     uint8_t         dir;
 | |
|     uint8_t         mac[IOT_MAC_ADDR_LEN];
 | |
|     uint8_t         nw_role;
 | |
|     ge_frm_tail_t tail;
 | |
| } ge_frame_local_mac_resp_subfn1_t;
 | |
| 
 | |
| /* subfn = PROTO_TOPO_RESP_CMD */
 | |
| typedef struct _ge_frame_topo_resp_subfn5_t {
 | |
|     ge_extend_fn_hdr_t  hdr;
 | |
|     uint8_t         resv0;
 | |
|     uint8_t         type;
 | |
|     uint8_t         seq;
 | |
|     uint16_t        total_cnt;
 | |
|     uint16_t        cur_cnt;
 | |
|     uint8_t         info[0];
 | |
| } ge_frame_topo_resp_subfn5_t;
 | |
| 
 | |
| /* subfn = PROTO_NET_STS_RESP_CMD, net states response to MCU */
 | |
| typedef struct _ge_frame_net_stat_resp_subfn6_t {
 | |
|     ge_extend_fn_hdr_t  hdr;
 | |
|     uint8_t         snr;
 | |
|     uint8_t         nf;
 | |
|     uint8_t         seq;
 | |
|     uint16_t        total_cnt;
 | |
|     uint16_t        cur_cnt;
 | |
|     uint8_t         mac[IOT_MAC_ADDR_LEN];
 | |
|     uint8_t         tsf;
 | |
|     uint8_t         rsf;
 | |
|     ge_frm_tail_t tail;
 | |
| } ge_frame_net_stat_resp_subfn6_t;
 | |
| 
 | |
| /* subfn = PROTO_WHITELIST_RESP_CMD */
 | |
| typedef struct _ge_frame_wl_resp_subfn7_t {
 | |
|     ge_extend_fn_hdr_t  hdr;
 | |
|     uint8_t         resv0;
 | |
|     uint8_t         cco_flag;
 | |
|     uint8_t         seq;
 | |
|     uint16_t        total_cnt;
 | |
|     uint16_t        cur_cnt;
 | |
|     uint8_t         mac[IOT_MAC_ADDR_LEN];
 | |
|     ge_frm_tail_t tail;
 | |
| } ge_frame_wl_resp_subfn7_t;
 | |
| 
 | |
| /* subfn = PROTO_AVAIL_NW_RESP_CMD */
 | |
| typedef struct _ge_frame_avail_nw_resp_subfn9_t {
 | |
|     ge_extend_fn_hdr_t hdr;
 | |
|     uint8_t         resv0;
 | |
|     uint8_t         resv1;
 | |
|     uint8_t         seq;
 | |
|     uint8_t         total_cnt;
 | |
|     uint8_t         cur_cnt;
 | |
|     uint8_t         nid;
 | |
|     uint8_t         snr;
 | |
|     uint8_t         mac[IOT_MAC_ADDR_LEN];
 | |
|     ge_frm_tail_t   tail;
 | |
| } ge_frame_avail_nw_resp_subfn9_t;
 | |
| 
 | |
| /* subfn = PROTO_GE_UART_PARAM_RESP_CMD */
 | |
| typedef struct _ge_frame_uart_param_resp_subfn14_t {
 | |
|     ge_extend_fn_hdr_t  hdr;
 | |
|     uint8_t         resv[2];
 | |
|     uint8_t         seq;
 | |
|     uint32_t        baudrate;
 | |
|     uint8_t         parity;
 | |
|     uint8_t         data_bit;
 | |
|     uint8_t         stop_bit;
 | |
|     ge_frm_tail_t   tail;
 | |
| } ge_frame_uart_param_resp_subfn14_t;
 | |
| 
 | |
| /* subfn = PROTO_GE_EXT_WL_RESP_CMD */
 | |
| typedef struct _ge_frame_ext_wl_resp_subfn15_t {
 | |
|     ge_extend_fn_hdr_t  hdr;
 | |
|     uint8_t             resv[2];
 | |
|     uint8_t             seq;
 | |
|     uint16_t            total;
 | |
|     uint16_t            rpt_cnt;
 | |
|     uint8_t             mac[0][IOT_MAC_ADDR_LEN];
 | |
| } ge_frame_ext_wl_resp_subfn15_t;
 | |
| 
 | |
| /* subfn = PROTO_NID_RESP_CMD */
 | |
| typedef struct _ge_frame_nid_resp_subfn16_t {
 | |
|     ge_extend_fn_hdr_t  hdr;
 | |
|     uint8_t             resv[2];
 | |
|     uint8_t             seq;
 | |
|     uint8_t             nid;
 | |
|     ge_frm_tail_t       tail;
 | |
| } ge_frame_nid_resp_subfn16_t;
 | |
| 
 | |
| /* subfn = PROTO_MODULE_INFO_RESP_CMD */
 | |
| typedef struct _ge_frame_module_info_resp_subfn18_t {
 | |
|     ge_extend_fn_hdr_t hdr;
 | |
|     uint8_t            resv0;
 | |
|     uint8_t            resv1;
 | |
|     uint8_t            seq;
 | |
|     /* module role, see IOT_PLC_DEV_ROLE_XXX, 1-STA, 2-PCO, 4-CCO */
 | |
|     uint8_t            role;
 | |
|     uint8_t            mac[IOT_MAC_ADDR_LEN];
 | |
|     /* module state CCO is ready or STA is joined network */
 | |
|     uint8_t            state;
 | |
|     /* network id */
 | |
|     uint8_t            nid;
 | |
|     uint8_t            cco_mac[IOT_MAC_ADDR_LEN];
 | |
|     /* whitelist state, 1-enable whitelist , 0-disable whitelist */
 | |
|     uint8_t            wl_state;
 | |
|     /* software version */
 | |
|     uint32_t           swver;
 | |
|     ge_frm_tail_t      tail;
 | |
| } ge_frame_module_info_resp_subfn18_t;
 | |
| 
 | |
| /* subfn = PROTO_NODE_INFO_RESP_CMD, node info response to MCU */
 | |
| typedef struct _ge_frame_node_info_resp_subfn23_t {
 | |
|     ge_extend_fn_hdr_t  hdr;
 | |
|     uint8_t         resv;
 | |
|     uint8_t         type;
 | |
|     uint8_t         seq;
 | |
|     uint16_t        total_cnt;
 | |
|     uint8_t         cur_cnt;
 | |
|     uint8_t         index;
 | |
|     uint8_t         info[0];
 | |
| } ge_frame_node_info_resp_subfn23_t;
 | |
| 
 | |
| /* subfn = PROTO_NW_INFO_RESP_CMD, network info response to MCU */
 | |
| typedef struct _ge_frame_nw_info_resp_subfn24_t {
 | |
|     ge_extend_fn_hdr_t  hdr;
 | |
|     uint8_t         resv0;
 | |
|     uint8_t         resv1;
 | |
|     uint8_t         seq;
 | |
|     uint8_t         max_level;
 | |
|     /* info of each level, see iot_plc_nw_level_info_t */
 | |
|     uint8_t         level_info[0];
 | |
| } ge_frame_nw_info_resp_subfn24_t;
 | |
| 
 | |
| /** subfn = PROTO_LOCAL_IP4_RESP_CMD */
 | |
| typedef struct _ge_frame_local_ip4_resp_subfn25_t {
 | |
|     ge_extend_fn_hdr_t  hdr;
 | |
|     uint8_t         resv0;
 | |
|     uint8_t         resv1;
 | |
|     uint8_t         seq;
 | |
|     uint8_t         ip4_addr[IOT_IP4_ADDR_LEN];
 | |
|     uint8_t         ip4_mask[IOT_IP4_ADDR_LEN];
 | |
|     ge_frm_tail_t   tail;
 | |
| } ge_frame_local_ip4_resp_subfn25_t;
 | |
| 
 | |
| #if IOT_GE_AES_ENABLE
 | |
| /** subfn = PROTO_AES_RESP_CMD */
 | |
| typedef struct _ge_frame_aes_resp_subfn26_t {
 | |
|     ge_extend_fn_hdr_t  hdr;
 | |
|     ge_aes_contxt_t     aes;
 | |
|     uint8_t             seq;
 | |
|     ge_frm_tail_t       tail;
 | |
| } ge_frame_aes_resp_subfn26_t;
 | |
| #endif
 | |
| 
 | |
| /* subfn = PROTO_GE_GPIO_RESP_CMD, set gpio */
 | |
| typedef struct _ge_frame_query_gpio_resp_subfn27_t {
 | |
|     ge_extend_fn_hdr_t  hdr;
 | |
|     uint8_t         resv0;
 | |
|     uint8_t         resv1;
 | |
|     uint8_t         seq;
 | |
|     uint8_t         dest_mac[IOT_MAC_ADDR_LEN];
 | |
|     uint8_t         src_mac[IOT_MAC_ADDR_LEN];
 | |
|     uint8_t         gpio_num;
 | |
|     uint8_t         gpio_dir;
 | |
|     uint8_t         pull_mode;
 | |
|     uint8_t         value;
 | |
|     ge_frm_tail_t   tail;
 | |
| } ge_frame_query_gpio_resp_subfn27_t;
 | |
| 
 | |
| /* subfn = PROTO_SW_BT_PART_IND_CMD */
 | |
| typedef struct _ge_frame_sw_bt_part_ind_subfn95_t {
 | |
|     ge_extend_fn_hdr_t  hdr;
 | |
|     uint8_t         resv0;
 | |
|     uint8_t         resv1;
 | |
|     uint8_t         seq;
 | |
|     uint8_t         mac[IOT_MAC_ADDR_LEN];
 | |
|     uint8_t         reason;
 | |
|     ge_frm_tail_t tail;
 | |
| } ge_frame_sw_bt_part_ind_subfn95_t;
 | |
| 
 | |
| #pragma pack(pop)
 | |
| void iot_proto_delay_time_send(iot_pkt_t *data_pkt, uint8_t *src_mac, uint8_t *dst_mac);
 | |
| 
 | |
| void iot_delay_timer_get(uint32_t *data, uint8_t time_type, uint32_t set_time);
 | |
| #ifdef __cplusplus
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #endif /* IOT_PROTO_GE_H */
 |