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