544 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			544 lines
		
	
	
		
			21 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_645_EXT_H
 | ||
|  | #define PROTO_645_EXT_H
 | ||
|  | 
 | ||
|  | #include "os_types_api.h"
 | ||
|  | #include "iot_utils_api.h"
 | ||
|  | #include "iot_pkt_api.h"
 | ||
|  | #include "iot_smart_meter.h"
 | ||
|  | 
 | ||
|  | #ifdef __cplusplus
 | ||
|  | extern "C" { | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #define PROTO_645_EXT_DEBUG            0
 | ||
|  | 
 | ||
|  | /* pack for the structures in the whole file */ | ||
|  | #pragma pack(push)  /* save the pack status */
 | ||
|  | #pragma pack(1)     /* 1 byte align */
 | ||
|  | 
 | ||
|  | /* Invalid di */ | ||
|  | #define PROTO_645_EXT_INVALID_DI                (0xffffffffu)
 | ||
|  | 
 | ||
|  | /* extended data item of extended 645-2007 frame */ | ||
|  | /* read value of current and paramter of power threshold */ | ||
|  | #define PROTO_645_EXT_CURRENT_AND_POWER_THR_DI    (0x04400050u)
 | ||
|  | /* read counter of event in someday */ | ||
|  | #define PROTO_645_EXT_EVT_COUNTER_DI              (0x04400055u)
 | ||
|  | /* read record of event in someday */ | ||
|  | #define PROTO_645_EXT_EVT_RECORD_DI               (0x04400056u)
 | ||
|  | /* read diagram of load */ | ||
|  | #define PROTO_645_EXT_LOAD_DIAGRAM_DI             (0x04400057u)
 | ||
|  | /* read real time data */ | ||
|  | #define PROTO_645_EXT_REAL_TIME_DATA_DI           (0x04400058u)
 | ||
|  | 
 | ||
|  | /* write value of meter bottom */ | ||
|  | #define PROTO_645_EXT_METER_BOTTOM_VALUE_DI       (0x0440002Eu)
 | ||
|  | 
 | ||
|  | /* data identification length for DL/T 645-2007 */ | ||
|  | #define PROTO_645_2007_EXT_DI_LEN                   (4)
 | ||
|  | 
 | ||
|  | /* extend control function code definition for DL/T 645-2007 */ | ||
|  | #define PROTO_645_2007_EXT_FN_READ_ADDR             (0x13)
 | ||
|  | #define PROTO_645_2007_EXT_FN_READ_DATA             (0x11)
 | ||
|  | #define PROTO_645_2007_EXT_FN_WRITE_DATA            (0x14)
 | ||
|  | 
 | ||
|  | /* frame start char definition */ | ||
|  | #define PROTO_645_EXT_START_CHAR                    (0x68)
 | ||
|  | 
 | ||
|  | /* frame end char definition */ | ||
|  | #define PROTO_645_EXT_END_CHAR                      (0x16)
 | ||
|  | 
 | ||
|  | /* preamble char definition */ | ||
|  | #define PROTO_645_EXT_PREAMBLE_CHAR                 (0xFE)
 | ||
|  | 
 | ||
|  | /* preamble code length */ | ||
|  | #define PROTO_645_EXT_PREAMBLE_LEN                  (4)
 | ||
|  | 
 | ||
|  | /* Message direction: slave->master */ | ||
|  | #define PROTO_645_EXT_DIR_TO_MASTER                 (1)
 | ||
|  | 
 | ||
|  | /* Message direction: master->slave */ | ||
|  | #define PROTO_645_EXT_DIR_TO_SLAVE                  (0)
 | ||
|  | 
 | ||
|  | /* Ack flag: means abnormal ack */ | ||
|  | #define PROTO_645_EXT_ACK_ABNORMAL                  (1)
 | ||
|  | 
 | ||
|  | /* Ack flag: means normal ack */ | ||
|  | #define PROTO_645_EXT_ACK_NORMAL                    (0)
 | ||
|  | 
 | ||
|  | /* Follow data flag: means following data available */ | ||
|  | #define PROTO_645_EXT_FOLLOW_AVAILABLE              (1)
 | ||
|  | 
 | ||
|  | /* Follow data flag: means no following data */ | ||
|  | #define PROTO_645_EXT_FOLLOW_INVALID                (0)
 | ||
|  | 
 | ||
|  | #define proto_645_2007_ext_di_to_byte(di,ptr)                   \
 | ||
|  |     do { \ | ||
|  |         ((uint8_t *)(ptr))[3]  = (uint8_t)((di) >> 24);     \ | ||
|  |         ((uint8_t *)(ptr))[2]  = (uint8_t)((di) >> 16);     \ | ||
|  |         ((uint8_t *)(ptr))[1]  = (uint8_t)((di) >> 8);      \ | ||
|  |         ((uint8_t *)(ptr))[0]  = (uint8_t)((di) & 0xff);    \ | ||
|  |     } while(0) | ||
|  | 
 | ||
|  | /* structure define area */ | ||
|  | typedef struct _proto_645_ext_ctrl_t { | ||
|  |     uint8_t     fn      :5,    /* function code. see
 | ||
|  |                                 * PROTO645_2007(1997)_FN_XXX | ||
|  |                                 */ | ||
|  |                 follow  :1,    /* follow flag. 0 means no following data.
 | ||
|  |                                 * 1 means following data available. | ||
|  |                                 * see PROTO_645_FOLLOW_XXX | ||
|  |                                 */ | ||
|  |                 ack     :1,    /* ack flag. 0 means normal ack.
 | ||
|  |                                 * 1 means abnormal ack. see PROTO_645_ACK_XXX | ||
|  |                                 */ | ||
|  |                 dir     :1;    /* direction flag. 1 means from primary
 | ||
|  |                                 * to secondary. 0 means from secondary | ||
|  |                                 * to primary,see PROTO_645_DIR_XXX | ||
|  |                                 */ | ||
|  | } proto_645_ext_ctrl_t; | ||
|  | 
 | ||
|  | typedef struct _proto_645_ext_header_t { | ||
|  |     uint8_t                 start_char_1;               /* start char,
 | ||
|  |                                                          * see 645_START_CHAR | ||
|  |                                                          */ | ||
|  |     uint8_t                 addr[IOT_MAC_ADDR_LEN];     /* target mac address */ | ||
|  |     uint8_t                 start_char_2;               /* start char,
 | ||
|  |                                                          * see 645_START_CHAR | ||
|  |                                                          */ | ||
|  |     proto_645_ext_ctrl_t    control;                    /* control code */ | ||
|  |     uint8_t                 len;                        /* data length */ | ||
|  |     uint8_t                 data[0];                    /* data */ | ||
|  | } proto_645_ext_header_t; | ||
|  | 
 | ||
|  | typedef struct _proto_645_ext_tailer_t { | ||
|  |      /* check sum */ | ||
|  |      uint8_t     cs; | ||
|  |      /* end char. see 645_END_CHAR */ | ||
|  |      uint8_t     end_char; | ||
|  | } proto_645_ext_tailer_t; | ||
|  | 
 | ||
|  | static inline  uint32_t proto_645_2007_ext_byte_to_di(uint8_t *ptr) | ||
|  | { | ||
|  |     return  ((((uint8_t *)(ptr))[3]<<24) | ||
|  |             |(((uint8_t *)(ptr))[2]<<16) | ||
|  |             |(((uint8_t *)(ptr))[1]<<8) | ||
|  |             |((uint8_t *)(ptr))[0]); | ||
|  | } | ||
|  | 
 | ||
|  | typedef enum _proto_645_ext_event_e { | ||
|  |     /* Event type, used to report the event. */ | ||
|  |     PROTO_645_EXT_EVENT_DEV_POWER_ON   = 0x0,/* Device power on. */ | ||
|  |     PROTO_645_EXT_EVENT_DEV_WORK_START = 0x1,/* Device start working. */ | ||
|  |     PROTO_645_EXT_EVENT_DEV_WORK_STOP  = 0x2,/* Device stop working. */ | ||
|  |     PROTO_645_EXT_EVENT_DEV_POWER_OFF  = 0x3,/* Device power off. */ | ||
|  |     PROTO_645_EXT_EVENT_DEV_TRAP_START = 0x4,/* Device work in trap. */ | ||
|  |     PROTO_645_EXT_EVENT_DEV_TRAP_STOP  = 0x5,/* Device restore from trap. */ | ||
|  | 
 | ||
|  |     PROTO_645_EXT_EVENT_INVALID | ||
|  | }proto_645_ext_event_e; | ||
|  | 
 | ||
|  | typedef struct _proto_645_ext_corr_time_t { | ||
|  |     uint8_t second; | ||
|  |     uint8_t minute; | ||
|  |     uint8_t hour; | ||
|  |     uint8_t day; | ||
|  |     uint8_t month; | ||
|  |     uint8_t year; | ||
|  | } proto_645_ext_corr_time_t; | ||
|  | 
 | ||
|  | typedef struct _proto_645_07_ext_time_t { | ||
|  |     uint8_t second; | ||
|  |     uint8_t minute; | ||
|  |     uint8_t hour; | ||
|  |     uint8_t week; | ||
|  |     uint8_t day; | ||
|  |     uint8_t month; | ||
|  |     uint8_t year; | ||
|  | } proto_645_07_ext_time_t; | ||
|  | 
 | ||
|  | typedef struct _proto_645_07_ext_v { | ||
|  |     /* voltage.use 2 bytes of BCD code to represent the voltage.
 | ||
|  |      * for example, 220.0V uses 2 bytes of BCD code to represent | ||
|  |      * the following 0x22, 0x00. */ | ||
|  |     uint8_t  tenth:4;      /* one-tenth unit. */ | ||
|  |     uint8_t  one:4;        /* ont unit. */ | ||
|  |     uint8_t  ten:4;        /* ten unit. */ | ||
|  |     uint8_t  hundred:4;    /* hundred unit. */ | ||
|  | } proto_645_07_ext_v_t; | ||
|  | 
 | ||
|  | typedef struct _proto_645_07_ext_thrphase_v_t { | ||
|  |     /* Concentrators support three-phase voltages and recently
 | ||
|  |      * use only a single term. */ | ||
|  |     proto_645_07_ext_v_t          A; | ||
|  |     proto_645_07_ext_v_t          B; | ||
|  |     proto_645_07_ext_v_t          C; | ||
|  | } proto_645_07_ext_thrphase_v_t; | ||
|  | 
 | ||
|  | typedef struct _proto_645_07_ext_a { | ||
|  |     /* current.use 3 bytes of BCD code to represent the current.
 | ||
|  |      * for example, 123.456A uses 3 bytes of BCD code to represent | ||
|  |      * the following 0x12, 0x34, 0x56. */ | ||
|  |     uint8_t  thousandth:4;  /* one-thousandth unit. */ | ||
|  |     uint8_t  hundredth:4;   /* one-hundredth unit. */ | ||
|  |     uint8_t  tenth:4;       /* ten unit. */ | ||
|  |     uint8_t  one:4;         /* one unit. */ | ||
|  |     uint8_t  ten:4;         /* ten unit. */ | ||
|  |     uint8_t  hundred:3;     /* hundred unit. */ | ||
|  |     uint8_t  s:1;           /* sign bit, 1 for negative. */ | ||
|  | } proto_645_07_ext_a_t; | ||
|  | 
 | ||
|  | typedef struct _proto_645_07_ext_thrphase_a_t { | ||
|  |     /* Concentrators support three-phase currents and recently
 | ||
|  |      * use only a single term. */ | ||
|  |     proto_645_07_ext_a_t          A; | ||
|  |     proto_645_07_ext_a_t          B; | ||
|  |     proto_645_07_ext_a_t          C; | ||
|  | } proto_645_07_ext_thrphase_a_t; | ||
|  | 
 | ||
|  | typedef struct _proto_645_07_ext_p { | ||
|  |     /* total power. use 3 bytes of BCD code to represent the active
 | ||
|  |      * power. for example, 12.3456kW uses 3 bytes of BCD code to represent | ||
|  |      * the following 0x12, 0x34, 0x56. */ | ||
|  |     uint8_t  ten_thousandth:4;   /* ten_thousandth unit. */ | ||
|  |     uint8_t  thousandth:4;       /* one-hundredth unit. */ | ||
|  |     uint8_t  hundredth:4;        /* one-hundredth unit. */ | ||
|  |     uint8_t  tenth:4;            /* one-tenth unit. */ | ||
|  |     uint8_t  one:4;              /* one unit. */ | ||
|  |     uint8_t  ten:2;              /* ten unit. */ | ||
|  |     uint8_t  d:1;                /* carry bit, 1 for need multiply by 10. */ | ||
|  |     uint8_t  s:1;                /* sign bit, 1 for negative. */ | ||
|  | } proto_645_07_ext_p_t; | ||
|  | 
 | ||
|  | typedef struct _proto_645_07_ext_thrphase_p_t { | ||
|  |     /* Concentrators support three-phase power and recently
 | ||
|  |      * use only a single term. */ | ||
|  |     proto_645_07_ext_p_t          total; | ||
|  |     proto_645_07_ext_p_t          A; | ||
|  |     proto_645_07_ext_p_t          B; | ||
|  |     proto_645_07_ext_p_t          C; | ||
|  | } proto_645_07_ext_thrphase_p_t; | ||
|  | 
 | ||
|  | typedef struct _proto_645_07_ext_pf { | ||
|  |     /* total power factor.use 2 bytes of BCD code to represent the power
 | ||
|  |      * factor. for example, 0.999 uses 2 bytes of BCD code to represent | ||
|  |      * the following 0x09, 0x99. */ | ||
|  |     uint8_t  tenth:4;        /* one-tenth unit. */ | ||
|  |     uint8_t  one:4;          /* one unit. */ | ||
|  |     uint8_t  ten:4;          /* ten unit. */ | ||
|  |     uint8_t  hundred:3;      /* hundred unit. */ | ||
|  |     uint8_t  s:1;            /* sign bit, 1 for negative. */ | ||
|  | } proto_645_07_ext_pf_t; | ||
|  | 
 | ||
|  | typedef struct _proto_645_07_ext_thrphase_pf_t { | ||
|  |     /* Concentrators support three-phase power factor and recently
 | ||
|  |      * use only a single term. */ | ||
|  |     proto_645_07_ext_pf_t          total; | ||
|  |     proto_645_07_ext_pf_t          A; | ||
|  |     proto_645_07_ext_pf_t          B; | ||
|  |     proto_645_07_ext_pf_t          C; | ||
|  | } proto_645_07_ext_thrphase_pf_t; | ||
|  | 
 | ||
|  | typedef struct _proto_645_07_ext_w { | ||
|  |     /* use 4 bytes of BCD code to represent bottom energy value. for example,
 | ||
|  |      * 123456.78KWh uses 4 bytes of BCD code to represent the following | ||
|  |      * 0x12, 0x34, 0x56, 0x78. | ||
|  |      */ | ||
|  |     uint8_t  hundredth:4;            /* one-hundredth unit. */ | ||
|  |     uint8_t  tenth:4;                /* one-tenth unit. */ | ||
|  |     uint8_t  one:4;                  /* one unit. */ | ||
|  |     uint8_t  ten:4;                  /* ten unit. */ | ||
|  |     uint8_t  hundred:4;              /* hundred unit. */ | ||
|  |     uint8_t  thousand:4;             /* thousand unit. */ | ||
|  |     uint8_t  ten_thousand:4;         /* ten_thousand unit. */ | ||
|  |     uint8_t  hundred_thousand:4;     /* hundred_thousand unit. */ | ||
|  | } proto_645_07_ext_w_t; | ||
|  | 
 | ||
|  | /* Item of each power threshold item. */ | ||
|  | typedef struct _proto_645_ext_power_record_item_t { | ||
|  |     proto_645_07_ext_thrphase_v_t         v;  /* Voltage, V. */ | ||
|  |     proto_645_07_ext_thrphase_a_t         i;  /* Electrical current, A. */ | ||
|  |     proto_645_07_ext_thrphase_p_t         p;  /* Power, KW. */ | ||
|  |     proto_645_07_ext_thrphase_pf_t        pf;  /* Power factor, %. */ | ||
|  |     proto_645_07_ext_w_t                  w;  /* Work(meter bottom value), KWH.
 | ||
|  |                                                */ | ||
|  | }proto_645_ext_power_record_item_t; | ||
|  | 
 | ||
|  | /* Describes password field of 645_ext write data field. */ | ||
|  | typedef struct _proto_645_ext_write_data_passwd_t { | ||
|  |     uint8_t                     A;  /* Password permission. */ | ||
|  |     uint8_t                     B; | ||
|  |     uint8_t                     C; | ||
|  | } proto_645_ext_write_data_passwd_t; | ||
|  | 
 | ||
|  | /* Describes 645_ext write data field information. */ | ||
|  | typedef struct _proto_645_ext_write_data_fields_t { | ||
|  |     uint8_t                            pass_perm;     /* Password permission. */ | ||
|  |     proto_645_ext_write_data_passwd_t  passwd;        /* Password. */ | ||
|  |     uint32_t                           operator_code; /* Operator code. */ | ||
|  | } proto_645_ext_write_data_fields_t; | ||
|  | 
 | ||
|  | /* Response read current and power limit parameters. */ | ||
|  | typedef struct _proto_645_ext_resp_threashold_t { | ||
|  |     proto_645_07_ext_a_t        i_standby;  /* Standby current threshold, A. */ | ||
|  |     proto_645_07_ext_a_t        i_work;  /* Working current threshold, A. */ | ||
|  |     proto_645_07_ext_p_t        p_trap;  /* Traped power threshold, KW. */ | ||
|  | } proto_645_ext_resp_threashold_t; | ||
|  | 
 | ||
|  | /* Response read event counter. */ | ||
|  | typedef struct _proto_645_ext_resp_event_counter_t { | ||
|  |     proto_645_ext_corr_time_t    start_time;    /* The time of start querrying. */ | ||
|  |     uint16_t                     event_counter; /* Number of events queried. */ | ||
|  | } proto_645_ext_resp_event_counter_t; | ||
|  | 
 | ||
|  | /* Item of each reported event record. */ | ||
|  | typedef struct _proto_645_ext_event_record_item_t { | ||
|  |     uint8_t                                type;   /* Event record type. */ | ||
|  |     proto_645_ext_corr_time_t              etime;  /* Event record timestamp. */ | ||
|  |     proto_645_ext_power_record_item_t   event_record_item; /* event record item. */ | ||
|  | }proto_645_ext_event_record_item_t; | ||
|  | 
 | ||
|  | /* Response read event record. */ | ||
|  | typedef struct _proto_645_ext_resp_event_record_t { | ||
|  |     uint16_t        record_start_index; /* Start number of records.*/ | ||
|  |     uint16_t        record_num; /* The number of records reported this time. */ | ||
|  |     proto_645_ext_event_record_item_t record_data[0]; /* event record data. */ | ||
|  | }proto_645_ext_resp_event_record_t; | ||
|  | 
 | ||
|  | /* Item of each reported load diagram. */ | ||
|  | typedef struct _proto_645_ext_load_diagram_item_t { | ||
|  |     proto_645_ext_corr_time_t              etime;  /* Event record timestamp. */ | ||
|  |     proto_645_ext_power_record_item_t   load_diagram_item; /* Load diagram. */ | ||
|  | }proto_645_ext_load_diagram_item_t; | ||
|  | 
 | ||
|  | /* Response load diagram. */ | ||
|  | typedef struct _proto_645_ext_resp_load_diagram_t { | ||
|  |     uint16_t                             record_num; /* The number of records
 | ||
|  |                                                       * at 15-minute intervals | ||
|  |                                                       * starting from the | ||
|  |                                                       * starting time. | ||
|  |                                                       */ | ||
|  |     proto_645_ext_load_diagram_item_t    load_diagram[0]; /* data of records. */ | ||
|  | }proto_645_ext_resp_load_diagram_t; | ||
|  | 
 | ||
|  | /* Response realtime load diagram. */ | ||
|  | typedef struct _proto_645_ext_realtime_load_data_t { | ||
|  |     proto_645_ext_corr_time_t              etime;  /* the current time. */ | ||
|  |     proto_645_ext_power_record_item_t   realtime_load_data; /* realtime load
 | ||
|  |                                                              *data. | ||
|  |                                                              */ | ||
|  | }proto_645_ext_realtime_load_data_t; | ||
|  | 
 | ||
|  | /* Meter bottom value. */ | ||
|  | typedef struct _proto_645_ext_bottom_val_t | ||
|  | { | ||
|  |     proto_645_07_ext_w_t bottom_val; /* Meter bottom value. */ | ||
|  | }proto_645_ext_bottom_val_t; | ||
|  | 
 | ||
|  | #pragma pack(pop)   /* restore the pack status */
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief proto_ext_645_fn_is_extented() - check if function code is extended | ||
|  |  *                                         item. | ||
|  |  * @param fn:  function code. | ||
|  |  * | ||
|  |  * @return      true  -- extended data item. | ||
|  |  * @return      false -- not extended data item. | ||
|  |  */ | ||
|  | bool_t proto_ext_645_fn_is_extented(uint32_t fn); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief proto_645_ext_calc_cs() - calculate checksum for 645  protocol. | ||
|  |  * @param app_id:  pointer to the 645 protocol header. | ||
|  |  * | ||
|  |  * return | ||
|  |  *  calculated checksum value. | ||
|  |  */ | ||
|  | uint8_t proto_645_ext_calc_cs(proto_645_ext_header_t *hdr); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief proto_645_ext_format_check() - 645 protocol format check. | ||
|  |  * @param data:   pointer to protocol data buffer. | ||
|  |  * @param len:    data length. | ||
|  |  * @param dir:    message direction--see PROTO_645_DIR_XXX | ||
|  |  * return | ||
|  |  *    NULL      -- Incorrect protocol format. | ||
|  |  *    otherwise --pointer to the 645 protocol header. | ||
|  |  */ | ||
|  | proto_645_ext_header_t *proto_645_ext_format_check(uint8_t *data, | ||
|  |     uint32_t len, uint32_t dir); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief proto_645_ext_sub33_and_get_di() - subtracting 0x33 in the | ||
|  |  *                                          645 protocol data field and get di. | ||
|  |  *                                          This function can only be used when | ||
|  |  *                                          the data field has di. | ||
|  |  * @param data:   pointer to data field. | ||
|  |  * @param len:    length of data field. | ||
|  |  * @param di:     pointer to di cache. | ||
|  |  * @retval: ERR_OK   -- get di successfully. | ||
|  |  * @retval: ERR_FAIL -- get di fail. | ||
|  |  */ | ||
|  | uint32_t proto_645_ext_sub33_and_get_di(uint8_t *data, uint8_t len, | ||
|  |     uint32_t *di); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief proto_645_ext_add33_handle() -    add 0x33 of the every data in the | ||
|  |  *                                          645 protocol data field. | ||
|  |  * @param uint8_t:   pointer to data field. | ||
|  |  * @param size:    length of data field. | ||
|  |  */ | ||
|  | void proto_645_ext_add33_handle(uint8_t *ds, uint32_t size); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief proto_645_ext_sub33_handle() -    sub 0x33 of the every data in the | ||
|  |  *                                          645 protocol data field. | ||
|  |  * @param uint8_t:   pointer to data field. | ||
|  |  * @param size:    length of data field. | ||
|  |  */ | ||
|  | void proto_645_ext_sub33_handle(uint8_t *ds, uint32_t size); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief proto_handle_645_ext_req_read_event_counter() - request counter of | ||
|  |  *                                                        event in someday. | ||
|  |  * @param data:   point to the request to adp . | ||
|  |  * @param data_len:   the length of data. | ||
|  |  */ | ||
|  | void proto_handle_645_ext_req_read_threshold( | ||
|  |     uint8_t* data, uint8_t data_len); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief proto_handle_645_ext_resp_read_threshold() - response read current | ||
|  |  *                                                    and power limit parameters. | ||
|  |  * @param data:   point to the response from adp to app. | ||
|  |  * @param data_len:   the length of data. | ||
|  |  */ | ||
|  | void proto_handle_645_ext_resp_read_threshold( | ||
|  |     uint8_t* data, uint32_t data_len); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief proto_handle_645_ext_req_read_event_counter() - request counter of | ||
|  |  *                                                        event in someday. | ||
|  |  * @param data:   point to the request to adp. | ||
|  |  * @param data_len:   the length of data. | ||
|  |  */ | ||
|  | void proto_handle_645_ext_req_read_event_counter( | ||
|  |     uint8_t* data, uint8_t data_len); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief proto_handle_645_ext_resp_read_event_counter() - response counter | ||
|  |  *                                                         of event in someday. | ||
|  |  * @param data:   point to the response from adp to app. | ||
|  |  * @param data_len:   the length of data. | ||
|  |  */ | ||
|  | void proto_handle_645_ext_resp_read_event_counter( | ||
|  |     uint8_t* data, uint32_t data_len); | ||
|  | /**
 | ||
|  |  * @brief proto_handle_645_ext_req_read_event_record() - request record of event | ||
|  |  *                                                       in someday. | ||
|  |  * @param data:   point to the request to adp. | ||
|  |  * @param data_len:   the length of data. | ||
|  |  */ | ||
|  | void proto_handle_645_ext_req_read_event_record( | ||
|  |     uint8_t* data, uint8_t data_len); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief proto_handle_645_ext_resp_read_event_record() - response record of | ||
|  |  *                                                        event in someday. | ||
|  |  * @param data:   point to the response from adp to app. | ||
|  |  * @param data_len:   the length of data. | ||
|  |  */ | ||
|  | void proto_handle_645_ext_resp_read_event_record( | ||
|  |     uint8_t* data, uint32_t data_len); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief proto_handle_645_ext_req_read_load_diagram() - request diagram of load. | ||
|  |  * @param data:   point to the request to adp. | ||
|  |  * @param data_len:   the length of data. | ||
|  |  */ | ||
|  | void proto_handle_645_ext_req_read_load_diagram( | ||
|  |     uint8_t* data, uint8_t data_len); | ||
|  | /**
 | ||
|  |  * @brief proto_handle_645_ext_resp_read_load_diagram() - response diagram | ||
|  |  *                                                        of load. | ||
|  |  * @param data:   point to the response from adp to app. | ||
|  |  * @param data_len:   the length of data. | ||
|  |  */ | ||
|  | void proto_handle_645_ext_resp_read_load_diagram( | ||
|  |     uint8_t* data, uint32_t data_len); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief proto_handle_645_ext_req_read_realtime_load_data() - request | ||
|  |  *                                                            real time data. | ||
|  |  * @param data:   point to the request to adp. | ||
|  |  * @param data_len:   the length of data. | ||
|  |  */ | ||
|  | void proto_handle_645_ext_req_read_realtime_load_data( | ||
|  |     uint8_t* data, uint8_t data_len); | ||
|  | /**
 | ||
|  |  * @brief proto_handle_645_ext_resp_read_realtime_load_data() - response real | ||
|  |  *                                                             time datay. | ||
|  |  * @param data:   point to the response from adp to app. | ||
|  |  * @param data_len:   the length of data. | ||
|  |  */ | ||
|  | void proto_handle_645_ext_resp_read_realtime_load_data( | ||
|  |     uint8_t* data, uint32_t data_len); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief proto_handle_645_ext_req_write_threshold() - request write current | ||
|  |  *                                                   and power limit parameters | ||
|  |  * @param data:   point to the request to adp. | ||
|  |  * @param data_len:   the length of data. | ||
|  |  */ | ||
|  | void proto_handle_645_ext_req_write_threshold( | ||
|  |     uint8_t* data, uint8_t data_len); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief proto_handle_645_ext_confirm_write_threshold() - process confirmation | ||
|  |  *                                                         from adp. | ||
|  |  * @param data:   point to the confirm status from adp to app. | ||
|  |  * @param data_len:   the length of data. | ||
|  |  */ | ||
|  | void proto_handle_645_ext_confirm_write_threshold( | ||
|  |     uint8_t* data, uint32_t data_len); | ||
|  | 
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief proto_handle_645_ext_req_write_bottom_value() - request write | ||
|  |  *                                                        bottom value. | ||
|  |  * @param data:   point to the request to adp. | ||
|  |  * @param data_len:   the length of data. | ||
|  |  */ | ||
|  | void proto_handle_645_ext_req_write_bottom_value( | ||
|  |     uint8_t* data, uint8_t data_len); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief proto_handle_645_ext_confirm_write_threshold() - process confirmation | ||
|  |  *                                                         from adp. | ||
|  |  * @param data:   point to the confirm status from adp to app. | ||
|  |  * @param data_len:   the length of data. | ||
|  |  */ | ||
|  | void proto_handle_645_ext_confirm_write_bottom_value( | ||
|  |     uint8_t* data, uint32_t data_len); | ||
|  | 
 | ||
|  | #ifdef __cplusplus
 | ||
|  | } | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #endif /* PROTO_645_EXT_H */
 |