382 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			382 lines
		
	
	
		
			13 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 _INCLUDE_IOT_CP_SOCKET_H_
							 | 
						|||
| 
								 | 
							
								#define _INCLUDE_IOT_CP_SOCKET_H_
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/******************************************************************************/
							 | 
						|||
| 
								 | 
							
								/**************************** Defination used by Task *************************/
							 | 
						|||
| 
								 | 
							
								/******************************************************************************/
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/* event ID */
							 | 
						|||
| 
								 | 
							
								enum cp_socket_status_event_id_e {
							 | 
						|||
| 
								 | 
							
								    /* in idle status*/
							 | 
						|||
| 
								 | 
							
								    CP_SOCKET_EVENT_ID_IDLE                 = 0x00,
							 | 
						|||
| 
								 | 
							
								    /* confirm event for begaining to charge */
							 | 
						|||
| 
								 | 
							
								    CP_SOCKET_EVENT_ID_CHARG_START_CFM      = 0x01,
							 | 
						|||
| 
								 | 
							
								    /* confirm event for stopping charging */
							 | 
						|||
| 
								 | 
							
								    CP_SOCKET_EVENT_ID_CHARG_STOP_CFM       = 0x02,
							 | 
						|||
| 
								 | 
							
								    /* plug in/out */
							 | 
						|||
| 
								 | 
							
								    CP_SOCKET_EVENT_ID_PLUG_IO              = 0x03,
							 | 
						|||
| 
								 | 
							
								    /* abnormal voltage: 0ver/under volt */
							 | 
						|||
| 
								 | 
							
								    CP_SOCKET_EVENT_ID_ABNORM_VOLT          = 0x04,
							 | 
						|||
| 
								 | 
							
								    /* abnormal current: overcurrent */
							 | 
						|||
| 
								 | 
							
								    CP_SOCKET_EVENT_ID_ABNORM_CURR          = 0x05,
							 | 
						|||
| 
								 | 
							
								    /* leakage current */
							 | 
						|||
| 
								 | 
							
								    CP_SOCKET_EVENT_ID_LEAKAGE              = 0x06,
							 | 
						|||
| 
								 | 
							
								    /* ground connection error */
							 | 
						|||
| 
								 | 
							
								    CP_SOCKET_EVENT_ID_GROUND_ERR           = 0x07,
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    /* ... */
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    CP_SOCKET_EVENT_ID_UNKNOWN              = 0xFF,
							 | 
						|||
| 
								 | 
							
								};
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/* List of the command id. */
							 | 
						|||
| 
								 | 
							
								enum cp_socket_cmd_id_e {
							 | 
						|||
| 
								 | 
							
								    /* config/query parameter. */
							 | 
						|||
| 
								 | 
							
								    CP_SOCKET_CID_CONFIG                    = 0x00,
							 | 
						|||
| 
								 | 
							
								    /* query/response/indication the plug state */
							 | 
						|||
| 
								 | 
							
								    CP_SOCKET_CID_PLUG_INFO                 = 0x01,
							 | 
						|||
| 
								 | 
							
								    /* indication when event happes, see CP_SOCKET_EVENT_XX */
							 | 
						|||
| 
								 | 
							
								    CP_SOCKET_CID_STATUS_EVENT              = 0x02,
							 | 
						|||
| 
								 | 
							
								    /* periodly report data event: indicate */
							 | 
						|||
| 
								 | 
							
								    CP_SOCKET_CID_DATA_EVENT                = 0x03,
							 | 
						|||
| 
								 | 
							
								    /* set the relay state */
							 | 
						|||
| 
								 | 
							
								    CP_SOCKET_CID_RELAY_STATE               = 0x04,
							 | 
						|||
| 
								 | 
							
								    /* max command id */
							 | 
						|||
| 
								 | 
							
								    CP_SOCKET_CID_MAX                       = 0x05,
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    /* ... */
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    /* invalid opertion code */
							 | 
						|||
| 
								 | 
							
								    CP_SOCKET_INVALID                       = 0xFF,
							 | 
						|||
| 
								 | 
							
								};
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/* Operation code. */
							 | 
						|||
| 
								 | 
							
								enum cp_socket_cmd_opcode_e {
							 | 
						|||
| 
								 | 
							
								    /* command for change the meter configuration or relay state */
							 | 
						|||
| 
								 | 
							
								    CP_SOCKET_OP_CONFIG                     = 0x00,
							 | 
						|||
| 
								 | 
							
								    /* response config result error or ok to upper layer */
							 | 
						|||
| 
								 | 
							
								    CP_SOCKET_OP_CFM                        = 0x01,
							 | 
						|||
| 
								 | 
							
								    /* command for query the status or configuration */
							 | 
						|||
| 
								 | 
							
								    CP_SOCKET_OP_QUERY                      = 0x02,
							 | 
						|||
| 
								 | 
							
								    /* response query message to upper layer */
							 | 
						|||
| 
								 | 
							
								    CP_SOCKET_OP_RESPONSE                   = 0x03,
							 | 
						|||
| 
								 | 
							
								    /* indicate message to upper layer */
							 | 
						|||
| 
								 | 
							
								    CP_SOCKET_OP_INDICATION                 = 0x04,
							 | 
						|||
| 
								 | 
							
								    /* the max op number. */
							 | 
						|||
| 
								 | 
							
								    CP_SOCKET_OP_MAX                        = CP_SOCKET_OP_INDICATION,
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    /* ... */
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    /* invalid opertion code */
							 | 
						|||
| 
								 | 
							
								    CP_SOCKET_OP_INVALID                    = 0xFF,
							 | 
						|||
| 
								 | 
							
								};
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/* Return status of the command */
							 | 
						|||
| 
								 | 
							
								enum cp_socket_cmd_response_e {
							 | 
						|||
| 
								 | 
							
								    CP_SOCKET_RESP_OK                       = 0x00,
							 | 
						|||
| 
								 | 
							
								    CP_SOCKET_RESP_ERROR                    = 0x01,
							 | 
						|||
| 
								 | 
							
								    CP_SOCKET_RESP_BUSY                     = 0x02,
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    /* ... */
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    CP_SOCKET_RESP_UNKNOWN                  = 0xFF,
							 | 
						|||
| 
								 | 
							
								};
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/* reasons of command hand failure */
							 | 
						|||
| 
								 | 
							
								enum cp_socket_cmd_fail_reason_e {
							 | 
						|||
| 
								 | 
							
								    /* no failure */
							 | 
						|||
| 
								 | 
							
								    CP_SOCKET_NO_FAIL                       = 0x00,
							 | 
						|||
| 
								 | 
							
								    /* CID is not supported */
							 | 
						|||
| 
								 | 
							
								    CP_SOCKET_FAIL_CID_NOT_SUPPORT          = 0x01,
							 | 
						|||
| 
								 | 
							
								    /* op_code is not supported */
							 | 
						|||
| 
								 | 
							
								    CP_SOCKET_FAIL_OPC_NOT_SUPPORT          = 0x02,
							 | 
						|||
| 
								 | 
							
								    /* busy, not handle */
							 | 
						|||
| 
								 | 
							
								    CP_SOCKET_FAIL_BUSY                     = 0x03,
							 | 
						|||
| 
								 | 
							
								    /* parameter is invaild */
							 | 
						|||
| 
								 | 
							
								    CP_SOCKET_FAIL_PARAM_ERR                = 0x04,
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    /* ... */
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    CP_SOCKET_FAIL_UNKNOWN                  = 0xFF,
							 | 
						|||
| 
								 | 
							
								};
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/* 0:first socket..., max is the total num of sockets, all select all sockets */
							 | 
						|||
| 
								 | 
							
								enum cp_socket_id_e {
							 | 
						|||
| 
								 | 
							
								    /* the first socket */
							 | 
						|||
| 
								 | 
							
								    CP_SOCKET_ID_0   = 0,
							 | 
						|||
| 
								 | 
							
								    CP_SOCKET_ID_1   = 1,
							 | 
						|||
| 
								 | 
							
								    CP_SOCKET_ID_2   = 2,
							 | 
						|||
| 
								 | 
							
								    CP_SOCKET_ID_3   = 3,
							 | 
						|||
| 
								 | 
							
								    /* select all sockets */
							 | 
						|||
| 
								 | 
							
								    CP_SOCKET_ID_ALL = 4,
							 | 
						|||
| 
								 | 
							
								    /* the max socket num */
							 | 
						|||
| 
								 | 
							
								    CP_SOCKET_ID_MAX = CP_SOCKET_ID_ALL,
							 | 
						|||
| 
								 | 
							
								};
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#pragma pack(push)  // save the pack status
							 | 
						|||
| 
								 | 
							
								#pragma pack(1)     // 1 byte align
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								typedef struct _cp_socket_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_socket_fault_t;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/* parameter whitch will config into socket */
							 | 
						|||
| 
								 | 
							
								typedef struct _cp_socket_cmd_cfg_param_t {
							 | 
						|||
| 
								 | 
							
								    /* target plug's number, range from 0 to 3, 4 means target
							 | 
						|||
| 
								 | 
							
								    * plugs are all of the 4 plugs
							 | 
						|||
| 
								 | 
							
								    */
							 | 
						|||
| 
								 | 
							
								    uint8_t  plug_id;
							 | 
						|||
| 
								 | 
							
								    /* the rated voltage, such as 110V or 220v, unit: 1V */
							 | 
						|||
| 
								 | 
							
								    uint32_t rated_volt;
							 | 
						|||
| 
								 | 
							
								    /* the current threshold when charge full, unit:1mA(1~1000)*/
							 | 
						|||
| 
								 | 
							
								    uint16_t charge_full_i_th;
							 | 
						|||
| 
								 | 
							
								    /* the current threshold when load is over, unit:0.1A(1~160)*/
							 | 
						|||
| 
								 | 
							
								    uint16_t overload_i_th;
							 | 
						|||
| 
								 | 
							
								    /* the current threshold when leak,unit:1 mA(1~255)*/
							 | 
						|||
| 
								 | 
							
								    uint8_t  leak_i_th;
							 | 
						|||
| 
								 | 
							
								    /* threshold of open circuit */
							 | 
						|||
| 
								 | 
							
								    uint8_t  discon_cur_th;
							 | 
						|||
| 
								 | 
							
								    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 temperature 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_socket_cmd_cfg_param_t;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/* relay state */
							 | 
						|||
| 
								 | 
							
								typedef struct _cp_relay_state_t {
							 | 
						|||
| 
								 | 
							
								    /* target plug's ID, range from 0 to 3, 4 means target
							 | 
						|||
| 
								 | 
							
								    * plugs are all of the 4 plugs
							 | 
						|||
| 
								 | 
							
								    */
							 | 
						|||
| 
								 | 
							
								    uint8_t plug_id;
							 | 
						|||
| 
								 | 
							
								    bool_t  relay_state;
							 | 
						|||
| 
								 | 
							
								} cp_relay_state_t;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/* query the assigned plug's configration parameters */
							 | 
						|||
| 
								 | 
							
								typedef struct _cp_socket_cmd_query_param_t {
							 | 
						|||
| 
								 | 
							
								    /* target plug's ID, range from 0 to 3, 4 means target
							 | 
						|||
| 
								 | 
							
								    * plugs are all of the 4 plugs
							 | 
						|||
| 
								 | 
							
								    */
							 | 
						|||
| 
								 | 
							
								    uint8_t plug_id;
							 | 
						|||
| 
								 | 
							
								} cp_socket_cmd_query_param_t;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/* response the configuration prameter:  from socket task to cp_task */
							 | 
						|||
| 
								 | 
							
								typedef struct _cp_socket_cmd_param_resp_t {
							 | 
						|||
| 
								 | 
							
								    /* how many plug's config parameter containd by the pkt */
							 | 
						|||
| 
								 | 
							
								    uint8_t                    plug_cnt;
							 | 
						|||
| 
								 | 
							
								    /* plug's parameter setting data */
							 | 
						|||
| 
								 | 
							
								    cp_socket_cmd_cfg_param_t  param[0];
							 | 
						|||
| 
								 | 
							
								} cp_socket_cmd_param_resp_t;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/* single plug's meter data */
							 | 
						|||
| 
								 | 
							
								typedef struct _cp_socket_plug_meter_data_t {
							 | 
						|||
| 
								 | 
							
								    /* charging current, unit: mA */
							 | 
						|||
| 
								 | 
							
								    uint32_t charging_i;
							 | 
						|||
| 
								 | 
							
								    /* power rate, unit: w */
							 | 
						|||
| 
								 | 
							
								    uint32_t power_rate;
							 | 
						|||
| 
								 | 
							
								    /*The amount of electricity since power on, unit: 0.01kwh */
							 | 
						|||
| 
								 | 
							
								    uint32_t pwr_consum;
							 | 
						|||
| 
								 | 
							
								    /* power factor, unit: 0.01 */
							 | 
						|||
| 
								 | 
							
								    uint8_t  pwr_factor;
							 | 
						|||
| 
								 | 
							
								} cp_socket_plug_meter_data_t;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/* single plug's info include meter data and plugin status,fault status */
							 | 
						|||
| 
								 | 
							
								typedef struct _cp_socket_plug_info_t {
							 | 
						|||
| 
								 | 
							
								    /* plug's ID, range from 0 to 3, 4 means all */
							 | 
						|||
| 
								 | 
							
								    uint8_t                     plug_id;
							 | 
						|||
| 
								 | 
							
								    /* plug's meter data */
							 | 
						|||
| 
								 | 
							
								    cp_socket_plug_meter_data_t meter_data;
							 | 
						|||
| 
								 | 
							
								    /* Monitor plug or unplug state. 0--unpluged, 1--plugged */
							 | 
						|||
| 
								 | 
							
								    bool_t                      is_plug_in;
							 | 
						|||
| 
								 | 
							
								    /* incumbent volt of plug, unit: 100mv  */
							 | 
						|||
| 
								 | 
							
								    uint32_t                    incumbent_v;
							 | 
						|||
| 
								 | 
							
								    /* fault status */
							 | 
						|||
| 
								 | 
							
								    cp_socket_fault_t           fault_status;
							 | 
						|||
| 
								 | 
							
								    /* relay state */
							 | 
						|||
| 
								 | 
							
								    bool_t                      relay_state;
							 | 
						|||
| 
								 | 
							
								} cp_socket_plug_info_t;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/* report/response the plug infor from meter_task to cp_task */
							 | 
						|||
| 
								 | 
							
								typedef struct _cp_socket_cmd_plug_info_resp_t {
							 | 
						|||
| 
								 | 
							
								    /* count of plug containd by the pkt */
							 | 
						|||
| 
								 | 
							
								    uint8_t               plug_cnt;
							 | 
						|||
| 
								 | 
							
								    /* charging volt, unit: 100mV */
							 | 
						|||
| 
								 | 
							
								    uint32_t              volt;
							 | 
						|||
| 
								 | 
							
								    /* leak-current, unit: mA */
							 | 
						|||
| 
								 | 
							
								    uint32_t              leak_i;
							 | 
						|||
| 
								 | 
							
								    /* voltage frequnce, unit: 0.01HZ */
							 | 
						|||
| 
								 | 
							
								    uint32_t              freq;
							 | 
						|||
| 
								 | 
							
								    /* plug info data */
							 | 
						|||
| 
								 | 
							
								    cp_socket_plug_info_t plug_info[0];
							 | 
						|||
| 
								 | 
							
								} cp_socket_cmd_plug_info_resp_t;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/* query the assigned plug's info */
							 | 
						|||
| 
								 | 
							
								typedef struct _cp_socket_cmd_query_plug_info_t {
							 | 
						|||
| 
								 | 
							
								     /* target plug's ID, range from 0 to 3, 4 means target
							 | 
						|||
| 
								 | 
							
								     * plugs are all of the 4 plugs
							 | 
						|||
| 
								 | 
							
								     */
							 | 
						|||
| 
								 | 
							
								    uint8_t plug_id;
							 | 
						|||
| 
								 | 
							
								} cp_socket_cmd_query_plug_info_t;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/* once a config command was sent, confirm should be rececived */
							 | 
						|||
| 
								 | 
							
								typedef struct _cp_socket_cmd_confirm_t {
							 | 
						|||
| 
								 | 
							
								    /* result of the confirm for cmd, 0--successful, none 0-- failed */
							 | 
						|||
| 
								 | 
							
								    uint8_t result;
							 | 
						|||
| 
								 | 
							
								    /* failure reason */
							 | 
						|||
| 
								 | 
							
								    uint8_t reason;
							 | 
						|||
| 
								 | 
							
								} cp_socket_cmd_confirm_t;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/* query the assigned plug's info */
							 | 
						|||
| 
								 | 
							
								typedef struct _cp_socket_cmd_query_fault_info_t {
							 | 
						|||
| 
								 | 
							
								     /* target plug's ID, range from 0 to 3, 4 means target
							 | 
						|||
| 
								 | 
							
								     * plugs are all of the 4 plugs
							 | 
						|||
| 
								 | 
							
								     */
							 | 
						|||
| 
								 | 
							
								    uint8_t plug_id;
							 | 
						|||
| 
								 | 
							
								} cp_socket_cmd_query_fault_info_t;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/* each socket fault source. */
							 | 
						|||
| 
								 | 
							
								typedef struct _cp_socket_cmd_fault_src_t {
							 | 
						|||
| 
								 | 
							
								    /* target plug's ID, range from 0 to 3, 4 means target
							 | 
						|||
| 
								 | 
							
								    * plugs are all of the 4 plugs
							 | 
						|||
| 
								 | 
							
								    */
							 | 
						|||
| 
								 | 
							
								    uint8_t             plug_id;
							 | 
						|||
| 
								 | 
							
								    /* source of fault  */
							 | 
						|||
| 
								 | 
							
								    cp_socket_fault_t   fault_src;
							 | 
						|||
| 
								 | 
							
								} cp_socket_cmd_fault_src_t;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/* report when fault status event occer. */
							 | 
						|||
| 
								 | 
							
								typedef struct _cp_socket_cmd_fault_rpt_t {
							 | 
						|||
| 
								 | 
							
								    /* how many sockets fault status response or indicate */
							 | 
						|||
| 
								 | 
							
								    uint8_t                     plug_cnt;
							 | 
						|||
| 
								 | 
							
								    /* fault status data  */
							 | 
						|||
| 
								 | 
							
								    cp_socket_cmd_fault_src_t   fault[0];
							 | 
						|||
| 
								 | 
							
								} cp_socket_cmd_fault_rpt_t;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/* report the plug's data periodcaly */
							 | 
						|||
| 
								 | 
							
								typedef struct _cp_socket_cmd_event_data_rpt_t {
							 | 
						|||
| 
								 | 
							
								    /* count of plug containd by the pkt */
							 | 
						|||
| 
								 | 
							
								    uint8_t                 plug_cnt;
							 | 
						|||
| 
								 | 
							
								    /* charging volt, unit: 100mV */
							 | 
						|||
| 
								 | 
							
								    uint32_t                volt;
							 | 
						|||
| 
								 | 
							
								    /* leak-current, unit: mA */
							 | 
						|||
| 
								 | 
							
								    uint32_t                leak_i;
							 | 
						|||
| 
								 | 
							
								    /* voltage frequnce, unit: 0.01HZ */
							 | 
						|||
| 
								 | 
							
								    uint32_t                freq;
							 | 
						|||
| 
								 | 
							
								    /* plug info data, inlcude meter data and event data */
							 | 
						|||
| 
								 | 
							
								    cp_socket_plug_info_t   plug_info[0];
							 | 
						|||
| 
								 | 
							
								} cp_socket_cmd_event_data_rpt_t;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/* report the plug's info periodcaly */
							 | 
						|||
| 
								 | 
							
								typedef struct _cp_socket_cmd_event_status_t {
							 | 
						|||
| 
								 | 
							
								    /* event id, see EVENT_ID_XXX */
							 | 
						|||
| 
								 | 
							
								    uint8_t                     event_id;
							 | 
						|||
| 
								 | 
							
								    /* plug id, see CP_SOCKET_ID_X */
							 | 
						|||
| 
								 | 
							
								    uint8_t                     plug_id;
							 | 
						|||
| 
								 | 
							
								    /* source of fault */
							 | 
						|||
| 
								 | 
							
								    cp_socket_fault_t           fault_src;
							 | 
						|||
| 
								 | 
							
								    /* Monitor plug or unplug state. 0--unpluged, 1--plugged */
							 | 
						|||
| 
								 | 
							
								    bool_t                      is_plug_in;
							 | 
						|||
| 
								 | 
							
								    /* incumbent volt of plug, unit: 100mv */
							 | 
						|||
| 
								 | 
							
								    uint32_t                    incumbent_v;
							 | 
						|||
| 
								 | 
							
								    /* charging volt, unit: 100mV */
							 | 
						|||
| 
								 | 
							
								    uint32_t                    volt;
							 | 
						|||
| 
								 | 
							
								    /* leak-current, unit: mA */
							 | 
						|||
| 
								 | 
							
								    uint32_t                    leak_i;
							 | 
						|||
| 
								 | 
							
								    /* plug's meter data, uplayer may want to known the exact value */
							 | 
						|||
| 
								 | 
							
								    cp_socket_plug_meter_data_t meter_data;
							 | 
						|||
| 
								 | 
							
								} cp_socket_cmd_event_status_t;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								typedef struct _cp_socket_hdr_t {
							 | 
						|||
| 
								 | 
							
								    /* Reference to enum cp_socket_cmd_id_e */
							 | 
						|||
| 
								 | 
							
								    uint8_t         cid;
							 | 
						|||
| 
								 | 
							
								    /* Reference to enum cp_socket_cmd_opcode_e */
							 | 
						|||
| 
								 | 
							
								    uint8_t         opcode;
							 | 
						|||
| 
								 | 
							
								} cp_socket_hdr_t;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/* The argument for charging pile socket command handle. */
							 | 
						|||
| 
								 | 
							
								typedef struct _cp_socket_cmd_arg_t {
							 | 
						|||
| 
								 | 
							
								    /* command header */
							 | 
						|||
| 
								 | 
							
								    cp_socket_hdr_t hdr;
							 | 
						|||
| 
								 | 
							
								    /* the priority of this command. */
							 | 
						|||
| 
								 | 
							
								    uint16_t        prio;
							 | 
						|||
| 
								 | 
							
								    uint16_t        dlen;
							 | 
						|||
| 
								 | 
							
								    /* if need ack */
							 | 
						|||
| 
								 | 
							
								    uint16_t        need_ack;
							 | 
						|||
| 
								 | 
							
								    /* the argument for this command. */
							 | 
						|||
| 
								 | 
							
								    uint8_t         arg[0];
							 | 
						|||
| 
								 | 
							
								} cp_socket_cmd_arg_t;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#pragma pack(pop)
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								typedef uint32_t(*cp_socket_resp_cb)(iot_pkt_t *pkt);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/* Initialize the iot charging pile socket module. */
							 | 
						|||
| 
								 | 
							
								uint32_t cp_socket_task_init(void);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/* De-initializing charging pile socket module. */
							 | 
						|||
| 
								 | 
							
								void cp_socket_task_deinit(void);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/* API function for charging pile task to send cmd to charging pile socket. */
							 | 
						|||
| 
								 | 
							
								/* for cp socket is to receive cmds; for cp task is to send cmds */
							 | 
						|||
| 
								 | 
							
								uint32_t cp_socket_cmd_send_mssage(iot_pkt_t *arg);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/* Charging pile task registed callback. Charging pile socket use to
							 | 
						|||
| 
								 | 
							
								 * response command previous received. Cmd-Resp works as ping-pong method.
							 | 
						|||
| 
								 | 
							
								 * Hook interface with charging pile task.
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								uint32_t cp_socket_register(cp_socket_resp_cb cb);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#endif
							 |