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 */
 |