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