355 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			355 lines
		
	
	
		
			12 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 PROTO_3762_FJ_H
 | |
| #define PROTO_3762_FJ_H
 | |
| 
 | |
| #include "proto_3762.h"
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| extern "C" {
 | |
| #endif
 | |
| 
 | |
| /* pack for the structures in the whole file */
 | |
| #pragma pack(push)  /* save the pack status */
 | |
| #pragma pack(1)     /* 1 byte align */
 | |
| 
 | |
| /* app function number definition */
 | |
| #define PROTO_3762_FJ_AFN_50                            (0x50)
 | |
| #define PROTO_3762_FJ_AFN_51                            (0x51)
 | |
| #define PROTO_3762_FJ_AFN_52                            (0x52)
 | |
| #define PROTO_3762_FJ_AFN_53                            (0x53)
 | |
| #define PROTO_3762_FJ_AFN_55                            (0x55)
 | |
| #define PROTO_3762_FJ_AFN_56                            (0x56)
 | |
| 
 | |
| /* communication object type */
 | |
| #define PROTO_3762_FJ_OBJ_RSVD                          (0)
 | |
| #define PROTO_3762_FJ_OBJ_CCO                           (2)
 | |
| #define PROTO_3762_FJ_OBJ_METER                         (3)
 | |
| #define PROTO_3762_FJ_OBJ_STA                           (5)
 | |
| #define PROTO_3762_FJ_OBJ_COLLECTOR                     (7)
 | |
| 
 | |
| /* proto mode */
 | |
| #define PROTO_3762_FJ_PRO_MODE_GW                       (1)
 | |
| #define PROTO_3762_FJ_PRO_MODE_FJ                       (2)
 | |
| 
 | |
| /* communication delay time, unit 10ms */
 | |
| #define PROTO_3762_FJ_COMM_DELAY                        (100)
 | |
| 
 | |
| /* uart baud rate type */
 | |
| #define PROTO_3762_FJ_BAUD_300                          (0)
 | |
| #define PROTO_3762_FJ_BAUD_600                          (1)
 | |
| #define PROTO_3762_FJ_BAUD_1200                         (2)
 | |
| #define PROTO_3762_FJ_BAUD_2400                         (3)
 | |
| #define PROTO_3762_FJ_BAUD_4800                         (4)
 | |
| #define PROTO_3762_FJ_BAUD_7200                         (5)
 | |
| #define PROTO_3762_FJ_BAUD_9600                         (6)
 | |
| #define PROTO_3762_FJ_BAUD_19200                        (7)
 | |
| #define PROTO_3762_FJ_BAUD_38400                        (8)
 | |
| #define PROTO_3762_FJ_BAUD_57600                        (9)
 | |
| #define PROTO_3762_FJ_BAUD_115200                       (10)
 | |
| 
 | |
| /* uart baud rate recover time, unit is 1min */
 | |
| #define PROTO_3762_FJ_BAUD_REC_TIME_MIN                 (16)
 | |
| #define PROTO_3762_FJ_BAUD_REC_TIME_MAX                 (1400)
 | |
| 
 | |
| /* uart baud rate auto recover max reset cnt */
 | |
| #define PROTO_3762_FJ_REC_MAX_RESET_CNT                 (5)
 | |
| 
 | |
| /* bcast channel delay time, unit is 10ms */
 | |
| #define PROTO_3762_FJ_BCAST_CHANNEL_DELAY_TIME          (100)
 | |
| 
 | |
| typedef struct _afn52_fn01_data_fwd_dl {
 | |
|     /* communication object type, see PROTO_3762_FJ_OBJ_XXX */
 | |
|     uint8_t         obj_type;
 | |
|     /* communication object address, little-endian */
 | |
|     uint8_t         mac_addr[IOT_MAC_ADDR_LEN];
 | |
|     /* forward communication control, reserved */
 | |
|     uint8_t         ctrl;
 | |
|     /* receive data timeout, unit see timeout_unit */
 | |
|     uint8_t         recv_data_timeout :7,
 | |
|     /* unit for receive data timeout, 0 - 10ms, 1 - 1s */
 | |
|                     timeout_unit      :1;
 | |
|     /* receive byte timeout, unit 10ms */
 | |
|     uint8_t         recv_byte_timeout;
 | |
|     /* meter reading data len */
 | |
|     uint16_t        data_len;
 | |
|     /* meter reading data */
 | |
|     uint8_t         data[0];
 | |
| } afn52_fn01_data_fwd_dl_t;
 | |
| 
 | |
| typedef struct _afn52_fn01_data_fwd_ul {
 | |
|     /* communication object type, see PROTO_3762_FJ_OBJ_XXX */
 | |
|     uint8_t         obj_type;
 | |
|     /* communication object address, little-endian */
 | |
|     uint8_t         mac_addr[IOT_MAC_ADDR_LEN];
 | |
|     /* meter reading data len */
 | |
|     uint16_t        data_len;
 | |
|     /* meter reading data */
 | |
|     uint8_t         data[0];
 | |
| } afn52_fn01_data_fwd_ul_t;
 | |
| 
 | |
| typedef struct _communication_object {
 | |
|     /* communication object type, see PROTO_3762_FJ_OBJ_XXX */
 | |
|     uint8_t         type;
 | |
|     /* communication object address, little-endian */
 | |
|     uint8_t         mac_addr[IOT_MAC_ADDR_LEN];
 | |
| } communication_object_t;
 | |
| 
 | |
| typedef struct _afn53_fn01_predict_mr_param_qr {
 | |
|     /* count of supported meter reading */
 | |
|     uint16_t        max_cnt;
 | |
|     /* count of per meter reading */
 | |
|     uint8_t         mr_cnt;
 | |
| } afn53_fn01_predict_mr_param_qr_t;
 | |
| 
 | |
| typedef struct _afn53_fn02_cco_mac {
 | |
|     /* major node mac address, little-endian */
 | |
|     uint8_t         cco_mac[IOT_MAC_ADDR_LEN];
 | |
| } afn53_fn02_cco_mac_t;
 | |
| 
 | |
| typedef struct _afn53_fn04_hw_info_req {
 | |
|     /* communication object info */
 | |
|     communication_object_t  comm_obj;
 | |
| } afn53_fn04_hw_info_req_t;
 | |
| 
 | |
| typedef struct _afn53_fn04_hw_info_rsp {
 | |
|     /* communication object info */
 | |
|     communication_object_t  comm_obj;
 | |
|     /* module info */
 | |
|     mod_hw_info_t           hw_info;
 | |
| } afn53_fn04_hw_info_rsp_t;
 | |
| 
 | |
| typedef struct _afn53_fn05_phase_req {
 | |
|     /* communication object info */
 | |
|     communication_object_t  comm_obj;
 | |
| } afn53_fn05_phase_req_t;
 | |
| 
 | |
| typedef struct _afn53_fn05_phase_rsp {
 | |
|     /* communication object info */
 | |
|     communication_object_t  comm_obj;
 | |
|     /* physical phase A */
 | |
|     uint16_t                phy_phase;
 | |
| } afn53_fn05_phase_rsp_t;
 | |
| 
 | |
| typedef struct _afn53_fn06_uart_conf {
 | |
|     /* uart config baud rate type */
 | |
|     uint8_t         baud;
 | |
|     /* uart config max baud rate */
 | |
|     uint8_t         max_baud;
 | |
|     /* auto recover default baud rate time, unit is 1min */
 | |
|     uint16_t        rec_time;
 | |
| } afn53_fn06_uart_conf_t;
 | |
| 
 | |
| typedef struct _predict_node_info {
 | |
|     /* predict node index */
 | |
|     uint16_t        idx;
 | |
|     /* communication object type, see PROTO_3762_FJ_OBJ_XXX */
 | |
|     uint8_t         obj_type;
 | |
|     /* node mac addr, little-endian */
 | |
|     uint8_t         mac[PROTO_3762_MAC_ADDR_LEN];
 | |
| } predict_node_info_t;
 | |
| 
 | |
| /* predict meter reading node down link data */
 | |
| typedef struct _afn55_fn09_predict_mr_node_req {
 | |
|     /* total node count */
 | |
|     uint16_t        total_cnt;
 | |
|     /* fix the communication delay flag */
 | |
|     uint8_t         delay_fix_flag;
 | |
|     /* predict node infomation */
 | |
|     predict_node_info_t node[0];
 | |
| } afn55_fn09_predict_mr_node_req_t;
 | |
| 
 | |
| typedef struct _afn53_fn10_query_proto_mode {
 | |
|     /* proto type, see PROTO_3762_FJ_PRO_MODE_XXX */
 | |
|     uint8_t         proto_mode  :2,
 | |
|     /* reserved */
 | |
|                     rsvd        :6;
 | |
| } afn53_fn10_query_proto_mode_t;
 | |
| 
 | |
| typedef struct _afn55_fn01_set_master_address_req {
 | |
|     uint8_t         mac[PROTO_3762_MAC_ADDR_LEN];
 | |
| } afn55_fn01_set_master_address_req_t;
 | |
| 
 | |
| typedef struct _afn55_fn03_bcast_cmd {
 | |
|     /* communication object type, see PROTO_3762_FJ_OBJ_XXX */
 | |
|     uint8_t         obj_type;
 | |
|     /* bcast time, unit is 1min */
 | |
|     uint8_t         bcast_time;
 | |
|     /* bcast data length */
 | |
|     uint8_t         len;
 | |
|     /* bcast data */
 | |
|     uint8_t         data[0];
 | |
| } afn55_fn03_bcast_cmd_t;
 | |
| 
 | |
| typedef struct _afn55_fn04_bcast_cmd {
 | |
|     /* communication object type, see PROTO_3762_FJ_OBJ_XXX */
 | |
|     uint8_t         obj_type;
 | |
|     /* bcast time, unit is 1min */
 | |
|     uint8_t         bcast_time;
 | |
| } afn55_fn04_bcast_cmd_t;
 | |
| 
 | |
| typedef struct _evt_rpt_ctrl {
 | |
|     /* communication object info */
 | |
|     communication_object_t  comm_obj;
 | |
|     /* event report state, 0 - disable, 1 - enable */
 | |
|     uint8_t                 enable;
 | |
| } evt_rpt_ctrl_t;
 | |
| 
 | |
| typedef struct _afn55_fn02_node_evt_rpt_ctrl {
 | |
|     /* set event report count */
 | |
|     uint8_t         total_cnt;
 | |
|     /* event report control info */
 | |
|     evt_rpt_ctrl_t  evt_ctrl[0];
 | |
| } afn55_fn02_node_evt_rpt_ctrl_t;
 | |
| 
 | |
| typedef struct _afn55_fn06_start_node_reg {
 | |
|     /* node registration duration, unit is 1min */
 | |
|     uint16_t        duration;
 | |
| } afn55_fn06_start_node_reg_t;
 | |
| 
 | |
| typedef struct _afn55_fn10_set_proto_mode {
 | |
|     /* proto type, see PROTO_3762_FJ_PRO_MODE_XXX */
 | |
|     uint8_t         proto_mode  :2,
 | |
|     /* reserved */
 | |
|                     rsvd        :6;
 | |
| } afn55_fn10_set_proto_mode_t;
 | |
| 
 | |
| typedef struct _afn55_fn11_set_baud_rate {
 | |
|     /* uart config baud rate type, see PROTO_3762_FJ_BAUD_XXX */
 | |
|     uint8_t         baud;
 | |
| } afn55_fn11_set_baud_rate_t;
 | |
| 
 | |
| typedef struct _afn55_fn12_set_baud_rec_time {
 | |
|     /* auto recover baud rate time, unit is 1min */
 | |
|     uint16_t        rec_time;
 | |
| } afn55_fn12_set_baud_rec_time_t;
 | |
| 
 | |
| typedef struct _afn55_fn13_set_max_baud_rate {
 | |
|     /* set uart config max baud rate, see PROTO_3762_FJ_BAUD_XXX */
 | |
|     uint8_t         max_baud;
 | |
| } afn55_fn13_set_max_baud_rate_t;
 | |
| 
 | |
| typedef struct _afn56_fn01_sec_node_info {
 | |
|     /* node report count */
 | |
|     uint8_t         sec_node_count;
 | |
|     /* node report address */
 | |
|     uint8_t         mac_addr[0][IOT_MAC_ADDR_LEN];
 | |
| } afn56_fn01_sec_node_info_t;
 | |
| 
 | |
| typedef struct _afn56_fn02_node_evt_rpt {
 | |
|     /* communication object type, see PROTO_3762_FJ_OBJ_XXX */
 | |
|     uint8_t         obj_type;
 | |
|     /* node mac addr, little-endian */
 | |
|     uint8_t         mac_addr[PROTO_3762_MAC_ADDR_LEN];
 | |
|     /* event report data len */
 | |
|     uint8_t         data_len;
 | |
|     /* event report data */
 | |
|     uint8_t         data[0];
 | |
| } afn56_fn02_node_evt_rpt_t;
 | |
| 
 | |
| typedef struct _afn56_fn03_fn13_amr_data_ul {
 | |
|     /* communication object type, see PROTO_3762_FJ_OBJ_XXX */
 | |
|     uint8_t                 obj_type;
 | |
|     /* communication object address, little-endian */
 | |
|     uint8_t                 mac_addr[IOT_MAC_ADDR_LEN];
 | |
|     /* communication delay time, unit 10ms. */
 | |
|     uint16_t                delay_time;
 | |
| } afn56_fn03_fn13_amr_data_ul_t;
 | |
| 
 | |
| typedef struct _afn56_fn03_amr_data_dl {
 | |
|     /* plan id */
 | |
|     uint16_t                plan_id;
 | |
|     /* specific cmd id */
 | |
|     uint16_t                cmd_id;
 | |
|     /* communication object type, see PROTO_3762_FJ_OBJ_XXX */
 | |
|     uint8_t                 obj_type;
 | |
|     /* communication object address, little-endian */
 | |
|     uint8_t                 mac_addr[IOT_MAC_ADDR_LEN];
 | |
|     /* meter reading data len */
 | |
|     uint8_t                 data_len;
 | |
|     /* meter reading data */
 | |
|     uint8_t                 data[0];
 | |
| } afn56_fn03_amr_data_dl_t;
 | |
| 
 | |
| typedef struct _afn_56_fn_05_channel_delay_dl {
 | |
|     /* bcast data length */
 | |
|     uint8_t                 len;
 | |
|     /* bcast data */
 | |
|     uint8_t                 data[0];
 | |
| } afn_56_fn_05_channel_delay_dl_t;
 | |
| 
 | |
| typedef struct _afn_56_fn_05_channel_delay_ul {
 | |
|     /* communication delay time, unit is 10ms */
 | |
|     uint16_t                delay_time;
 | |
| } afn_56_fn_05_channel_delay_ul_t;
 | |
| 
 | |
| typedef struct _afn56_fn13_amr_data_dl {
 | |
|     /* plan id */
 | |
|     uint16_t                plan_id;
 | |
|     /* specific cmd id */
 | |
|     uint16_t                cmd_id;
 | |
|     /* communication object type, see PROTO_3762_FJ_OBJ_XXX */
 | |
|     uint8_t                 obj_type;
 | |
|     /* communication object address, little-endian */
 | |
|     uint8_t                 mac_addr[IOT_MAC_ADDR_LEN];
 | |
|     /* proto type, see PROTO_TYPE_XXX */
 | |
|     uint8_t                 proto_type;
 | |
|     /* reserved */
 | |
|     uint8_t                 rsvd;
 | |
|     /* meter reading data len */
 | |
|     uint16_t                data_len;
 | |
|     /* meter reading data */
 | |
|     uint8_t                 data[0];
 | |
| } afn56_fn13_amr_data_dl_t;
 | |
| 
 | |
| typedef struct _afn56_fn04_amr_data_rpt_ul {
 | |
|     /* plan id */
 | |
|     uint16_t                plan_id;
 | |
|     /* specific cmd id */
 | |
|     uint16_t                cmd_id;
 | |
|     /* communication object type, see PROTO_3762_FJ_OBJ_XXX */
 | |
|     uint8_t                 obj_type;
 | |
|     /* communication object address, little-endian */
 | |
|     uint8_t                 mac_addr[IOT_MAC_ADDR_LEN];
 | |
|     /* meter reading data len */
 | |
|     uint8_t                 data_len;
 | |
|     /* meter reading data */
 | |
|     uint8_t                 data[0];
 | |
| } afn56_fn04_amr_data_rpt_ul_t;
 | |
| 
 | |
| typedef struct _afn56_fn14_amr_data_rpt_ul_t {
 | |
|     /* plan id */
 | |
|     uint16_t                plan_id;
 | |
|     /* specific cmd id */
 | |
|     uint16_t                cmd_id;
 | |
|     /* communication object type, see PROTO_3762_FJ_OBJ_XXX */
 | |
|     uint8_t                 obj_type;
 | |
|     /* communication object address, little-endian */
 | |
|     uint8_t                 mac_addr[IOT_MAC_ADDR_LEN];
 | |
|     /* meter reading data len */
 | |
|     uint16_t                data_len;
 | |
|     /* meter reading data */
 | |
|     uint8_t                 data[0];
 | |
| } afn56_fn14_amr_data_rpt_ul_t;
 | |
| 
 | |
| #pragma pack(pop)   /* restore the pack status */
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #endif /* PROTO_3762_FJ_H */
 |