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