1745 lines
48 KiB
C
Executable File
1745 lines
48 KiB
C
Executable File
/****************************************************************************
|
|
|
|
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 _IOT_CP_TASK_H_
|
|
#define _IOT_CP_TASK_H_
|
|
|
|
#include "iot_task_api.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* hardware related defintion */
|
|
|
|
#define IOT_CP_GPIO_RELAY1 (18)
|
|
#define IOT_CP_GPIO_MOC1 (19)
|
|
#define IOT_CP_GPIO_RELAY2 (20)
|
|
#define IOT_CP_GPIO_MOC2 (21)
|
|
#define IOT_CP_GPIO_RELAY3 (22)
|
|
#define IOT_CP_GPIO_MOC3 (23)
|
|
#define IOT_CP_GPIO_RELAY4 (24)
|
|
#define IOT_CP_GPIO_MOC4 (25)
|
|
#define IOT_CP_GPIO_NRESET (26)
|
|
#define IOT_CP_GPIO_PKEY (27)
|
|
#define IOT_CP_GPIO_LED (43)
|
|
|
|
|
|
#define IOT_CP_GPIO_OUPUT_HI (1)
|
|
#define IOT_CP_GPIO_OUPUT_LOW (0)
|
|
|
|
/* operation delay between relay and moc */
|
|
#define IOT_CP_SWITCH_DELAY (100)
|
|
|
|
/* defineation for replay's ZC control */
|
|
#ifndef CP_ZC_ENABLE
|
|
#define CP_ZC_ENABLE (0)
|
|
#endif
|
|
/* defination for enable N11 or not */
|
|
#ifndef USE_N11_GPRS
|
|
#define USE_N11_GPRS (0)
|
|
#endif
|
|
|
|
#if CP_ZC_ENABLE == 1
|
|
/* gpio number for zc in */
|
|
#define IOT_CP_GPIO_ZC_IN (38)
|
|
/* point-ahead for relay's control, unit: us */
|
|
#define IOT_CP_ZC_POINT_AHEAD (500)
|
|
/* counter of sample times */
|
|
#define IOT_CP_ZC_SAMPLE_CNT (10)
|
|
/* invalid GP TIMER id*/
|
|
#define IOT_CP_GP_TIMER_INVALID_ID (0xFF)
|
|
/* indicate how many data should be discarded */
|
|
#define IOT_CP_ZC_DISCARD_DATA_CNT (4)
|
|
/* period of zc, unit: us */
|
|
#define IOT_CP_ZC_STD_PERIOD (20000)
|
|
/* margin of ZC period */
|
|
#define IOT_CP_ZC_PERIOD_MARGIN (400)
|
|
/* upper limit of ZC period */
|
|
#define IOT_CP_ZC_PERIOD_LIMIT_UPPER \
|
|
(IOT_CP_ZC_STD_PERIOD + IOT_CP_ZC_PERIOD_MARGIN)
|
|
/* lower limit of ZC period */
|
|
#define IOT_CP_ZC_PERIOD_LIMIT_LOWER \
|
|
(IOT_CP_ZC_STD_PERIOD - IOT_CP_ZC_PERIOD_MARGIN)
|
|
#endif
|
|
|
|
/*CP : charging pile*/
|
|
/*po : purchase order*/
|
|
#define CP_UART_BAUD_RATE (115200)
|
|
|
|
/*frame's preamble code */
|
|
#define CP_FRM_PREAMBLE_CODE (0x68)
|
|
/*frame's preamble reply code */
|
|
#define CP_FRM_PREAMBLE_REPLY_CODE (0x69)
|
|
|
|
/*frame's tail code */
|
|
#define CP_FRM_TAIL_CODE (0x16)
|
|
/* Fn code's offset in frame */
|
|
#define CP_FRM_FN_OFFSET (1)
|
|
/*offset of data lenth */
|
|
#define CP_FRM_FN_SIZE (1)
|
|
/*offset of data lenth */
|
|
#define CP_FRM_DATA_LEN_OFFSET (2)
|
|
/* size of data lenth */
|
|
#define CP_FRM_DATA_LEN_SIZE (1)
|
|
/* size of checksum */
|
|
#define CP_FRM_CS_LEN_SIZE (1)
|
|
/* minimal frame size */
|
|
#define CP_FRM_MIN_LEN (5)
|
|
|
|
/* purchase order number size, unit: byte */
|
|
#define CP_PO_NUMBER_SIZE (8)
|
|
|
|
/* sta maximum node count */
|
|
#define IOT_CP_MAX_STA_CNT (32)
|
|
/* maximum number of sockets */
|
|
#define IOT_CP_MAX_PLUG_CNT (4)
|
|
/* maximum value of charging history table */
|
|
#define IOT_CP_MAX_HIS_INFO_CNT (1)
|
|
|
|
/** Message type defination: */
|
|
#define IOT_CP_TASK_MT_UART (1) /* message from uart. */
|
|
#define IOT_CP_TASK_MT_TIMER (2) /* message from timer. */
|
|
#define IOT_CP_TASK_MT_APPDATA (3) /* message from cp-task. */
|
|
#define IOT_CP_TASK_MT_METER (4) /* message from meter-task. */
|
|
#define IOT_CP_TASK_MT_REPORT (5) /* report infomation */
|
|
#define IOT_CP_TASK_MT_CHARG_SWITCH (6) /* start/stop charging */
|
|
|
|
/* message id for IOT_CP_TASK_MT_TIMER */
|
|
#define IOT_CP_TASK_MSG_ID_TMR_TIMEOUT (1)
|
|
#define IOT_CP_TASK_MSG_ID_CMD_HANDLE (2)
|
|
#define IOT_CP_TASK_MSG_ID_TMR_PERIOD (3) //Periodic timer
|
|
|
|
/* message id for IOT_CP_TASK_MT_METER */
|
|
#define IOT_CP_TASK_MSG_ID_MERTER_DATA (0) /* data message from meter-task. */
|
|
/* message id for report*/
|
|
#define IOT_CP_TASK_MSG_ID_REPORT_HANDLE (4)
|
|
|
|
/* message id for IOT_CP_TASK_MT_CHARG_SWITCH */
|
|
#define IOT_CP_TASK_MSG_ID_CHARGE_START (0) /* start charging */
|
|
#define IOT_CP_TASK_MSG_ID_CHARGE_STOP (1) /* stop charging */
|
|
|
|
#define IOT_CP_TASK_ID IOT_GREE_APP_MID
|
|
|
|
/* stack size of task */
|
|
#define IOT_CP_TASK_TASK_STACK_SIZE (2048)
|
|
|
|
#define IOT_CP_TASK_PROTO_TASK_PRIO (6)
|
|
|
|
/* number of messages pending in queue. */
|
|
#define IOT_CP_TASK_TASK_POOL_SIZE (128)
|
|
|
|
#define IOT_CP_TASK_TIMER_PERIOD (100) /* units:ms */
|
|
/* period of updating timer */
|
|
#define IOT_CP_TASK_TIMER_UPDATE_PERIOD (100) /* units:ms */
|
|
|
|
/* check close order timer period */
|
|
#define IOT_CP_TASK_TIMER_CLOSE_ORDER_PRD (3000) /* units:ms */
|
|
|
|
/* counter of quering RTC interval : 100ms * cnt */
|
|
#define IOT_CP_TASK_QUERY_RTC_INTVL_CNT (12000)
|
|
/* counter of reporting status interval : 100ms * cnt */
|
|
#define IOT_CP_TASK_RPT_STATUS_INTVL_CNT (1800)
|
|
/* counter of reporting charging status interval : 100ms * cnt */
|
|
#define IOT_CP_TASK_REPORT_INTVL_CNT (30)
|
|
/* Maximum cnt of retransmit historical info*/
|
|
#define IOT_CP_TASK_RPT_RETRY_MAX_CNT (5)
|
|
/* Maximum cnt of request RTC */
|
|
#define IOT_CP_TASK_RPT_RTC_MAX_CNT (3)
|
|
|
|
/* rate: minute to second */
|
|
#define IOT_MINUTE_TO_SECOND (60)
|
|
/* rate: second to microsecond */
|
|
#define IOT_SECOND_TO_MICROSECOND (1000)
|
|
|
|
/* default initialization value. */
|
|
/* the rated voltage, 110V or 220v, unit: 1V */
|
|
#define CP_DEFAULT_CFG_RATED_VOLT (220)
|
|
/* the current value when charge full, unit:1mA (1~1000) */
|
|
#define CP_DEFAULT_CFG_CHG_FULL_CURRENT (100)
|
|
/* the current value when load is over, unit:0.1A (1~160) */
|
|
#define CP_DEFAULT_CFG_OVERLOAD_CURRENT (30)
|
|
/* the current value when leak,unit:1 mA (1~255) */
|
|
#define CP_DEFAULT_CFG_LEAK_CURRENT (20)
|
|
/* the config value is invalid */
|
|
#define CP_CFG_INVALID_VALUE (0)
|
|
/* open circurt current without load, uint:mA */
|
|
#define CP_DEFAULT_OPEN_CIRCUIT_CURRENT (13)
|
|
|
|
/* define threshold saved eigenvalue */
|
|
#define CP_THESHOLD_EIGENVALUE (0x66666666)
|
|
|
|
/* chargepile check alram */
|
|
enum _iot_cp_alarm_check_e{
|
|
ALARM_EN_OVERVOLT = 0,
|
|
ALARM_EN_UNDERVOLT = 1,
|
|
ALARM_EN_OVERCUR = 2,
|
|
ALARM_EN_OVERLOAD = 3,
|
|
ALARM_EN_OVERTEMP = 4,
|
|
ALARM_EN_CONN_FAIL = 5,
|
|
ALARM_EN_LEAK_CUR = 6,
|
|
ALARM_EN_GND_ERR = 7,
|
|
ALARM_EN_CHARGE_TIMEOUT = 8,
|
|
/*... */
|
|
ALARM_EN_MAX = 16,
|
|
};
|
|
|
|
#define ALARM_EN_VALUE \
|
|
((1 << ALARM_EN_OVERVOLT) \
|
|
| (1 << ALARM_EN_UNDERVOLT) \
|
|
| (1 << ALARM_EN_OVERCUR) \
|
|
| (1 << ALARM_EN_OVERLOAD) \
|
|
| (1 << ALARM_EN_LEAK_CUR) \
|
|
)
|
|
|
|
/* frame format*/
|
|
#define GE_CRC_SIZE (2)
|
|
#define CP_CS_SIZE (1)
|
|
#define CP_FRAME_HDR_SIZE (3)
|
|
#define CP_FRAME_TAIL_SIZE (2)
|
|
#define CP_DATA_OFFSET (4)
|
|
#define GE_FRAME_CRC_TAIL_SIZE (3)
|
|
/* minial GE frame size used in cp_task */
|
|
#define CP_GE_DATA_FRM_MIN_SIZE (22)
|
|
/* data transimition direction: cp_task<->uart */
|
|
#define IOT_CP_TRANS_DIR_UART (1)
|
|
/* data transimition direction: cp_task<->ge */
|
|
#define IOT_CP_TRANS_DIR_PLC (2)
|
|
/*device code : 0x90*/
|
|
#define IOT_CP_DEV_CODE_2200W_PLC (0x90)
|
|
|
|
typedef uint32_t(*cp_task_cb)(iot_pkt_t * pkt);
|
|
/** type of function send pkt data to ge. */
|
|
typedef uint8_t(*data_send_to_ge)(uint8_t *buf, uint16_t buf_len);
|
|
/* function type of command. */
|
|
typedef void (*iot_cp_fn_t)(uint8_t *data,uint8_t fn);
|
|
typedef struct _iot_cp_handle_t {
|
|
/* command code. */
|
|
uint32_t cmd;
|
|
/* function handle of command code. */
|
|
iot_cp_fn_t fn_cmd;
|
|
} iot_cp_handle_t;
|
|
|
|
/*work role*/
|
|
typedef enum _cp_work_role_e
|
|
{
|
|
/* plc role */
|
|
CP_PLC_ROLE_CCO = 0x00,
|
|
/* plc role */
|
|
CP_PLC_ROLE_STA = 0x01,
|
|
} cp_work_role_e;
|
|
|
|
/* CP net state */
|
|
typedef enum _cp_net_status_e
|
|
{
|
|
/* intialized */
|
|
CP_NET_STATUS_INITED = 0x01,
|
|
/* online */
|
|
CP_NET_STATUS_ONLINE = 0x02,
|
|
/* offline */
|
|
CP_NET_STATUS_OFFLINE = 0x03,
|
|
|
|
CP_NET_STATUS_INVALID = 0xFF,
|
|
} cp_status_e;
|
|
|
|
/* CP net state */
|
|
typedef enum _cp_task_rpt_type_e
|
|
{
|
|
/* The corresponding offset of the signal */
|
|
CP_SIGNAL_REPORT_ERR = 0,
|
|
/* The corresponding offset of the signal*/
|
|
CP_SIGNAL_REPORT_HISTORY = 1,
|
|
/* Maximum cnt of retransmit signal id*/
|
|
CP_REPORT_SIGNAL_MAX_CNT = 2,
|
|
} cp_task_rpt_type_e;
|
|
|
|
/* CP net state */
|
|
typedef enum _cp_task_rpt_mask_e
|
|
{
|
|
/*transmit node's error aborting info fn :60H*/
|
|
CP_REPORT_ERR_ON = 0x01,
|
|
CP_REPORT_ERR_OFF = 0xFE,
|
|
/*transmit node's history info fn :63H*/
|
|
CP_REPORT_HISTORY_ON = 0x02,
|
|
CP_REPORT_HISTORY_OFF = 0xFD,
|
|
} cp_task_rpt_mask_e;
|
|
|
|
/* cp order check value */
|
|
enum _cp_order_check_e {
|
|
/* order check default value */
|
|
IOT_CP_ORDER_CHECK_DEFAULT = 0x0,
|
|
/* order checked */
|
|
IOT_CP_ORDER_CHECKED = 0x1,
|
|
/* order unchecked */
|
|
IOT_CP_ORDER_UNCHECK = 0x2,
|
|
};
|
|
|
|
/** cp_task message */
|
|
typedef struct _iot_cp_task_msg {
|
|
/* iot task message */
|
|
iot_task_msg_t task_msg;
|
|
/* pointer to message data */
|
|
void *data;
|
|
/* another data field */
|
|
uint32_t data2;
|
|
} iot_cp_task_msg_t;
|
|
|
|
/* config order result */
|
|
typedef enum _cp_cfg_po_ret_code_e
|
|
{
|
|
/* config order successfully */
|
|
IOT_CP_CFG_PO_RET_SUCCESS = 0x00,
|
|
/* config order failed due to error data received */
|
|
IOT_CP_CFG_PO_RET_ERR_DATA = 0x01,
|
|
/* config order failed due to busy */
|
|
IOT_CP_CFG_PO_RET_BUSY = 0x02,
|
|
/* config order failed due to device malfunction */
|
|
IOT_CP_CFG_PO_RET_DEV_FAULT = 0x03,
|
|
/* config order failed due to plug out */
|
|
IOT_CP_CFG_PO_RET_PLUG_OUT = 0x04,
|
|
/* config order failed due to po matched */
|
|
IOT_CP_CFG_PO_RET_NO_PO = 0x04,
|
|
/* config order failed due to in maintain mode */
|
|
IOT_CP_CFG_PO_RET_MAINTENANCE = 0x06,
|
|
} cp_cfg_po_ret_code_e;
|
|
|
|
typedef enum _cp_result_rsp_code_e
|
|
{
|
|
/* config order successfully */
|
|
IOT_RESULT_CONFIG_SUCCESS = 0x00,
|
|
/* config RTC successfully */
|
|
IOT_RESULT_RTC_SUCCESS = 0x00,
|
|
/* find free nodes err*/
|
|
IOT_RESULT_FIND_FREE_ERR = 0x00,
|
|
/* find free nodes successfully*/
|
|
IOT_RESULT_FIND_FREE_SUCCESS = 0x01,
|
|
/* config order failed due to error data received */
|
|
IOT_RESULT_RET_ERR_DATA = 0x01,
|
|
} cp_result_rsp_code_e;
|
|
|
|
/* charging mode */
|
|
typedef enum _cp_cmd_charg_mode_e
|
|
{
|
|
/* charging based on time */
|
|
IOT_CP_CHARGE_MODE_TIME = 0x00,
|
|
/* charging based on money */
|
|
IOT_CP_CHARGE_MODE_MONEY = 0x01,
|
|
/* charging based on power consumption */
|
|
IOT_CP_CHARGE_MODE_POWER = 0x02,
|
|
/* charging until fulled */
|
|
IOT_CP_CHARGE_MODE_FULL_CHARG = 0x03,
|
|
/* charging based on fix time */
|
|
IOT_CP_CHARGE_MODE_FIX_TIME = 0x04,
|
|
} cp_cmd_charg_mode_e;
|
|
|
|
/* config function code */
|
|
typedef enum _cp_cmd_set_fn_e
|
|
{
|
|
/* config node's parameter */
|
|
IOT_CP_CMD_SET_PARAMTR = 0x01,
|
|
/* config node's time */
|
|
IOT_CP_CMD_SET_RTC_TIME = 0x02,
|
|
/* config node's working mode */
|
|
IOT_CP_CMD_SET_WORK_MODE = 0x03,
|
|
/* issue order number */
|
|
IOT_CP_CMD_SET_NEW_PO = 0x40,
|
|
/* issue order number */
|
|
IOT_CP_CMD_SET_END_PO = 0x41,
|
|
/* issue order number */
|
|
IOT_CP_CMD_SET_FIND_FREE = 0x42,
|
|
|
|
/* stop charging due to emergency */
|
|
IOT_CP_CMD_SET_EMERGENT_STOP = 0x66,
|
|
} cp_cmd_set_fn_e;
|
|
|
|
typedef enum _cp_cmd_query_fn_e
|
|
{
|
|
/* query node's status and */
|
|
IOT_CP_CMD_QUERY_STATUS = 0x20,
|
|
/* query data of charging device */
|
|
IOT_CP_CMD_QUERY_DEVIC_DATA = 0x21,
|
|
/* query node's version info */
|
|
IOT_CP_CMD_QUERY_VER_INFO = 0x22,
|
|
/* query node's parameter */
|
|
IOT_CP_CMD_QUERY_PARAMTR = 0x23,
|
|
/* query node's time */
|
|
IOT_CP_CMD_QUERY_TIME = 0x24,
|
|
/* query node's time */
|
|
IOT_CP_CMD_QUERY_CHAG_RECORD = 0x25,
|
|
/* concentrator query node's charging data */
|
|
IOT_CP_CMD_CONCENT_QUERY_DATA = 0x65,
|
|
|
|
/* private cmd: query node's meter data */
|
|
IOT_CP_CMD_QUERY_METER_DATA = 0x80,
|
|
} cp_cmd_query_fn_e;
|
|
|
|
typedef enum _cp_cmd_rpt_fn_e
|
|
{
|
|
/* report data to monitor once error aborting happened */
|
|
IOT_CP_CMD_RPT_ERR_ABORT = 0x60,
|
|
/* report correcting time */
|
|
IOT_CP_CMD_RPT_QUERY_RTC = 0x61,
|
|
/* report node's history info */
|
|
IOT_CP_CMD_RPT_HISTORY_DATA = 0x63,
|
|
/* report node's status change */
|
|
IOT_CP_CMD_RPT_STATUS_CHANGE = 0x64,
|
|
} cp_cmd_rpt_fn_e;
|
|
|
|
typedef enum _cp_work_Mode_e
|
|
{
|
|
/*working mode: maintenance mode*/
|
|
IOT_CP_MAINTENANCE_MODE = 0x00,
|
|
/*working mode: operating mode*/
|
|
IOT_CP_NORMAL_MODE = 0x01,
|
|
|
|
IOT_CP_WORK_MODE_MAX = 0x02,
|
|
} cp_work_Mode_e;
|
|
|
|
typedef enum _cp_work_State_e
|
|
{
|
|
/* working state: idle */
|
|
IOT_CP_WORK_STATE_IDLE = 0x00,
|
|
/* working state: occupied, plug in */
|
|
IOT_CP_WORK_STATE_OCCUPIED = 0x01,
|
|
/* working state: under charging */
|
|
IOT_CP_WORK_STATE_CHARGING = 0x02,
|
|
/* working state: charge complet */
|
|
IOT_CP_WORK_STATE_CHARGED = 0x03,
|
|
/* working state: break down due to fault */
|
|
IOT_CP_WORK_STATE_FAULT = 0x04,
|
|
/* working state: under maintaince */
|
|
IOT_CP_WORK_STATE_MAINTAIN = 0x05,
|
|
/* concentrator query node's charging data */
|
|
IOT_CP_WORK_STATE_NOT_SUPPORT = 0xFF,
|
|
} cp_work_State_e;
|
|
|
|
typedef enum _cp_work_Fault_State_e
|
|
{
|
|
/* fault status */
|
|
/* overvolt */
|
|
IOT_CP_WORK_FAULT_OVERVOLT = 0x0001,
|
|
/* undervolt */
|
|
IOT_CP_WORK_FAULT_UNDERVOLT = 0x0002,
|
|
/* overcurrent */
|
|
IOT_CP_WORK_FAULT_OVERCUR = 0x0004,
|
|
/* overload*/
|
|
IOT_CP_WORK_FAULT_OVERLOAD = 0x0008,
|
|
/* over temperature */
|
|
IOT_CP_WORK_FAULT_OVERTEMP = 0x0010,
|
|
/* connection faluare */
|
|
IOT_CP_WORK_FAULT_CONN_FAIL = 0x0020,
|
|
/* leak-current protection */
|
|
IOT_CP_WORK_FAULT_LEAD_CUE_PROTEC = 0x0040,
|
|
/* ground fault */
|
|
IOT_CP_WORK_FAULT_GND_ERR = 0x0080,
|
|
/* charging timeout alarm enable */
|
|
IOT_CP_WORK_FAULT_CHARG_TIMEOUT = 0x0100,
|
|
/* reserved for future */
|
|
} cp_work_Fault_State_e;
|
|
|
|
typedef enum _cp_charg_end_type_e
|
|
{
|
|
/* end charge due to fault case */
|
|
IOT_CP_END_TPYE_FAULT = 0x01,
|
|
/* end charge due to disconnection */
|
|
IOT_CP_END_TPYE_DISCONN = 0x02,
|
|
/* end charge due to charging complet */
|
|
IOT_CP_END_TPYE_CHARGED = 0x03,
|
|
/* end charge due to achive the target setting */
|
|
IOT_CP_END_TPYE_SETUP = 0x04,
|
|
/* end charge due to recevied a emergence stop cmd */
|
|
IOT_CP_END_TPYE_EMERG = 0x05,
|
|
/* end charge due to recevied a ending po cmd */
|
|
IOT_CP_END_TPYE_END_PO = 0x06,
|
|
|
|
/* unknown type */
|
|
IOT_CP_END_TPYE_UNKNOWN = 0xFF,
|
|
} cp_charg_end_type_e;
|
|
|
|
#pragma pack(push) // save the pack status
|
|
#pragma pack(1) // 1 byte align
|
|
|
|
#if CP_ZC_ENABLE == 1
|
|
typedef struct _cp_zc_info_t
|
|
{
|
|
/* gpio number for zc input */
|
|
uint8_t zc_gpio;
|
|
/* zc sample buffer index */
|
|
uint8_t buf_indx;
|
|
/* sample data buffer */
|
|
uint8_t zc_buf[IOT_CP_ZC_SAMPLE_CNT];
|
|
/* calculated zc period, unit: 1us */
|
|
uint32_t zc_period;
|
|
/* indicate the zc ticks data vaild */
|
|
bool_t zc_tick_vaild;
|
|
/* indicate the zc period data vaild */
|
|
bool_t zc_period_vaild;
|
|
/* last time recorded ticks */
|
|
uint32_t pre_triger_ticks;
|
|
|
|
} cp_zc_info_t;
|
|
|
|
typedef struct _cp_relay_zc_ctrl_t
|
|
{
|
|
/* request bitmap for relay's control, indicate which relay will be controled */
|
|
uint8_t bm_req;
|
|
/* bitmap of relay's on/off state, if reques flag is set, relay's state should be reverse */
|
|
uint8_t bm_relay_state;
|
|
/* zc information */
|
|
cp_zc_info_t zc_info;
|
|
/* GP timer ID */
|
|
uint8_t gp_timer_id;
|
|
/* indicate GP timer's running status, true--running, false--not running */
|
|
bool_t timer_running;
|
|
} cp_relay_zc_ctrl_t;
|
|
|
|
#endif
|
|
|
|
typedef struct _cp_frm_hdr_t
|
|
{
|
|
/* premable code 0x68 */
|
|
uint8_t preamble;
|
|
/* function code */
|
|
uint8_t fn;
|
|
/* data length: less than 250 */
|
|
uint8_t data_len;
|
|
} cp_frm_hdr_t;
|
|
|
|
typedef struct _cp_frm_tail_t
|
|
{
|
|
/* checksum: from preamble code to the last byte of data field */
|
|
uint8_t cs;
|
|
/* tail code: 0x16 */
|
|
uint8_t tail;
|
|
} cp_frm_tail_t;
|
|
|
|
typedef struct _cp_sub_date_t
|
|
{
|
|
/* node time: year */
|
|
uint8_t year;
|
|
/* node time: month */
|
|
uint8_t month;
|
|
/* node time: date */
|
|
uint8_t date;
|
|
/* node time: hour */
|
|
uint8_t hour;
|
|
/* node time: minute */
|
|
uint8_t min;
|
|
/* node time: second */
|
|
uint8_t sec;
|
|
} cp_sub_date_t;
|
|
|
|
typedef struct _cp_date_t
|
|
{
|
|
/* node time: week */
|
|
uint8_t week;
|
|
cp_sub_date_t sub_date_t;
|
|
} cp_date_t;
|
|
|
|
typedef struct _cp_ver_info_t
|
|
{
|
|
/* node time: year */
|
|
uint8_t year;
|
|
/* node time: month */
|
|
uint8_t month;
|
|
/* node time: date */
|
|
uint8_t date;
|
|
/* version number */
|
|
uint8_t ver_num;
|
|
} cp_ver_info_t;
|
|
|
|
typedef struct _cp_fault_t
|
|
{
|
|
/* error status */
|
|
uint16_t overvolt :1,
|
|
/* undervolt */
|
|
undervolt :1,
|
|
/* overcurrent */
|
|
overcur :1,
|
|
/* overload*/
|
|
overload :1,
|
|
/* over temperature */
|
|
overtemp :1,
|
|
/* connection faluare */
|
|
conn_fail :1,
|
|
/* leak-current protection */
|
|
leak_cur_protec :1,
|
|
/* ground fault */
|
|
gnd_err :1,
|
|
/* charging timeout alarm enable */
|
|
charg_timeout :1,
|
|
/* reserved for future */
|
|
resved :7;
|
|
} cp_fault_t;
|
|
|
|
typedef struct _cp_plug_state_t
|
|
{
|
|
/* socket number */
|
|
uint8_t plug_num;
|
|
/* pre-working status, see IOT_CP_WORK_STATE_XXX */
|
|
uint8_t pre_work_state;
|
|
/* current working status, see IOT_CP_WORK_STATE_XXX */
|
|
uint8_t work_state;
|
|
/* restore working status after fault recover, see IOT_CP_WORK_STATE_XXX */
|
|
uint8_t restore_state;
|
|
/* plug status: 0--disconnected, 1--connected */
|
|
uint16_t plug_in;
|
|
/* incumbent volt of plug */
|
|
uint16_t incumbent_v;
|
|
/* error status */
|
|
cp_fault_t fault_t;
|
|
/* fault data*/
|
|
uint32_t fault_data;
|
|
} cp_plug_state_t;
|
|
|
|
typedef struct _cp_plug_history_info_t{
|
|
/* record number */
|
|
uint8_t record_sn;
|
|
/* ord checked or not: 0x0:default, 0x1:checked, 0x2:uncheck */
|
|
uint8_t checked;
|
|
/* order number */
|
|
uint8_t po_num[CP_PO_NUMBER_SIZE];
|
|
/* type of ending charge, see IOT_CP_END_TPYE_XXX */
|
|
uint8_t end_type;
|
|
/* working status, see IOT_CP_WORK_STATE_XXX */
|
|
uint8_t work_state;
|
|
/* The current amount of electricity, unit: 0.01kwh */
|
|
uint32_t elect_cur;
|
|
/* The last charged current amount of electricity, unit: 0.01kwh */
|
|
uint32_t elect_last;
|
|
/* charged time, unit: min */
|
|
uint16_t charg_time;
|
|
/* fault status */
|
|
cp_fault_t fault_t;
|
|
/* fault data*/
|
|
uint32_t fault_data;
|
|
/*charging start time*/
|
|
cp_date_t start_date_t;
|
|
/*end of charge time*/
|
|
cp_date_t end_date_t;
|
|
} cp_plug_history_info_t;
|
|
|
|
//meter callbark : meter data struct
|
|
typedef struct _cp_plugs_state_info_t
|
|
{
|
|
/* socket number */
|
|
uint8_t pulg_num;
|
|
/* temperature, unit: 1 Centigrade */
|
|
uint8_t tmperature;
|
|
/* charging volt, unit: 100mV */
|
|
uint16_t volt;
|
|
/* charging current, unit: mA */
|
|
uint32_t current;
|
|
/* power rate, unit: w */
|
|
uint32_t power;
|
|
/*The current amount of electricity, unit: 0.01kwh */
|
|
uint32_t elect_cur;
|
|
/*The last charged current amount of electricity, unit: 0.01kwh */
|
|
uint32_t elect_last;
|
|
/* leak-current, unit: mA */
|
|
uint16_t leak_current;
|
|
/* voltage frequnce, unit: 0.01HZ */
|
|
uint16_t freq;
|
|
/* power factor, unit: 0.01 */
|
|
uint8_t factor;
|
|
/* threshold of open circuit */
|
|
uint8_t discon_cur_th;
|
|
/* rated volt */
|
|
uint16_t rated_volt;
|
|
} cp_plugs_state_info_t;
|
|
|
|
typedef struct _cp_sub_info_t
|
|
{
|
|
/* threshold of leakage current protection */
|
|
uint8_t leak_cur_protc_th;
|
|
/* threshold of leakage current protection time */
|
|
uint8_t leak_cur_protc_tm_th;
|
|
/* threshold of charging timeout time */
|
|
uint8_t charg_timeout_th;
|
|
/* time of charge started */
|
|
uint8_t charg_start_tm;
|
|
/* threshold of open circuit */
|
|
uint8_t discon_cur_th;
|
|
} cp_sub_info_t;
|
|
|
|
typedef struct _cp_plug_threshold_info_t{
|
|
/* threshold of current for full charging */
|
|
uint16_t full_chg_cur_th;
|
|
/* threshold current timer for full charging */
|
|
uint8_t full_chg_cur_tm_th;
|
|
/* threshold of overload protection */
|
|
uint16_t over_load_th;
|
|
/* threshold of overload protection time */
|
|
uint16_t over_load_tm_th;
|
|
/* threshold of leakage current protection */
|
|
uint8_t leak_cur_protc_th;
|
|
/* threshold of leakage current protection time */
|
|
uint8_t leak_cur_protc_tm_th;
|
|
/* threshold of charging timeout time */
|
|
uint8_t charg_timeout_th;
|
|
/* time of charge started */
|
|
uint8_t charg_start_tm;
|
|
/* threshold of open circuit */
|
|
uint8_t discon_cur_th;
|
|
/* rated volt */
|
|
uint16_t rated_volt;
|
|
/* fault status */
|
|
union {
|
|
/* overvolt alarm enable */
|
|
uint16_t alarm_en_overvolt :1,
|
|
/* undervolt alarm enable */
|
|
alarm_en_undervolt :1,
|
|
/* overcurrent alarm enable */
|
|
alarm_en_overcur :1,
|
|
/* overload alarm enable */
|
|
alarm_en_overload :1,
|
|
/* over temperature enable */
|
|
alarm_en_overtemp :1,
|
|
/* connection failure enable */
|
|
alarm_en_conn_fail :1,
|
|
/* leak-current protection alarm enable */
|
|
alarm_en_leak_cur :1,
|
|
/* ground fault alarm enable */
|
|
alarm_en_gnd_err :1,
|
|
/* charging timeout alarm enable */
|
|
alarm_en_charge_timeout :1,
|
|
/* reserved for future */
|
|
resved :7;
|
|
uint16_t alarm_en_data;
|
|
}alarm;
|
|
} cp_plug_threshold_info_t;
|
|
|
|
typedef struct _cp_flash_info_t
|
|
{
|
|
/* threshold saved eigenvalue, CP_THESHOLD_EIGENVALUE */
|
|
uint32_t th_eigenvalue;
|
|
/* all the threshold information */
|
|
cp_plug_threshold_info_t plug_th[IOT_CP_MAX_PLUG_CNT];
|
|
/* charging history data */
|
|
cp_plug_history_info_t his_info[IOT_CP_MAX_PLUG_CNT];
|
|
} cp_flash_info_t;
|
|
|
|
typedef struct _cp_plug_info_t
|
|
{
|
|
cp_plug_state_t plug_state;
|
|
/* order number */
|
|
uint8_t po_num[CP_PO_NUMBER_SIZE];
|
|
|
|
/* charg mode, see IOT_CP_CHARGE_MODE_XXX */
|
|
uint8_t charge_mode;
|
|
/* charg data */
|
|
uint16_t charge_data;
|
|
|
|
/* threshold of current for full charging */
|
|
uint16_t full_chg_cur_th;
|
|
/* threshold current timer for full charging */
|
|
uint8_t full_chg_cur_tm_th;
|
|
/* threshold of overload protection */
|
|
uint16_t over_load_th;
|
|
/* threshold of overload protection time */
|
|
uint16_t over_load_tm_th;
|
|
cp_sub_info_t sub_info;
|
|
/* rated volt */
|
|
uint16_t rated_volt;
|
|
/* device type */
|
|
uint8_t dev_type;
|
|
/* temperature, unit: 1 Centigrade */
|
|
uint8_t tmperature;
|
|
/* charging volt, unit: 100mV */
|
|
uint16_t volt;
|
|
/* charging current, unit: mA */
|
|
uint32_t current;
|
|
/* power rate, unit: w */
|
|
uint32_t power;
|
|
/*The total amount of electricity */
|
|
uint32_t elect_total;
|
|
/*The total amount of electricity before charge, unit: 0.01kwh */
|
|
uint32_t elect_init;
|
|
/*The current amount of electricity, unit: 0.01kwh */
|
|
uint32_t elect_cur;
|
|
/*The last charged current amount of electricity, unit: 0.01kwh */
|
|
uint32_t elect_last;
|
|
/* charged time, unit: min */
|
|
uint16_t charg_time;
|
|
/* The last charge's electricity, unit: 0.01kwh */
|
|
uint32_t early_elect_cur;
|
|
/* The last charged current amount of electricity, unit: 0.01kwh */
|
|
uint32_t early_elect_last;
|
|
/* charged time, unit: min */
|
|
uint16_t early_charg_time;
|
|
/* leak-current, unit: mA */
|
|
uint16_t leak_current;
|
|
/* voltage frequnce, unit: 0.01HZ */
|
|
uint16_t freq;
|
|
/* power factor, unit: 0.01 */
|
|
uint8_t factor;
|
|
/*date of new po setting*/
|
|
cp_sub_date_t date_t;
|
|
/*date of charging done */
|
|
cp_sub_date_t date_charged;
|
|
/* timestamp of new po setting, seconds */
|
|
uint32_t new_po_ts;
|
|
/* operation cfg */
|
|
uint8_t en_on;
|
|
/* current record number */
|
|
uint8_t record_sn_cur;
|
|
/* charging history data */
|
|
cp_plug_history_info_t his_info[IOT_CP_MAX_HIS_INFO_CNT];
|
|
/* last historical record */
|
|
uint8_t his_last;
|
|
/* the relay state, plug in or plug out */
|
|
bool_t relay_state;
|
|
/* count of retry for reporting to platform */
|
|
uint8_t rpt_cnt;
|
|
/* reporting bitmap: indicate which report cmd should be sending retry */
|
|
uint8_t rpt_bitmap;
|
|
/* interval counter of transmit to platform*/
|
|
uint16_t rpt_cnt_down;
|
|
/* data of transmit to platform*/
|
|
uint8_t rpt_data;
|
|
/* sequnce number for sending cmd*/
|
|
uint32_t send_signal_sn[CP_REPORT_SIGNAL_MAX_CNT];
|
|
/* sequnce number for received cmd*/
|
|
uint32_t recv_signal_sn[CP_REPORT_SIGNAL_MAX_CNT];
|
|
} cp_plug_info_t;
|
|
|
|
//energe meter data infor struct
|
|
typedef struct _cp_plugs_em_info_t
|
|
{
|
|
/* sigle current, unit: mA */
|
|
uint16_t current;
|
|
/* power rate, unit: w */
|
|
uint16_t power;
|
|
/* power factor, unit: 0.01 */
|
|
uint8_t factor;
|
|
/* Incumbent volt, unit: 100mV */
|
|
uint16_t incumbent_v;
|
|
/* woking state, see IOT_CP_WORK_STATE */
|
|
uint8_t work_state;
|
|
/* plug state, in/out */
|
|
uint8_t plug_state;
|
|
/* bitmap of fault tpye */
|
|
cp_fault_t fault;
|
|
} cp_plugs_em_info_t;
|
|
|
|
|
|
typedef struct _cp_rsp_frame_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
/* data field */
|
|
uint8_t data[0];
|
|
} cp_rsp_frame_t;
|
|
|
|
typedef struct _cp_param_cfg_fn01_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
|
|
/* threshold of current for full charging */
|
|
uint16_t full_chg_cur_th;
|
|
/* threshold current timer for full charging */
|
|
uint8_t full_chg_cur_tm_th;
|
|
/* threshold of overload protection */
|
|
uint16_t over_load_th;
|
|
/* threshold of overload protection time */
|
|
uint16_t over_load_tm_th;
|
|
cp_sub_info_t sub_info;
|
|
/* rated volt */
|
|
uint16_t rated_volt;
|
|
/* fault status */
|
|
uint16_t alarm;
|
|
/* socket number */
|
|
uint8_t plug_num;
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_param_cfg_fn01_t;
|
|
|
|
typedef struct _cp_rsp_param_cfg_fn01_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
|
|
/* search result, 0--fail, 1--success */
|
|
uint8_t result;
|
|
/* socket number */
|
|
uint8_t plug_num;
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_rsp_param_cfg_fn01_t;
|
|
|
|
typedef struct _cp_except_rsp_param_cfg_fn01_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
|
|
/* search result, 0--fail, 1--success */
|
|
uint8_t result;
|
|
/* socket number */
|
|
uint8_t plug_num;
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_except_rsp_param_cfg_fn01_t;
|
|
|
|
typedef struct _cp_time_cfg_fn02_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
|
|
cp_date_t date_t;
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_time_cfg_fn02_t;
|
|
|
|
typedef struct _cp_rsp_time_cfg_fn02_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
|
|
/* search result, 0--fail, 1--success */
|
|
uint8_t result;
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_rsp_time_cfg_fn02_t;
|
|
|
|
typedef struct _cp_except_rsp_time_cfg_fn02_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
|
|
/* search result, 0--fail, 1--success */
|
|
uint8_t result;
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_except_rsp_time_cfg_fn02_t;
|
|
|
|
typedef struct _cp_mode_cfg_fn03_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
|
|
/* working mode, 0--maintain, 1--normal */
|
|
uint8_t work_mode;
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_mode_cfg_fn03_t;
|
|
|
|
typedef struct _cp_rsp_mode_cfg_fn03_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
|
|
/* search result, 0--fail, 1--success */
|
|
uint8_t result;
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_rsp_mode_cfg_fn03_t;
|
|
|
|
typedef struct _cp_except_rsp_mode_cfg_fn03_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
|
|
/* search result, 0--fail, 1--success */
|
|
uint8_t result;
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_except_rsp_mode_cfg_fn03_t;
|
|
|
|
typedef struct _cp_query_sta_status_fn20_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
|
|
/* socket number */
|
|
uint8_t plug_num;
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_query_sta_status_fn20_t;
|
|
|
|
typedef struct _cp_rsp_sta_status_fn20_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
|
|
/* working status, see IOT_CP_WORK_STATE_XXX */
|
|
uint8_t work_state;
|
|
/* plug status: 0--disconnected, 1--connected */
|
|
uint16_t plug_in;
|
|
/* fault status */
|
|
cp_fault_t fault_t;
|
|
/* socket number */
|
|
uint8_t plug_num;
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_rsp_sta_status_fn20_t;
|
|
|
|
typedef struct _cp_except_rsp_sta_status_fn20_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
|
|
/* working status, see IOT_CP_WORK_STATE_XXX */
|
|
uint8_t work_state;
|
|
/* search result, 0--fail, 1--success */
|
|
uint8_t result;
|
|
/* socket number */
|
|
uint8_t plug_num;
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_except_rsp_sta_status_fn20_t;
|
|
|
|
typedef struct _cp_query_charg_data_fn21_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
|
|
/* socket number */
|
|
uint8_t plug_num;
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_query_charg_data_fn21_t;
|
|
|
|
typedef struct _cp_rsp_charg_data_fn21_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
|
|
/* socket number */
|
|
uint8_t po_num[CP_PO_NUMBER_SIZE];
|
|
/* device type */
|
|
uint8_t dev_type;
|
|
/* temperature, unit: 1 Centigrade */
|
|
uint8_t tmperature;
|
|
/* charging volt, unit: 100mV */
|
|
uint16_t volt;
|
|
/* charging current, unit: mA */
|
|
uint32_t current;
|
|
/* power rate, unit: w */
|
|
uint32_t power;
|
|
/*The current amount of electricity, unit: 0.01kwh */
|
|
uint32_t elect_cur;
|
|
/*The last charged current amount of electricity, unit: 0.01kwh */
|
|
uint32_t elect_last;
|
|
/* charged time, unit: min */
|
|
uint16_t charg_time;
|
|
/* leak-current, unit: mA */
|
|
uint16_t leak_current;
|
|
/* voltage frequnce, unit: 0.01HZ */
|
|
uint16_t freq;
|
|
/* power factor, unit: 0.01 */
|
|
uint8_t factor;
|
|
|
|
cp_sub_date_t sub_date_t;
|
|
|
|
/* socket number */
|
|
uint8_t plug_num;
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_rsp_charg_data_fn21_t;
|
|
|
|
typedef struct _cp_except_rsp_charg_data_fn21_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
|
|
/* search result, 0--fail, 1--success */
|
|
uint8_t result;
|
|
/* socket number */
|
|
uint8_t plug_num;
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_except_rsp_charg_data_fn21_t;
|
|
|
|
typedef struct _cp_query_ver_info_fn22_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_query_ver_info_fn22_t;
|
|
|
|
typedef struct _cp_rsp_ver_info_fn22_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
|
|
/* software information */
|
|
uint32_t sw_info;
|
|
/* hardware information */
|
|
uint32_t hw_info;
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_rsp_ver_info_fn22_t;
|
|
|
|
typedef struct _cp_except_rsp_ver_info_fn22_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
|
|
/* search result, 0--fail, 1--success */
|
|
uint8_t result;
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_except_rsp_ver_info_fn22_t;
|
|
|
|
typedef struct _cp_query_cfg_param_fn23_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
|
|
/* socket number */
|
|
uint8_t plug_num;
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_query_cfg_param_fn23_t;
|
|
|
|
typedef struct _cp_rsp_cfg_param_fn23_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
|
|
/* threshold of current for full charging */
|
|
uint16_t full_chg_cur_th;
|
|
/* threshold current timer for full charging */
|
|
uint8_t full_chg_cur_tm_th;
|
|
/* threshold of overload protection */
|
|
uint16_t over_load_th;
|
|
/* threshold of overload protection time */
|
|
uint16_t over_load_tm_th;
|
|
cp_sub_info_t sub_info;
|
|
/* rated volt */
|
|
uint16_t rated_volt;
|
|
/* status alarm */
|
|
uint16_t alarm;
|
|
/* socket number */
|
|
uint8_t plug_num;
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_rsp_cfg_param_fn23_t;
|
|
|
|
typedef struct _cp_except_rsp_cfg_param_fn23_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
|
|
/* search result, 0--fail, 1--success */
|
|
uint8_t result;
|
|
/* socket number */
|
|
uint8_t plug_num;
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_except_rsp_cfg_param_fn23_t;
|
|
|
|
typedef struct _cp_query_sta_time_fn24_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
/* socket number */
|
|
uint8_t plug_num;
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_query_sta_time_fn24_t;
|
|
|
|
typedef struct _cp_rsp_sta_time_fn24_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
/* sta time*/
|
|
cp_date_t date_t;
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_rsp_sta_time_fn24_t;
|
|
|
|
typedef struct _cp_query_charg_record_fn25_t
|
|
{
|
|
/* frame header */
|
|
|
|
cp_frm_hdr_t hdr;
|
|
/* socket number */
|
|
uint8_t plug_num;
|
|
/* record number */
|
|
uint8_t record_sn;
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_query_charg_record_fn25_t;
|
|
|
|
typedef struct _cp_rsp_charg_record_fn25_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
|
|
/* record number */
|
|
uint8_t record_sn;
|
|
/* order number */
|
|
uint8_t po_num[CP_PO_NUMBER_SIZE];
|
|
/* type of ending charge, see IOT_CP_END_TPYE_XXX */
|
|
uint8_t end_type;
|
|
/* working status, see IOT_CP_WORK_STATE_XXX */
|
|
uint8_t work_state;
|
|
/* The current amount of electricity, unit: 0.01kwh */
|
|
uint32_t elect_cur;
|
|
/* The last charged current amount of electricity, unit: 0.01kwh */
|
|
uint32_t elect_last;
|
|
/* charged time, unit: min */
|
|
uint16_t charg_time;
|
|
/* fault status */
|
|
cp_fault_t fault_t;
|
|
/* fault data*/
|
|
uint32_t fault_data;
|
|
/* socket number */
|
|
uint8_t plug_num;
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_rsp_charg_record_fn25_t;
|
|
|
|
typedef struct _cp_except_rsp_charg_record_fn25_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
|
|
/* search result, 0--fail, 1--success */
|
|
uint8_t result;
|
|
/* socket number */
|
|
uint8_t plug_num;
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_except_rsp_charg_record_fn25_t;
|
|
|
|
typedef struct _cp_new_po_cfg_fn40_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
|
|
/* order number */
|
|
uint8_t po_num[CP_PO_NUMBER_SIZE];
|
|
/* charg mode, see IOT_CP_CHARGE_MODE_XXX */
|
|
uint8_t charge_mode;
|
|
/* charg data */
|
|
uint16_t charge_data;
|
|
/* socket number */
|
|
uint8_t plug_num;
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_new_po_cfg_fn40_t;
|
|
|
|
typedef struct _cp_rsp_new_po_cfg_fn40_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
|
|
/* order number */
|
|
uint8_t po_num[CP_PO_NUMBER_SIZE];
|
|
/* cfg result, see IOT_CP_CFG_ORDER_RET_XXX */
|
|
uint8_t result;
|
|
/* failure data */
|
|
uint16_t fault;
|
|
/* socket number */
|
|
uint8_t plug_num;
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_rsp_new_po_cfg_fn40_t;
|
|
|
|
typedef struct _cp_except_rsp_new_po_cfg_fn40_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
|
|
/* search result, 0--fail, 1--success */
|
|
uint8_t result;
|
|
/* socket number */
|
|
uint8_t plug_num;
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_except_rsp_new_po_cfg_fn40_t;
|
|
|
|
typedef struct _cp_end_po_cfg_fn41_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
|
|
/* order number */
|
|
uint8_t po_num[CP_PO_NUMBER_SIZE];
|
|
/* socket number */
|
|
uint8_t plug_num;
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_end_po_cfg_fn41_t;
|
|
|
|
typedef struct _cp_rsp_end_po_cfg_fn41_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
|
|
/* order number */
|
|
uint8_t po_num[CP_PO_NUMBER_SIZE];
|
|
/* cfg result, see IOT_CP_CFG_ORDER_RET_XXX */
|
|
uint8_t result;
|
|
/* The last charge's electricity, unit: 0.01kwh */
|
|
uint32_t early_elect_cur;
|
|
/* The last charged current amount of electricity, unit: 0.01kwh */
|
|
uint32_t early_elect_last;
|
|
/* charged time, unit: min */
|
|
uint16_t early_charg_time;
|
|
/* socket number */
|
|
uint8_t plug_num;
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_rsp_end_po_cfg_fn41_t;
|
|
|
|
typedef struct _cp_except_rsp_end_po_cfg_fn41_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
|
|
/* search result, 0--fail, 1--success */
|
|
uint8_t result;
|
|
/* socket number */
|
|
uint8_t plug_num;
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_except_rsp_end_po_cfg_fn41_t;
|
|
|
|
typedef struct _cp_search_idle_fn42_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
|
|
/* operation cfg */
|
|
uint8_t en_on;
|
|
/* socket number */
|
|
uint8_t plug_num;
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_search_idle_fn42_t;
|
|
|
|
typedef struct _cp_rsp_search_idle_fn42_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
|
|
/* search result, 0--fail, 1--success */
|
|
uint8_t result;
|
|
/* socket number */
|
|
uint8_t plug_num;
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_rsp_search_idle_fn42_t;
|
|
|
|
typedef struct _cp_except_rsp_search_idle_fn42_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
|
|
/* search result, 0--fail, 1--success */
|
|
uint8_t result;
|
|
/* socket number */
|
|
uint8_t plug_num;
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
|
|
} cp_except_rsp_search_idle_fn42_t;
|
|
|
|
typedef struct _cp_rpt_charg_abort_fn60_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
/* order number */
|
|
uint8_t po_num[CP_PO_NUMBER_SIZE];
|
|
/* type of ending charge, see IOT_CP_END_TPYE_XXX */
|
|
uint8_t end_type;
|
|
/* working status, see IOT_CP_WORK_STATE_XXX */
|
|
uint8_t work_state;
|
|
/* The current amount of electricity, unit: 0.01kwh */
|
|
uint32_t elect_cur;
|
|
/* The last charged current amount of electricity, unit: 0.01kwh */
|
|
uint32_t elect_last;
|
|
/* charged time, unit: min */
|
|
uint16_t charg_time;
|
|
/* fault status */
|
|
cp_fault_t fault_t;
|
|
/* fault data*/
|
|
uint32_t fault_data;
|
|
/* socket number */
|
|
uint8_t plug_num;
|
|
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_rpt_charg_abort_fn60_t;
|
|
|
|
typedef struct _cp_ack_charg_abort_fn60_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
|
|
/* search result, 0--fail, 1--success */
|
|
uint8_t result;
|
|
/* socket number */
|
|
uint8_t plug_num;
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_ack_charg_abort_fn60_t;
|
|
|
|
typedef struct _cp_rpt_query_sta_time_fn61_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_rpt_query_sta_time_fn61_t;
|
|
|
|
typedef struct _cp_ack_query_sta_time_fn61_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
|
|
/*get RTC*/
|
|
cp_date_t date_t;
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_ack_query_sta_time_fn61_t;
|
|
|
|
typedef struct _cp_rpt_history_data_fn63_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
/* order number */
|
|
uint8_t po_num[CP_PO_NUMBER_SIZE];
|
|
/* type of ending charge, see IOT_CP_END_TPYE_XXX */
|
|
uint8_t end_type;
|
|
/* charged time, unit: min */
|
|
uint16_t charg_time;
|
|
/* The current amount of electricity, unit: 0.01kwh */
|
|
uint32_t elect_cur;
|
|
/* The last charged current amount of electricity, unit: 0.01kwh */
|
|
uint32_t elect_last;
|
|
cp_sub_date_t date_t;
|
|
/* socket number */
|
|
uint8_t plug_num;
|
|
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_rpt_history_data_fn63_t;
|
|
|
|
typedef struct _cp_ack_history_data_fn63_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
|
|
/* search result, 0--fail, 1--success */
|
|
uint8_t result;
|
|
/* socket number */
|
|
uint8_t plug_num;
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_ack_history_data_fn63_t;
|
|
|
|
//sta report equipment status and fault information
|
|
typedef struct _cp_rpt_status_change_fn64_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
/* working status, see IOT_CP_WORK_STATE_XXX */
|
|
uint8_t work_state;
|
|
/* fault status */
|
|
cp_fault_t fault_t;
|
|
/* socket number */
|
|
uint8_t plug_num;
|
|
/* order number */
|
|
uint8_t po_num[CP_PO_NUMBER_SIZE];
|
|
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_rpt_status_change_fn64_t;
|
|
|
|
typedef struct _cp_ack_status_change_fn64_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
|
|
/* search result, 0--fail, 1--success */
|
|
uint8_t result;
|
|
/* socket number */
|
|
uint8_t plug_num;
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_ack_status_change_fn64_t;
|
|
|
|
//concentrator queries equipment charging data fn : 65H
|
|
typedef struct _cp_concentrator_query_data_fn65_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
|
|
/* socket number */
|
|
uint8_t plug_num;
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_concentrator_query_data_fn65_t;
|
|
|
|
//sta reply equipment charging data fn : 65H
|
|
typedef struct _cp_rsp_concentrator_query_data_fn65_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
|
|
/* order number */
|
|
uint8_t po_num[CP_PO_NUMBER_SIZE];
|
|
/* device type */
|
|
uint8_t dev_type;
|
|
/* temperature, unit: 1 Centigrade */
|
|
uint8_t tmperature;
|
|
/* charging volt, unit: 100mV */
|
|
uint16_t volt;
|
|
/* charging current, unit: mA */
|
|
uint32_t current;
|
|
/* power rate, unit: w */
|
|
uint32_t power;
|
|
/*The current amount of electricity, unit: 0.01kwh */
|
|
uint32_t elect_cur;
|
|
/*The last charged current amount of electricity, unit: 0.01kwh */
|
|
uint32_t elect_last;
|
|
/* charged time, unit: min */
|
|
uint16_t charg_time;
|
|
/* leak-current, unit: mA */
|
|
uint16_t leak_current;
|
|
/* voltage frequnce, unit: 0.01HZ */
|
|
uint16_t freq;
|
|
/* power factor, unit: 0.01 */
|
|
uint8_t factor;
|
|
/* socket number */
|
|
uint8_t plug_num;
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
}cp_rsp_concentrator_query_data_fn65_t;
|
|
|
|
//query meter data fn : 80H
|
|
typedef struct _cp_query_meter_data_fn80_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_query_meter_data_fn80_t;
|
|
|
|
//node reply meter data fn : 80H
|
|
typedef struct _cp_rsp_meter_data_fn80_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
/* power volt, unit: 100mV */
|
|
uint16_t volt;
|
|
/* leakage current, unit: 0.1mA */
|
|
uint16_t leak_i;
|
|
/* voltage frequnce, unit: 0.01HZ */
|
|
uint16_t freq;
|
|
/* information of energe meter */
|
|
cp_plugs_em_info_t em_info[IOT_CP_MAX_PLUG_CNT];
|
|
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_rsp_meter_data_fn80;
|
|
|
|
|
|
/* reply query charging data exception fn : 65H */
|
|
typedef struct _cp_except_rsp_concentrator_query_data_fn65_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
|
|
/* search result, 0--fail, 1--success */
|
|
uint8_t result;
|
|
/* socket number */
|
|
uint8_t plug_num;
|
|
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_except_rsp_concentrator_query_data_fn65_t;
|
|
|
|
/* emergency shutdown fn : 66H */
|
|
typedef struct _cp_set_emergency_stop_fn66_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_set_emergency_stop_fn66_t;
|
|
|
|
typedef struct _cp_rsp_emergency_stop_fn66_t
|
|
{
|
|
/* frame header */
|
|
cp_frm_hdr_t hdr;
|
|
|
|
/* search result, 1--fail, 0--success */
|
|
uint8_t result;
|
|
/* cmd SN */
|
|
uint32_t signal_sn;
|
|
|
|
/* frame tail */
|
|
cp_frm_tail_t tail;
|
|
} cp_rsp_emergency_stop_fn66_t;
|
|
|
|
|
|
#pragma pack(pop)
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* _IOT_CP_TASK_H_ */
|