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