680 lines
25 KiB
C
680 lines
25 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 IOT_CLI_SG_API_H
|
|
#define IOT_CLI_SG_API_H
|
|
|
|
#include "os_types_api.h"
|
|
|
|
#include "iot_pkt_api.h"
|
|
#include "iot_utils_api.h"
|
|
#include "iot_config_api.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#if (PLC_SUPPORT_CCO_ROLE || \
|
|
((IOT_STA_CONTROL_MODE == IOT_STA_CONTROL_TYPE_STA) && \
|
|
(IOT_SG_CONTROLLER_ENABLE == 1)) || IOT_SMART_CONFIG)
|
|
/* cli and sg Transmission channel */
|
|
#define IOT_CLI_SG_INTERFACE_ENABLE 1
|
|
#else
|
|
#define IOT_CLI_SG_INTERFACE_ENABLE 0
|
|
#endif
|
|
|
|
#pragma pack(push) /* save the pack status */
|
|
#pragma pack(1) /* 1 byte align */
|
|
|
|
/* message id used for cli report message to sg */
|
|
#define IOT_CLI_SG_MSG_START_METER_LIST (0x1)
|
|
#define IOT_CLI_SG_MSG_STOP_METER_LIST (0x2)
|
|
#define IOT_CLI_SG_MSG_GET_METER_LIST (0x3)
|
|
#define IOT_CLI_SG_MSG_QUERY_WL_STATE (0x4)
|
|
#define IOT_CLI_SG_MSG_QUERY_WL (0x5)
|
|
#define IOT_CLI_SG_MSG_ADD_WL (0x6)
|
|
#define IOT_CLI_SG_MSG_RM_WL (0x7)
|
|
#define IOT_CLI_SG_MSG_SET_WL_STATE (0x8)
|
|
#define IOT_CLI_SG_MSG_GET_METER (0x9)
|
|
#define IOT_CLI_SG_MSG_QUERY_UPGRADE_STATUS (0xA)
|
|
#define IOT_CLI_SG_MSG_QUERY_UPGRADE_PROGRESS (0xB)
|
|
#define IOT_CLI_SG_MSG_SET_TSFM_DETECT_STATE (0xC)
|
|
#define IOT_CLI_SG_MSG_QUERY_TSFM_DETECT_STATE (0xD)
|
|
#define IOT_CLI_SG_MSG_HANDLE_USER_DATA (0xE)
|
|
#define IOT_CLI_SG_MSG_SET_EVENT_RPT_ENABLED (0xF)
|
|
#define IOT_CLI_SG_MSG_GET_RT_METER (0x10)
|
|
#define IOT_CLI_SG_MSG_SET_CCTT_DATA_ENABLED (0x11)
|
|
#define IOT_CLI_SG_MSG_SET_CON_MR_PARAM (0x12)
|
|
#define IOT_CLI_SG_MSG_QUERY_CON_MR_PARAM (0x13)
|
|
#define IOT_CLI_SG_MSG_PLC_MGR_STATE_CHANGE (0x14)
|
|
#define IOT_CLI_SG_MSG_GET_REPORT_ACK (0x15)
|
|
#define IOT_CLI_SG_MSG_BD_START (0x16)
|
|
#define IOT_CLI_SG_MSG_BD_QUERY_STATE (0x17)
|
|
#define IOT_CLI_SG_MSG_BD_QUERY_RESULT (0x18)
|
|
#define IOT_CLI_SG_MSG_SET_ESP (0x19)
|
|
#define IOT_CLI_SG_MSG_QUERY_ESP (0x1A)
|
|
#define IOT_CLI_SG_MSG_QUERY_NODE_INFO (0x1B)
|
|
#define IOT_CLI_SG_MSG_SEND_BROADCAST_DATA (0x1C)
|
|
#define IOT_CLI_SG_MSG_SET_MAC (0x1D)
|
|
#define IOT_CLI_SG_TRANS_LOCAL_PROTO_DATA (0x1E)
|
|
|
|
/* message id used for sg report message to cli */
|
|
#define IOT_CLI_SG_MSG_RPT_START_METER_LIST (0x1)
|
|
#define IOT_CLI_SG_MSG_RPT_STOP_METER_LIST (0x2)
|
|
#define IOT_CLI_SG_MSG_RPT_SEARCH_METER_DONE (0x3)
|
|
#define IOT_CLI_SG_MSG_RPT_METER_LIST (0x4)
|
|
#define IOT_CLI_SG_MSG_RPT_WL_STATE (0x5)
|
|
#define IOT_CLI_SG_MSG_RPT_WL (0x6)
|
|
#define IOT_CLI_SG_MSG_RPT_ADD_WL (0x7)
|
|
#define IOT_CLI_SG_MSG_RPT_RM_WL (0x8)
|
|
#define IOT_CLI_SG_MSG_RPT_SET_WL_STATE (0x9)
|
|
#define IOT_CLI_SG_MSG_PRT_SEARCH_METER_LIST (0xA)
|
|
#define IOT_CLI_SG_MSG_PRT_METER (0xB)
|
|
#define IOT_CLI_SG_MSG_PRT_METER_DATA (0xC)
|
|
#define IOT_CLI_SG_MSG_PRT_UPGRADE_STATUS (0xD)
|
|
#define IOT_CLI_SG_MSG_PRT_UPGRADE_PROGRESS (0xE)
|
|
#define IOT_CLI_SG_MSG_RPT_EVT_DATA (0xF)
|
|
#define IOT_CLI_SG_MSG_RPT_SET_TSFM_DETECT_STATE (0x10)
|
|
#define IOT_CLI_SG_MSG_RPT_TSFM_DETECT_STATE (0x11)
|
|
#define IOT_CLI_SG_MSG_RPT_USER_DATA (0x12)
|
|
#define IOT_CLI_SG_MSG_RPT_SET_EVENT_RPT_ENABLED (0x13)
|
|
#define IOT_CLI_SG_MSG_PRT_RT_REQ_MR_DATA (0x14)
|
|
#define IOT_CLI_SG_MSG_RPT_SET_CCTT_DATA_ENABLED (0x15)
|
|
#define IOT_CLI_SG_MSG_RPT_SET_CON_MR_PARAM (0x16)
|
|
#define IOT_CLI_SG_MSG_RPT_QUERY_CON_MR_PARAM (0x17)
|
|
#define IOT_CLI_SG_MSG_RPT_CONFIG_INFO (0x18)
|
|
#define IOT_CLI_SG_MSG_RPT_BD_START (0x19)
|
|
#define IOT_CLI_SG_MSG_RPT_BD_QUERY_STATE (0x1A)
|
|
#define IOT_CLI_SG_MSG_RPT_BD_QUERY_RESULT (0x1B)
|
|
#define IOT_CLI_SG_MSG_RPT_ESP_RESULT (0x1C)
|
|
#define IOT_CLI_SG_MSG_RPT_NODE_INFO (0x1D)
|
|
#define IOT_CLI_SG_MSG_RPT_SEND_BROADCAST_DATA (0x1E)
|
|
#define IOT_CLI_SG_MSG_RPT_MAC (0x1F)
|
|
#define IOT_CLI_SG_MSG_RPT_LOCAL_PROTO_DATA (0x20)
|
|
|
|
/* Message request identification */
|
|
#define IOT_CLI_SG_REQ_ID_DEFAULT (0x0)
|
|
|
|
/* sg register cli interface result */
|
|
#define IOT_CLI_SG_REGISTER_SUCCESS (0x0)
|
|
#define IOT_CLI_SG_REGISTER_FAILURE (0x1)
|
|
|
|
/* meter communication protocol on plc */
|
|
#define IOT_CLI_SG_PROTO_TYPE_RAW_DATA (0x00)
|
|
#define IOT_CLI_SG_PROTO_TYPE_645_1997 (0x01)
|
|
#define IOT_CLI_SG_PROTO_TYPE_645_2007 (0x02)
|
|
#define IOT_CLI_SG_PROTO_TYPE_698 (0x03)
|
|
|
|
/* meter device type on plc */
|
|
#define IOT_CLI_SG_DEVICE_TYPE_COLLECTOR (0)
|
|
#define IOT_CLI_SG_DEVICE_TYPE_STA (1)
|
|
|
|
/* always disable white list */
|
|
#define IOT_CLI_SG_WL_STATE_DISABLE (0)
|
|
/* always enable white list */
|
|
#define IOT_CLI_SG_WL_STATE_ENABLE (1)
|
|
/* if cctt and meter entry exist, enable white list,
|
|
* else disable white list.
|
|
*/
|
|
#define IOT_CLI_SG_WL_STATE_AUTO (2)
|
|
|
|
/* route meter reading action */
|
|
/* start route meter read */
|
|
#define IOT_CLI_SG_RT_START_MR_CMD (1)
|
|
/* running route meter read */
|
|
#define IOT_CLI_SG_RT_RUNNING_MR_CMD (2)
|
|
/* stop route meter read */
|
|
#define IOT_CLI_SG_RT_STOP_MR_CMD (3)
|
|
|
|
/* reserved length of the data */
|
|
#define IOT_CLI_SG_RSVD_LEN (16)
|
|
|
|
/** extention cli error is based on the common error in iot_errno_api.h */
|
|
#define EXTEN_CLI_ERRNO_BASE (0x80)
|
|
/** errno report to plc manager */
|
|
/** exceed support count for devices */
|
|
#define EXCEED_DEV_MAX_CONCURRENT_COUNT (EXTEN_CLI_ERRNO_BASE + 0x01)
|
|
/** exceed support pkt count for devices */
|
|
#define EXCEED_DEV_PKT_COUNT (EXTEN_CLI_ERRNO_BASE + 0x02)
|
|
|
|
#define IOT_CLI_SG_RSVD_RSP (1)
|
|
#define IOT_CLI_SG_MR_DATA_RSP (2)
|
|
#define IOT_CLI_SG_EVT_DATA_RSP (3)
|
|
#define IOT_CLI_SG_SEC_NODE_REG_DATA_RSP (4)
|
|
|
|
/* branch detect state */
|
|
#define IOT_CLI_SG_BD_CLEAR (0)
|
|
#define IOT_CLI_SG_BD_SHOOT (1)
|
|
#define IOT_CLI_SG_BD_TOPO_GEN (2)
|
|
#define IOT_CLI_SG_BD_DONE (3)
|
|
|
|
/* branch detect node special father index */
|
|
#define IOT_CLI_SG_BD_FATHER_CCO (0)
|
|
#define IOT_CLI_SG_BD_FATHER_INVALID (0xFFFF)
|
|
|
|
/* device type */
|
|
#define IOT_CLI_SG_DEV_TYPE_POWER_METER (1)
|
|
#define IOT_CLI_SG_DEV_TYPE_POWER_METER_3P (2)
|
|
#define IOT_CLI_SG_DEV_TYPE_SWITCH_MONITOR (3)
|
|
#define IOT_CLI_SG_DEV_TYPE_TSFM_MONITOR (4)
|
|
#define IOT_CLI_SG_DEV_TYPE_BRK_MONITOR (5)
|
|
|
|
#define IOT_CLI_SG_MODULE_ID_LEN (11)
|
|
/* node info report max count */
|
|
#define IOT_CLI_SG_NODE_RPT_MAX_CNT (64)
|
|
|
|
/** cli and sg transfer data msg header */
|
|
typedef struct _iot_cli_sg_msg_header {
|
|
/** msg id */
|
|
uint8_t msg_id;
|
|
/** request id */
|
|
uint8_t req_id;
|
|
/** reserved for future */
|
|
uint16_t reserved;
|
|
} iot_cli_sg_msg_header_t;
|
|
|
|
/**
|
|
* @brief (*iot_cli_sg_recv_func_t)() - callback to receive event from
|
|
* cli host.
|
|
* @param param: parameter registered in iot_cli_sg_interface_register
|
|
* @param pkt: buffer to store the event detail, application should call
|
|
* iot_free_pkt function ASAP to free the iot_pkt_t. it's very
|
|
* scarce resource.
|
|
*/
|
|
typedef void(*iot_cli_sg_recv_func_t)(void *param, iot_pkt_t *pkt);
|
|
|
|
/** sg config */
|
|
typedef struct _iot_cli_sg_config {
|
|
uint8_t proto;
|
|
} iot_cli_sg_config_t;
|
|
|
|
/** sg result */
|
|
typedef struct _iot_cli_sg_result {
|
|
/** see ERR_XXX */
|
|
uint32_t result;
|
|
} iot_cli_sg_result_t;
|
|
|
|
typedef struct _iot_cli_sg_interface {
|
|
/** callback to receive event from cli host */
|
|
iot_cli_sg_recv_func_t recv;
|
|
/** parameter that will be transferred back alone with the callback */
|
|
void *param;
|
|
} iot_cli_sg_interface_t;
|
|
|
|
/** report data that from meter */
|
|
typedef struct _iot_cli_sg_rpt_mr_data_ul {
|
|
/** reserved space for future use. */
|
|
uint8_t reserved[IOT_CLI_SG_RSVD_LEN];
|
|
/** ack of the meter reading */
|
|
uint8_t result;
|
|
/** pm proto type : 645 698 and so on */
|
|
uint8_t proto_type;
|
|
/** pm mac address */
|
|
uint8_t mac[IOT_MAC_ADDR_LEN];
|
|
/** packet serial number */
|
|
uint8_t sn;
|
|
/** length of the data variable */
|
|
uint16_t datalen;
|
|
/** pm effective data up link */
|
|
uint8_t data[0];
|
|
} iot_cli_sg_rpt_mr_data_ul;
|
|
|
|
/** read meter type - cctt active read meter from plc manager down link */
|
|
typedef struct _iot_cli_sg_rpt_mr_data_dl {
|
|
/** reserved space for future use. */
|
|
uint8_t reserved[IOT_CLI_SG_RSVD_LEN];
|
|
/** cctt active read meter or cctt active concurrently read meter */
|
|
uint8_t mr_type;
|
|
/** pm proto type : 645 698 and so on */
|
|
uint8_t proto_type;
|
|
/** pm mac address */
|
|
uint8_t mac[IOT_MAC_ADDR_LEN];
|
|
/** packet serial number */
|
|
uint8_t sn;
|
|
/** length of the data variable */
|
|
uint16_t data_len;
|
|
/** cli effective data down link */
|
|
uint8_t data[0];
|
|
} iot_cli_sg_rpt_mr_data_dl;
|
|
|
|
/** request route meter reading data up link */
|
|
typedef struct _iot_cli_sg_requst_rt_mr_data_ul {
|
|
/** reserved space for future use. */
|
|
uint8_t reserved[IOT_CLI_SG_RSVD_LEN];
|
|
/** packet serial number */
|
|
uint8_t sn;
|
|
/** 0 - complete meter reading, 1 - request reading data */
|
|
uint8_t opt_flag;
|
|
/** pm phase msg */
|
|
uint8_t phase;
|
|
/** pm mac address */
|
|
uint8_t mac_addr[IOT_MAC_ADDR_LEN];
|
|
/** secondary node index */
|
|
uint16_t node_index;
|
|
}iot_cli_request_rt_mr_data_ul;
|
|
|
|
/** read meter type - cctt active route read meter from plc manager down link */
|
|
typedef struct _iot_cli_sg_rpt_rt_mr_data_dl {
|
|
/** reserved space for future use. */
|
|
uint8_t reserved[IOT_CLI_SG_RSVD_LEN];
|
|
/**
|
|
* operate flag
|
|
* 0 invalid
|
|
* others : see IOT_CLI_SG_RT_XX_MR_CMD
|
|
*/
|
|
uint8_t action;
|
|
/** read flag - 0 read fail 1 read successful 2 ready read */
|
|
uint8_t read_flag;
|
|
/** pm proto type : 645 698 and so on */
|
|
uint8_t proto_type;
|
|
/** pm mac address */
|
|
uint8_t mac[IOT_MAC_ADDR_LEN];
|
|
/** packet serial number */
|
|
uint8_t sn;
|
|
/** length of the data variable */
|
|
uint8_t data_len;
|
|
/** cli down effective data */
|
|
uint8_t data[0];
|
|
} iot_cli_sg_rpt_rt_mr_data_dl;
|
|
|
|
/** report ack - report ack from plc manager down link */
|
|
typedef struct _iot_cli_sg_rpt_ack_dl {
|
|
/** reserved space for future use. */
|
|
uint8_t reserved[IOT_CLI_SG_RSVD_LEN];
|
|
/**
|
|
* ack type: IOT_BUF_DT_XX
|
|
* for example: IOT_BUF_DT_SG_METER_DATA,IOT_BUF_DT_EVT_RPT...
|
|
*/
|
|
uint8_t type;
|
|
/** result : see ERR_XX */
|
|
uint32_t result;
|
|
/** packet serial number */
|
|
uint8_t sn;
|
|
} iot_cli_sg_rpt_ack_dl_t;
|
|
|
|
/** request upgrade progress */
|
|
typedef struct _iot_cli_sg_upgrade_progress_dl {
|
|
uint16_t start_index;
|
|
uint16_t dst_num;
|
|
} iot_cli_sg_upgrade_progress_dl;
|
|
|
|
/** start sec node reg */
|
|
typedef struct _iot_cli_sg_start_sec_node_reg_dl {
|
|
/** reserved space for future use. */
|
|
uint8_t reserved[IOT_CLI_SG_RSVD_LEN];
|
|
/** sec node registration duration. unit is 1 min. */
|
|
uint16_t duration;
|
|
} iot_cli_sg_start_sec_node_reg_dl_t;
|
|
|
|
typedef struct _iot_cli_sg_get_sec_node_info_dl {
|
|
/** query start node index */
|
|
uint16_t sec_node_start_index;
|
|
/** query node count */
|
|
uint8_t sec_node_count;
|
|
} iot_cli_sg_get_sec_node_info_dl_t;
|
|
|
|
/** sec node info */
|
|
typedef struct _iot_cli_sg_sec_node_info {
|
|
/** meter mac address */
|
|
uint8_t meter_mac[IOT_MAC_ADDR_LEN];
|
|
/** station mac address */
|
|
uint8_t sta_mac[IOT_MAC_ADDR_LEN];
|
|
/** proto type, see IOT_CLI_SG_PROTO_TYPE_xxx */
|
|
uint8_t proto_type :4,
|
|
/** device type, see IOT_CLI_SG_DEVICE_TYPE_xxx */
|
|
dev_type :4;
|
|
} iot_cli_sg_sec_node_info_t;
|
|
|
|
/** sec node info report */
|
|
typedef struct _iot_cli_sg_rpt_sec_node_info_ul {
|
|
/** reserved space for future use. */
|
|
uint8_t reserved[IOT_CLI_SG_RSVD_LEN];
|
|
/** data serial number */
|
|
uint8_t sn;
|
|
/** this time report node total count */
|
|
uint16_t sec_node_count;
|
|
/** this time report node count */
|
|
uint8_t rsp_sec_node_count;
|
|
/** sec node information */
|
|
iot_cli_sg_sec_node_info_t node_info[0];
|
|
} iot_cli_sg_rpt_sec_node_info_ul_t;
|
|
|
|
/** wl node info */
|
|
typedef struct _iot_cli_sg_node_info {
|
|
/** mac address of secondary node */
|
|
uint8_t mac[IOT_MAC_ADDR_LEN];
|
|
/** protocol the node supports, see IOT_CLI_SG_PROTO_TYPE_xxx */
|
|
uint8_t proto_type;
|
|
} iot_cli_sg_node_info_t;
|
|
|
|
/** query white list */
|
|
typedef struct _iot_cli_sg_query_wl {
|
|
/** query start node index */
|
|
uint16_t start_index;
|
|
/** query node count */
|
|
uint16_t count;
|
|
} iot_cli_sg_query_wl_t;
|
|
|
|
typedef struct _iot_cli_sg_rpt_wl {
|
|
/** report node total count */
|
|
uint16_t total_count;
|
|
/** this time report node count */
|
|
uint8_t rsp_count;
|
|
/** sec node information */
|
|
iot_cli_sg_node_info_t node_info[0];
|
|
} iot_cli_sg_rpt_wl_t;
|
|
|
|
/** add wl */
|
|
typedef struct _iot_cli_sg_add_wl {
|
|
/** count of meter mac */
|
|
uint8_t count;
|
|
/** info of node for wl operation */
|
|
iot_cli_sg_node_info_t node_info[0];
|
|
} iot_cli_sg_add_wl_t;
|
|
|
|
/** rm wl */
|
|
typedef struct _iot_cli_sg_rm_wl {
|
|
/** count of meter mac */
|
|
uint8_t count;
|
|
/** mac address array */
|
|
uint8_t mac_addr[0][IOT_MAC_ADDR_LEN];
|
|
} iot_cli_sg_rm_wl_t;
|
|
|
|
/** set white list state */
|
|
typedef struct _iot_cli_sg_set_wl_state {
|
|
/** white list state, see IOT_CLI_SG_WL_STATE_XXX */
|
|
uint8_t state;
|
|
} iot_cli_sg_set_wl_state_t;
|
|
|
|
/** white list state */
|
|
typedef struct _iot_cli_sg_rpt_wl_state {
|
|
/** white list state, see IOT_CLI_SG_WL_STATE_XXX */
|
|
uint8_t state;
|
|
} iot_cli_sg_rpt_wl_state_t;
|
|
|
|
/** report event data */
|
|
typedef struct _iot_cli_sg_rpt_evt_data {
|
|
/** data serial number */
|
|
uint8_t sn;
|
|
/** device type, see IOT_SG_CCO_DEV_TYPE_XXX. */
|
|
uint8_t dev_type;
|
|
/** protocol type, see PROTO_TYPE_XXX */
|
|
uint8_t proto_type;
|
|
/** data len */
|
|
uint16_t data_len;
|
|
/** event data */
|
|
uint8_t data[0];
|
|
} iot_cli_sg_rpt_evt_data_t;
|
|
|
|
/* recv cli user data */
|
|
typedef struct _iot_cli_sg_user_data_dl {
|
|
/** source mac the data come from */
|
|
uint8_t src_mac[IOT_MAC_ADDR_LEN];
|
|
/** data len */
|
|
uint16_t data_len;
|
|
/** data */
|
|
uint8_t data[0];
|
|
} iot_cli_sg_user_data_dl_t;
|
|
|
|
/** send user data */
|
|
typedef struct _iot_cli_sg_send_user_data {
|
|
/** target mac */
|
|
uint8_t target_mac[IOT_MAC_ADDR_LEN];
|
|
/** data len */
|
|
uint16_t data_len;
|
|
/** data */
|
|
uint8_t data[0];
|
|
} iot_cli_sg_send_user_data_t;
|
|
|
|
/** cco event enabled setting down link */
|
|
typedef struct _iot_cli_sg_set_event_enabled_dl {
|
|
/** enable event report sw */
|
|
uint8_t event_enabled;
|
|
} iot_cli_sg_set_event_enabled_t;
|
|
|
|
/** cco don't deal with data from cctt */
|
|
typedef struct _iot_cli_sg_set_cctt_data_enabled_dl {
|
|
/** do deal with cctt data */
|
|
uint8_t cctt_data_enabled;
|
|
} iot_cli_sg_set_cctt_data_enabled_t;
|
|
|
|
/** set transformer detect state */
|
|
typedef struct _iot_cli_sg_set_tsfm_detect_state {
|
|
/** transformer detect state, 0 - disabled, 1 - enabled */
|
|
uint8_t tsfm_detect_state;
|
|
/** station lock, 0 - unlock station, 1 - lock station */
|
|
uint8_t sta_lock;
|
|
} iot_cli_sg_set_tsfm_detect_state_t;
|
|
|
|
/** query transformer detect state */
|
|
typedef struct _iot_cli_sg_rpt_tsfm_detect_state {
|
|
/** transformer detect state, 0 - disabled, 1 - enabled */
|
|
uint8_t tsfm_detect_state;
|
|
/** station lock, 0 - unlock station, 1 - lock station */
|
|
uint8_t sta_lock;
|
|
/** transformer detect progress, 0 - done, 1- doing */
|
|
uint8_t tsfm_detect_progress;
|
|
} iot_cli_sg_rpt_tsfm_detect_state_t;
|
|
|
|
/** concurrence meter reading param */
|
|
typedef struct _iot_cli_sg_con_mr_param {
|
|
/** default meter reading timeout, unit is 1s.
|
|
* for cco set sec node max timeout before. the min value is 20.
|
|
* 0 means doesn't change the value.
|
|
*/
|
|
uint8_t sec_node_monitor_timeout;
|
|
/** bcast meter reading max concurrent count.
|
|
* 0 means doesn't change the value.
|
|
*/
|
|
uint8_t max_bcast_con_count;
|
|
} iot_cli_sg_con_mr_param_t;
|
|
|
|
/** cli notify plc mgr state to sg */
|
|
typedef struct _iot_cli_sg_plc_mgr_state_change {
|
|
/** new state of plc mgr */
|
|
uint8_t state;
|
|
} iot_cli_sg_plc_mgr_state_change_t;
|
|
|
|
/** start or stop branch detect */
|
|
typedef struct _iot_cli_sg_bd_start {
|
|
/** 0 - stop, 1 - start */
|
|
uint8_t value;
|
|
} iot_cli_sg_bd_start_t;
|
|
|
|
/** branch detect node information */
|
|
typedef struct _iot_cli_sg_bd_node_info {
|
|
/** node index */
|
|
uint16_t index;
|
|
/** node mac address, little-endian */
|
|
uint8_t mac[IOT_MAC_ADDR_LEN];
|
|
/** device type, see IOT_CLI_SG_DEV_TYPE_XXX */
|
|
uint8_t dev_type;
|
|
/** father index, special father index see IOT_CLI_SG_BD_FATHER_XXX */
|
|
uint16_t father_index;
|
|
/** reserved for future */
|
|
uint8_t rsvd[6];
|
|
} iot_cli_sg_bd_node_info_t;
|
|
|
|
/** branch detect query result */
|
|
typedef struct _iot_cli_sg_bd_query_ret {
|
|
/** start index, value range: 1 - 65535 */
|
|
uint16_t start_index;
|
|
/** query count */
|
|
uint8_t count;
|
|
} iot_cli_sg_bd_query_ret_t;
|
|
|
|
/** branch detect result report */
|
|
typedef struct _iot_cli_sg_bd_ret_rpt {
|
|
/** total node count */
|
|
uint16_t total_cnt;
|
|
/** start index, value range */
|
|
uint16_t start_index;
|
|
/** report node count */
|
|
uint8_t rpt_cnt;
|
|
/** node information */
|
|
iot_cli_sg_bd_node_info_t node_info[0];
|
|
} iot_cli_sg_bd_ret_rpt_t;
|
|
|
|
/** report branch detect state */
|
|
typedef struct _iot_cli_sg_bd_rpt_state {
|
|
/** branch detect state, see IOT_CLI_SG_BD_XXX */
|
|
uint16_t state;
|
|
} iot_cli_sg_bd_rpt_state_t;
|
|
|
|
/** set cco esp */
|
|
typedef struct _iot_cli_sg_set_esp {
|
|
/** equipment service provider, see IOT_SG_CCO_ESP_XXX */
|
|
uint8_t esp;
|
|
} iot_cli_sg_set_esp_t;
|
|
|
|
/** report cco esp */
|
|
typedef struct _iot_cli_sg_rpt_esp {
|
|
/** equipment service provider, see IOT_SG_CCO_ESP_XXX */
|
|
uint8_t esp;
|
|
} iot_cli_sg_rpt_esp_t;
|
|
|
|
/** query node id information */
|
|
typedef struct _iot_cli_sg_qr_node_info_dl {
|
|
/** start index, value range: 1 - 65535 */
|
|
uint16_t start_index;
|
|
/** query count */
|
|
uint8_t count;
|
|
} iot_cli_sg_qr_node_info_dl_t;
|
|
|
|
typedef struct _iot_cli_sg_node_detail_info {
|
|
/** address, little - endian */
|
|
uint8_t addr[IOT_MAC_ADDR_LEN];
|
|
/** module id */
|
|
uint8_t module_id[IOT_CLI_SG_MODULE_ID_LEN];
|
|
/** phase that device is connected to.
|
|
* bit0 set to 1 means device is connected to phase A.
|
|
* bit1 set to 1 means device is connected to phase B.
|
|
* bit2 set to 1 means device is connected to phase C.
|
|
*/
|
|
uint8_t phase :3,
|
|
/** power meter type, 0: single phase, 1: three phase */
|
|
pm_type :1,
|
|
/** flag to mark if opposite phase
|
|
* 0: line normal or not support identification.
|
|
* 1: line abnormal.
|
|
* it means neutral wire and live wire reversed when pm type is single
|
|
* phase.
|
|
* it means reverse phase sequence when pm type is three phase.
|
|
*/
|
|
opposite_phase :1,
|
|
/** phase type of three phase meter, see IOT_SG_CCO_PHASE_SEQ_XXX */
|
|
phase_type :3;
|
|
/** reserved */
|
|
uint8_t rsvd[11];
|
|
} iot_cli_sg_node_detail_info_t;
|
|
|
|
/** report node id information */
|
|
typedef struct _iot_cli_sg_qr_node_info_ul {
|
|
/** total node count */
|
|
uint16_t total_cnt;
|
|
/** start index, value range */
|
|
uint16_t start_index;
|
|
/** report node count */
|
|
uint8_t rpt_cnt;
|
|
/** node information */
|
|
iot_cli_sg_node_detail_info_t node_info[0];
|
|
} iot_cli_sg_qr_node_info_ul_t;
|
|
|
|
/** send boardcast data dl */
|
|
typedef struct _iot_cli_sg_send_broadcast_data_dl {
|
|
/** data proto type */
|
|
uint8_t proto_type;
|
|
/** reserved */
|
|
uint8_t rsvd[15];
|
|
/** broadcast data length */
|
|
uint16_t len;
|
|
/** broadcast data */
|
|
uint8_t data[0];
|
|
} iot_cli_sg_send_broadcast_data_dl;
|
|
|
|
/** set mac addr dl */
|
|
typedef struct _iot_cli_sg_set_mac_dl {
|
|
/** new mac */
|
|
uint8_t mac[IOT_MAC_ADDR_LEN];
|
|
} iot_cli_sg_set_mac_dl_t;
|
|
|
|
typedef struct _iot_cli_sg_trans_local_proto_data_dl {
|
|
/* reserved */
|
|
uint8_t rsvd[4];
|
|
/* trans data len */
|
|
uint16_t data_len;
|
|
/* 376.2 data */
|
|
uint8_t data[0];
|
|
} iot_cli_sg_trans_local_proto_data_dl_t;
|
|
|
|
typedef struct _iot_cli_sg_resp_local_proto_data_ul {
|
|
/* response data len */
|
|
uint16_t date_len;
|
|
/* response data */
|
|
uint8_t data[0];
|
|
} iot_cli_sg_resp_local_proto_data_ul_t;
|
|
|
|
#if IOT_CLI_SG_INTERFACE_ENABLE
|
|
|
|
/**
|
|
* @brief iot_cli_sg_get_headroom_req() - when sg transter iot_pkt_t to cli
|
|
* that the iot_pkt_t need reserve some
|
|
* space in iot_pkt_t head part.
|
|
* @return: the space size to be reserved.
|
|
*/
|
|
uint8_t iot_cli_sg_get_headroom_req();
|
|
|
|
/**
|
|
* @brief iot_cli_sg_interface_register() - register smart grid interface to
|
|
* cli module.
|
|
* @param cli_interface: smart grid interface.
|
|
* @return: register result, see IOT_CLI_SG_REG_xxx.
|
|
*/
|
|
uint32_t iot_cli_sg_interface_register(iot_cli_sg_interface_t *cli_interface);
|
|
|
|
/**
|
|
* @brief iot_cli_sg_send_data_to_cli_interface() - sg send data to cli
|
|
* interface.
|
|
* @param pkt: meter list data.
|
|
* @param msg_id: the data identify
|
|
* @param req_id: request id
|
|
*/
|
|
void iot_cli_sg_send_data_to_cli_interface(iot_pkt_t *pkt, uint8_t msg_id,
|
|
uint8_t req_id);
|
|
|
|
#else
|
|
|
|
#define iot_cli_sg_get_headroom_req() (0)
|
|
|
|
#define iot_cli_sg_interface_register(cli_interface) \
|
|
IOT_CLI_SG_REGISTER_FAILURE
|
|
|
|
#define iot_cli_sg_send_data_to_cli_interface(pkt, msg_id, req_id) IOT_ASSERT(0)
|
|
|
|
#endif
|
|
|
|
#pragma pack(pop) /* restore the pack status */
|
|
|
|
/* reserved for cli channel header. */
|
|
#define IOT_SG_CLI_CHANNEL_HEADROOM \
|
|
(sizeof(iot_cli_sg_resp_local_proto_data_ul_t) + \
|
|
sizeof(iot_cli_sg_msg_header_t))
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* IOT_CLI_SG_API_H */
|