Files
kunlun/app/grapp/iot_proto_ge.h
2024-09-28 14:24:04 +08:00

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