1984 lines
70 KiB
C
1984 lines
70 KiB
C
/****************************************************************************
|
|
|
|
Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED.
|
|
|
|
This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT
|
|
be copied by any method or incorporated into another program without
|
|
the express written consent of Aerospace C.Power. This Information or any portion
|
|
thereof remains the property of Aerospace C.Power. The Information contained herein
|
|
is believed to be accurate and Aerospace C.Power assumes no responsibility or
|
|
liability for its use in any way and conveys no license or title under
|
|
any patent or copyright and makes no representation or warranty that this
|
|
Information is free from patent or copyright infringement.
|
|
|
|
****************************************************************************/
|
|
|
|
#ifndef PROTO_SPG_CCO_H
|
|
#define PROTO_SPG_CCO_H
|
|
|
|
#include "os_types_api.h"
|
|
#include "iot_utils_api.h"
|
|
#include "proto_spg.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#pragma pack(push) /* save the pack status */
|
|
#pragma pack(1) /* 1 byte align */
|
|
|
|
/* task exe status for 05h_f5 */
|
|
#define PROTO_SPG_TASK_EXE_STATUS_SUCCESS (0x00)
|
|
#define PROTO_SPG_TASK_EXE_STATUS_SEC_NODE_NO_RSP (0x01)
|
|
#define PROTO_SPG_TASK_EXE_STATUS_DATA_INVALID (0x02)
|
|
#define PROTO_SPG_TASK_EXE_STATUS_OTHER_ERR (0xFF)
|
|
|
|
/* Maximum value of the link quality by spg proto */
|
|
#define SPG_MAX_LINK_QUALITY_VALUE (31)
|
|
|
|
/* task suggest timeout time, uint is 1s */
|
|
#define PROTO_SGP_TASK_SUGGEST_TIMEOUT (300)
|
|
|
|
/* max query sec node phase info count */
|
|
#define PROTO_SPG_MAX_QUERY_SEC_NODE_PHASE_INFO_CNT (16)
|
|
|
|
/* sec node support phase detection */
|
|
#define PTORO_SPG_SEC_NODE_PHASE_SUPP_DETECT (0)
|
|
/* sec node not support phase detection */
|
|
#define PTORO_SPG_SEC_NODE_PHASE_NOT_SUPP_DETECT (1)
|
|
/* sec node phase is unknown */
|
|
#define PTORO_SPG_SEC_NODE_PHASE_UNKNOWN (2)
|
|
|
|
/* file type of spg upgrade */
|
|
#define PROTO_SPG_UPGRADE_FILE_CLEAR (0)
|
|
#define PROTO_SPG_UPGRADE_FILE_CCO (1)
|
|
#define PROTO_SPG_UPGRADE_FILE_STA (2)
|
|
#define PROTO_SPG_UPGRADE_FILE_COLLECTOR (3)
|
|
|
|
/* upgrade progress */
|
|
/* upgrade succeed */
|
|
#define PROTO_SPG_UPGRADE_PROGRESS_SUCCEED (0)
|
|
/* upgrade is running */
|
|
#define PROTO_SPG_UPGRADE_PROGRESS_RUNNING (1)
|
|
/* upgrade fail */
|
|
#define PROTO_SPG_UPGRADE_PROGRESS_FAIL (2)
|
|
|
|
|
|
/* query result of SEC NODE TSFM */
|
|
/* the sec node is part of current transformer */
|
|
#define PROTO_SPG_CCO_RPT_TSFM_RES_0 (0)
|
|
/* the sec node is out of current transformer */
|
|
#define PROTO_SPG_CCO_RPT_TSFM_RES_1 (1)
|
|
/* STA cannot communicate with CCo */
|
|
#define PROTO_SPG_CCO_RPT_TSFM_RES_2 (2)
|
|
/* unkown */
|
|
#define PROTO_SPG_CCO_RPT_TSFM_RES_3 (3)
|
|
/* not support TSFM */
|
|
#define PROTO_SPG_CCO_RPT_TSFM_RES_4 (4)
|
|
|
|
/* event type for other */
|
|
#define PROTO_SPG_EVENT_NORMAL (0)
|
|
#define PROTO_SPG_EVENT_POWER_DOWN (1)
|
|
#define PROTO_SPG_EVENT_POWER_UP (2)
|
|
#define PROTO_SPG_EVENT_POWER_DOWN_C (3)
|
|
#define PROTO_SPG_EVENT_POWER_UP_C (4)
|
|
|
|
/* guangdong protocol power event type */
|
|
#define PROTO_SPG_EVENT_POWER_DOWN_GUANGDONG (0x81)
|
|
#define PROTO_SPG_EVENT_POWER_UP_GUANGDONG (0x82)
|
|
|
|
/* STA communication mode */
|
|
#define PROTO_SPG_COMM_MOD_UNKNOW (0)
|
|
#define PROTO_SPG_COMM_MOD_CARRIER (1)
|
|
#define PROTO_SPG_COMM_MOD_WIRELESS (2)
|
|
|
|
/* tsfm state for guangzhou */
|
|
#define PROTO_SPG_TSFM_STATE_UNKNOW (0)
|
|
#define PROTO_SPG_TSFM_STATE_SAME (1)
|
|
#define PROTO_SPG_TSFM_STATE_DIFF (2)
|
|
#define PROTO_SPG_TSFM_STATE_NOSUPP (3)
|
|
|
|
/* tsfm dectect result for guangdong */
|
|
#define PROTO_SPG_TSFM_DECT_RESULT_SAME (0)
|
|
#define PROTO_SPG_TSFM_DECT_RESULT_DIFF (1)
|
|
#define PROTO_SPG_TSFM_DECT_RESULT_COMM_FAIL (2)
|
|
#define PROTO_SPG_TSFM_DECT_RESULT_UNKNOWN (3)
|
|
#define PROTO_SPG_TSFM_DECT_RESULT_NOSUPPORT (4)
|
|
|
|
/* guangdong report others node tsfm dectect state max count */
|
|
#define PROTO_SPG_RPT_TSFM_STATE_MAX_CNT (64)
|
|
|
|
/* max report node count */
|
|
#define PROTO_SPG_MAX_RPT_NODE_CNT (64)
|
|
|
|
#define PROTO_SPG_DATETIME_LEN (6)
|
|
|
|
|
|
|
|
/* guangzhou power event report length except data fields for DL/T 645 */
|
|
#define PROTO_645_POWER_EVT_RPT_DATA_PKT_LEN (12)
|
|
|
|
/* query score max node count */
|
|
#define PROTO_SPG_MAX_QUERY_SCORE_NODE_CNT (20)
|
|
/* score parameter */
|
|
#define PROTO_SPG_CCO_MAX_SCORE (100)
|
|
#define PROTO_SPG_CCO_MIN_SCORE (10)
|
|
|
|
/* collection task structure definition */
|
|
/* define pm protocol type in collection task structure */
|
|
#define PROTO_SPG_CLCT_TASK_PROTO_TYPE_UNKNOWN (0)
|
|
#define PROTO_SPG_CLCT_TASK_PROTO_TYPE_645_97 (1)
|
|
#define PROTO_SPG_CLCT_TASK_PROTO_TYPE_645_07 (2)
|
|
|
|
/* define pm type in collection task structure */
|
|
#define PROTO_SPG_CLCT_TASK_PM_TYPE_INVALID (0)
|
|
#define PROTO_SPG_CLCT_TASK_PM_TYPE_SINGE (1)
|
|
#define PROTO_SPG_CLCT_TASK_PM_TYPE_3P (2)
|
|
|
|
/* query collection task status max cnt */
|
|
#define PROTO_SPG_CLCT_MAX_QUERY_STATUS_CNT (10)
|
|
/* module support the max cnt of collection task when unicast */
|
|
#define PROTO_SPG_CLCT_MAX_METER_TASK_CNT (5)
|
|
/* module support the max cnt of collection task when bcast */
|
|
#define PROTO_SPG_CLCT_MAX_ROUTER_TASK_CNT (16)
|
|
|
|
/* collection task status */
|
|
#define PROTO_SPG_CLCT_TASK_STATUS_SUCCESS (0)
|
|
#define PROTO_SPG_CLCT_TASK_STATUS_SEC_NODE_NO_RSP (1)
|
|
#define PROTO_SPG_CLCT_TASK_STATUS_DATA_INVALID (2)
|
|
#define PROTO_SPG_CLCT_TASK_STATUS_NO_SUP_CFG (3)
|
|
#define PROTO_SPG_CLCT_TASK_STATUS_PM_TYPE_ERR (4)
|
|
#define PROTO_SPG_CLCT_TASK_STATUS_MAJOR_UNSEND (6)
|
|
#define PROTO_SPG_CLCT_TASK_STATUS_OTHER_ERR (0xFF)
|
|
|
|
/* collect data read task status */
|
|
#define PROTO_SPG_CLCT_READ_STATUS_SEC_NODE_NO_RSP (1)
|
|
#define PROTO_SPG_CLCT_READ_STATUS_DATA_INVALID (2)
|
|
/* routing module and meter module collection task are not synchronized */
|
|
#define PROTO_SPG_CLCT_READ_STATUS_CRC_DIFF (3)
|
|
#define PROTO_SPG_CLCT_READ_STATUS_SEC_ID_INVALID (4)
|
|
#define PROTO_SPG_CLCT_READ_STATUS_OTHER_ERR (0xFF)
|
|
|
|
/* range of influence from white list */
|
|
#define PROTO_SPG_WL_INFLUENCE_LIST_FILE (0)
|
|
#define PROTO_SPG_WL_INFLUENCE_VENDOR_DEFINE (1)
|
|
#define PROTO_SPG_WL_INFLUENCE_ALL (2)
|
|
|
|
/* power event rpt dev type */
|
|
#define PROTO_SPG_DEV_TYPE_METER (0)
|
|
#define PROTO_SPG_DEV_TYPE_COLLECTOR (1)
|
|
#define PROTO_SPG_DEV_TYPE_COLLECTOR_METER (2)
|
|
|
|
/* the max cnt of query node channel info */
|
|
#define PROTO_SPG_MAX_QR_CHANNEL_STA_CNT (6)
|
|
#define PROTO_SPG_MAX_QR_CHANNEL_CCO_CNT (20)
|
|
|
|
/* query sec node run state id count */
|
|
#define PROTO_SPG_QR_ID_CNT_RUNTIME (1)
|
|
#define PROTO_SPG_QR_ID_CNT_ZC_INFO (4)
|
|
|
|
/* ctrl send data type */
|
|
#define PROTO_SPG_CTRL_DATA_TYPE_CCO_CTRL (0x00)
|
|
#define PROTO_SPG_CTRL_DATA_TYPE_PASSTHROUGH (0x01)
|
|
|
|
/* manufacture code */
|
|
#define PROTO_SPG_BASE_INFO_OEM_CODE (0x00)
|
|
/* version id */
|
|
#define PROTO_SPG_BASE_INFO_VER_INFO (0x01)
|
|
/* bootload version */
|
|
#define PROTO_SPG_BASE_INFO_BOOTLOADER (0x02)
|
|
/* chip code */
|
|
#define PROTO_SPG_BASE_INFO_CHIP_CODE (0x05)
|
|
/* version date */
|
|
#define PROTO_SPG_BASE_INFO_VER_DATE (0x06)
|
|
/* module mac addr */
|
|
#define PROTO_SPG_BASE_INFO_MOD_MAC (0x08)
|
|
/* module hardware version id */
|
|
#define PROTO_SPG_BASE_INFO_HW_MOD_VER_INFO (0x09)
|
|
/* module hardware version date */
|
|
#define PROTO_SPG_BASE_INFO_HW_MOD_DATE (0x0A)
|
|
/* chip software version id */
|
|
#define PROTO_SPG_BASE_INFO_SW_CHIP_VER_INFO (0x0B)
|
|
/* chip software version date */
|
|
#define PROTO_SPG_BASE_INFO_SW_CHIP_VER_DATE (0x0C)
|
|
/* chip hardware version id */
|
|
#define PROTO_SPG_BASE_INFO_HW_CHIP_VER_INFO (0x0D)
|
|
/* chip hardware version date */
|
|
#define PROTO_SPG_BASE_INFO_HW_CHIP_VER_DATE (0x0E)
|
|
/* application version id */
|
|
#define PROTO_SPG_BASE_INFO_APP_VER_INFO (0x0F)
|
|
/* module device id */
|
|
#define PROTO_SPG_BASE_INFO_DEV_ID (0x10)
|
|
|
|
/* manufacture code reserved length */
|
|
#define PROTO_SPG_BASE_INFO_OEM_CODE_RSVD_LEN (2)
|
|
/* version id */
|
|
#define PROTO_SPG_BASE_INFO_VER_INFO_RSVD_LEN (2)
|
|
/* bootload version */
|
|
#define PROTO_SPG_BASE_INFO_BOOTLOADER_RSVD_LEN (1)
|
|
/* chip code */
|
|
#define PROTO_SPG_BASE_INFO_CHIP_CODE_RSVD_LEN (2)
|
|
/* version date */
|
|
#define PROTO_SPG_BASE_INFO_VER_DATE_RSVD_LEN (3)
|
|
/* module mac addr */
|
|
#define PROTO_SPG_BASE_INFO_MOD_MAC_RSVD_LEN (6)
|
|
/* module hardware version id */
|
|
#define PROTO_SPG_BASE_INFO_HW_MOD_VER_INFO_RSVD_LEN (2)
|
|
/* module hardware version date */
|
|
#define PROTO_SPG_BASE_INFO_HW_MOD_DATE_RSVD_LEN (3)
|
|
/* chip software version id */
|
|
#define PROTO_SPG_BASE_INFO_SW_CHIP_VER_INFO_RSVD_LEN (2)
|
|
/* chip software version date */
|
|
#define PROTO_SPG_BASE_INFO_SW_CHIP_VER_DATE_RSVD_LEN (3)
|
|
/* chip hardware version id */
|
|
#define PROTO_SPG_BASE_INFO_HW_CHIP_VER_INFO_RSVD_LEN (2)
|
|
/* chip hardware version date */
|
|
#define PROTO_SPG_BASE_INFO_HW_CHIP_VER_DATE_RSVD_LEN (3)
|
|
/* application version id */
|
|
#define PROTO_SPG_BASE_INFO_APP_VER_INFO_RSVD_LEN (2)
|
|
/* module device id */
|
|
#define PROTO_SPG_BASE_INFO_DEV_ID_RSVD_LEN (24)
|
|
|
|
/* version info device id len */
|
|
#define PROTO_SPG_DEVICE_ID_LEN (11)
|
|
/* version info chip management id len */
|
|
#define PROTO_SPG_CHIP_MMID_ID_LEN (24)
|
|
|
|
/* branch detect report state */
|
|
/* not doing branch detect or branch detect is done */
|
|
#define PROTO_SPG_BD_STATE_DONE (0)
|
|
/* doing branch detect */
|
|
#define PROTO_SPG_BD_STATE_DOING (1)
|
|
|
|
/* query physical topo device type */
|
|
#define PROTO_SPG_BD_DEV_TYPE_POWER_METER (1)
|
|
#define PROTO_SPG_BD_DEV_TYPE_POWER_METER_3P (2)
|
|
#define PROTO_SPG_BD_DEV_TYPE_SWITCH_MONITOR (3)
|
|
|
|
/* spg task info */
|
|
typedef struct _spg_task_info {
|
|
/* task id */
|
|
uint16_t task_id;
|
|
/* task priority, 0 - hight priority, 3 - low priority*/
|
|
uint8_t task_pri : 4;
|
|
/* reserve */
|
|
uint8_t reseve_1 : 1,
|
|
reseve_2 : 1,
|
|
/* data forward flag for hainan, 0 - needless forward, 1 - need forward */
|
|
forward_flag : 1,
|
|
/* flag of the ack, 0 - need ack, 1 - needless ack */
|
|
ack_flag : 1;
|
|
/* time of the timeout, unit is second */
|
|
uint16_t timeout_dur;
|
|
/* length of the app data */
|
|
uint8_t data_len;
|
|
/* comment of the app data */
|
|
uint8_t data[0];
|
|
} spg_task_info_t;
|
|
|
|
/* add task down link request */
|
|
typedef struct _spg_afn02_fn01_add_task_dl {
|
|
/* spg task information */
|
|
spg_task_info_t task_info;
|
|
} spg_afn02_fn01_add_task_dl_t;
|
|
|
|
/* remove task down link request */
|
|
typedef struct _spg_afn02_fn02_rm_task_dl {
|
|
/* task id */
|
|
uint16_t task_id;
|
|
} spg_afn02_fn02_rm_task_dl_t;
|
|
|
|
/* unfinish task count */
|
|
typedef struct _spg_afn02_fn03_query_unfinish_task_ul {
|
|
/* unfinish task count */
|
|
uint16_t unfinished_cnt;
|
|
} spg_afn02_fn03_query_unfinish_task_ul_t;
|
|
|
|
/* pending task information down link request */
|
|
typedef struct _spg_afn02_fn05_pending_task_info_dl {
|
|
/* pending task id */
|
|
uint16_t task_id;
|
|
} spg_afn02_fn05_pending_task_info_dl_t;
|
|
|
|
/* pending task information up link request */
|
|
typedef struct spg_afn02_fn05_pending_task_hdr_ul {
|
|
/* pending task id */
|
|
uint16_t task_id;
|
|
/* priority level, 0 - hight priority, 3 - low priority */
|
|
uint8_t task_pri : 4,
|
|
reseve_1 : 1,
|
|
reseve_2 : 1,
|
|
reseve_3 : 1;
|
|
/* 0 - need ack, 1 - needless ack */
|
|
uint8_t ack_flag : 1;
|
|
/* count of the task address */
|
|
uint16_t addr_cnt;
|
|
/* address of the task */
|
|
uint8_t addr[0][IOT_MAC_ADDR_LEN];
|
|
} spg_afn02_fn05_pending_task_hdr_ul_t;
|
|
|
|
/* data in the pending task up link request */
|
|
typedef struct spg_afn02_fn05_pending_task_data_ul {
|
|
/* length of data in a task */
|
|
uint8_t len;
|
|
/* content of the task */
|
|
uint8_t data[0];
|
|
} spg_afn02_fn05_pending_task_data_ul_t;
|
|
|
|
/* count of the free task, up link response */
|
|
typedef struct _spg_afn02_fn06_query_free_taskcnt_ul {
|
|
/* count of free task */
|
|
uint16_t free_task_cnt;
|
|
} spg_afn02_fn06_query_free_taskcnt_ul_t;
|
|
|
|
/* unfinish task id down link request */
|
|
typedef struct _spg_afn02_fn04_query_unfinished_task_list_dl {
|
|
/* start index of unfinished task to be queried,
|
|
* start ftom 0 be queried
|
|
*/
|
|
uint16_t start_index;
|
|
/* count to be queried this time */
|
|
uint8_t query_count;
|
|
} spg_afn02_fn04_query_unfinished_task_list_dl_t;
|
|
|
|
/* unfinish task id list up link */
|
|
typedef struct _spg_afn02_fn04_query_unfinish_task_list_ul {
|
|
/* unfinish task count */
|
|
uint16_t task_cnt;
|
|
/* task id */
|
|
uint16_t task_id[0];
|
|
} spg_afn02_fn04_query_unfinish_task_list_ul_t;
|
|
|
|
/* add task down link request */
|
|
typedef struct _spg_afn02_fn07_add_multi_task_dl {
|
|
/* task id */
|
|
uint16_t task_id;
|
|
/* task priority, 0 - hight priority, 3 - low priority*/
|
|
uint8_t task_pri : 4;
|
|
/* reserve */
|
|
uint8_t reseve_1 : 1,
|
|
reseve_2 : 1,
|
|
/* data forward flag, 0 - needless forward, 1 - need forward */
|
|
forward_flag : 1,
|
|
/* flag of the ack, 0 - need ack, 1 - needless ack */
|
|
ack_flag : 1;
|
|
/* power meter count */
|
|
uint16_t pm_count;
|
|
/* power meter mac addr */
|
|
uint8_t pm_mac[0][IOT_MAC_ADDR_LEN];
|
|
//spg_afn02_fn07_datagram_t data;
|
|
} spg_afn02_fn07_add_multi_task_dl_t;
|
|
|
|
typedef struct _spg_afn02_fn07_datagram {
|
|
/* time of the timeout, unit is second */
|
|
uint16_t timeout_dur;
|
|
/* length of the app data */
|
|
uint8_t data_len;
|
|
/* comment of the app data */
|
|
uint8_t data[0];
|
|
} spg_afn02_fn07_datagram_t;
|
|
|
|
typedef struct _spg_afn04_fnc1_edge_computing_set {
|
|
/* overvoltage monitor switch, 0 - open, others - close */
|
|
uint8_t overvoltage_switch;
|
|
/* overvoltage monitor threshold, unit is volt */
|
|
uint16_t overvoltage_threshold;
|
|
/* overvoltage monitor period, unit is 1min */
|
|
uint16_t overvoltage_period;
|
|
/* overvoltage collect abnormal report round */
|
|
uint8_t overvoltage_rpt_round;
|
|
/* undervoltage monitor switch, 0 - open, others - close */
|
|
uint8_t undervoltage_switch;
|
|
/* undervoltage monitor threshold, unit is volt */
|
|
uint16_t undervoltage_threshold;
|
|
/* undervoltage monitor period, unit is 1min */
|
|
uint16_t undervoltage_period;
|
|
/* undervoltage collect abnormal report round */
|
|
uint8_t undervoltage_rpt_round;
|
|
/* clock second pulse monitor switch, 0 - open, others - close */
|
|
uint8_t pulse_switch;
|
|
/* clock second pulse monitor threshold, unit is 1ms */
|
|
uint16_t pulse_threshold;
|
|
/* power meter health status monitor switch, 0 - open, others - close */
|
|
uint8_t health_status_switch;
|
|
/* power meter used time limit threshold, unit is year */
|
|
uint8_t used_limit_threshold;
|
|
} spg_afn04_fnc1_edge_computing_set_t;
|
|
|
|
/* query manufacturer and version up link */
|
|
typedef struct _spg_afn03_fn01_hw_info_ul {
|
|
/* hardware information */
|
|
mod_spg_hw_info_t info;
|
|
} spg_afn03_fn01_hw_info_ul_t;
|
|
|
|
/* local device status msg */
|
|
typedef struct _spg_afn03_fn02_module_work_mode {
|
|
/* enum spg_communication_type */
|
|
uint8_t phy_type : 4;
|
|
/* reserved field */
|
|
uint8_t reserved : 4;
|
|
/* MTU of the datagram (unit: BYTE)*/
|
|
uint16_t datagram_mtu;
|
|
/* MTU of the transmission file (unit: BYTE)*/
|
|
uint16_t file_send_mtu;
|
|
/* wait of the time, after the file transfer is completed (unit: MINUTE)*/
|
|
uint8_t upgrade_wait_dur;
|
|
/* MAC of the CCO */
|
|
uint8_t cco_mac[IOT_MAC_ADDR_LEN];
|
|
/* the maximum secondary node number of support */
|
|
uint16_t sec_node_cnt_max;
|
|
/* count of the current secondary node */
|
|
uint16_t sec_node_cnt;
|
|
/* count of the single operation */
|
|
uint16_t sec_node_opt_cnt_max;
|
|
/* date of the proto */
|
|
uint8_t proto_rel_date[3];
|
|
/* info of the manufacture and version */
|
|
mod_spg_hw_info_t hw_info;
|
|
} spg_afn03_fn02_mod_work_mode_t;
|
|
|
|
/* query CCO address up link */
|
|
typedef struct _spg_afn03_fn03_cco_mac_ul {
|
|
/* CCO address */
|
|
uint8_t mac[IOT_MAC_ADDR_LEN];
|
|
} spg_afn03_fn03_cco_mac_ul_t;
|
|
|
|
/* query communication delay time down link */
|
|
typedef struct _spg_afn03_fn04_comm_delay_dl {
|
|
/* communication dest address */
|
|
uint8_t dest_mac[IOT_MAC_ADDR_LEN];
|
|
/* data len */
|
|
uint8_t len;
|
|
} spg_afn03_fn04_comm_delay_dl_t;
|
|
|
|
/* query communication delay time up link */
|
|
typedef struct _spg_afn03_fn04_comm_delay_ul {
|
|
/* communication dest address */
|
|
uint8_t dest_mac[IOT_MAC_ADDR_LEN];
|
|
/* communication delay time */
|
|
uint16_t delay_time;
|
|
/* data len */
|
|
uint8_t len;
|
|
} spg_afn03_fn04_comm_delay_ul_t;
|
|
|
|
/* query total count of the secondary node up link */
|
|
typedef struct _spg_afn03_fn05_query_sec_node_count_ul {
|
|
/* total count of the secondary node */
|
|
uint16_t sec_node_count;
|
|
} spg_afn03_fn05_query_sec_node_count_ul_t;
|
|
|
|
/* query secondary node info down link */
|
|
typedef struct _spg_afn03_fn06_query_sec_node_info_dl {
|
|
/* start index of the secondary node to be queried */
|
|
uint16_t start_index;
|
|
/* count of the secondary node to be queried */
|
|
uint8_t sec_node_count;
|
|
} spg_afn03_fn06_query_sec_node_info_dl_t;
|
|
|
|
/* query secondary node info up link */
|
|
typedef struct _spg_afn03_fn06_query_sec_node_info_ul {
|
|
/* total count of the secondary node */
|
|
uint16_t total_count;
|
|
/* count of the secondary node in current report */
|
|
uint8_t rps_sec_node_count;
|
|
/* mac address list of the secondary node */
|
|
uint8_t mac[0][IOT_MAC_ADDR_LEN];
|
|
} spg_afn03_fn06_query_sec_node_info_ul_t;
|
|
|
|
/* secondary node register status up link */
|
|
typedef struct _spg_afn03_fn07_sec_node_reg_state_ul {
|
|
/* 0 - register done, 1 - registering */
|
|
uint8_t reg_state;
|
|
} spg_afn03_fn07_sec_node_reg_state_ul_t;
|
|
|
|
/* Parent-node info down link */
|
|
typedef struct _spg_afn03_fn08_query_parent_node_dl {
|
|
/* mac address of the secondary node */
|
|
uint8_t sec_node_mac[IOT_MAC_ADDR_LEN];
|
|
} spg_afn03_fn08_query_parent_node_dl_t;
|
|
|
|
/* Parent-node info up link */
|
|
typedef struct _spg_afn03_fn08_query_parent_node_ul {
|
|
/* MAC address of the secondary node */
|
|
uint8_t sec_node_mac[IOT_MAC_ADDR_LEN];
|
|
/* MAC address of the parent-node */
|
|
uint8_t parent_node_mac[IOT_MAC_ADDR_LEN];
|
|
/* value 0 ~ 31. 0 - worst, 31 - best */
|
|
uint8_t link_quality;
|
|
} spg_afn03_fn08_query_parent_node_ul_t;
|
|
|
|
/* query meter mapping count up link */
|
|
typedef struct _spg_afn03_fn09_query_meter_map_cnt_ul {
|
|
/* meter mapping count */
|
|
uint16_t mapping_cnt;
|
|
} spg_afn03_fn09_query_meter_map_cnt_ul_t;
|
|
|
|
/* query meter mapping info down link */
|
|
typedef struct _spg_afn03_fn0a_query_meter_map_info_dl {
|
|
/* query start meter mapping index */
|
|
uint16_t start_index;
|
|
/* query count */
|
|
uint8_t cnt;
|
|
} spg_afn03_fn0a_query_meter_map_info_dl_t;
|
|
|
|
/* spg meter mapping info */
|
|
typedef struct _spg_meter_mapping_info {
|
|
/* node mac address - small endian */
|
|
uint8_t node_mac[IOT_MAC_ADDR_LEN];
|
|
/* meter address - small endian */
|
|
uint8_t meter_addr[IOT_METER_ADDR_LEN];
|
|
} spg_meter_mapping_info_t;
|
|
|
|
/* query meter mapping info up link */
|
|
typedef struct _spg_afn03_fn0a_rpt_meter_map_info_ul {
|
|
/* total meter mapping index */
|
|
uint16_t total_cnt;
|
|
/* rpt count this time */
|
|
uint8_t cnt;
|
|
/* meter mapping info */
|
|
spg_meter_mapping_info_t meter_map_info[0];
|
|
} spg_afn03_fn0a_rpt_meter_map_info_ul_t;
|
|
|
|
/* Parent-node info up link */
|
|
typedef struct _spg_afn03_fn10_query_detect_status_ul {
|
|
/* transformer detect status */
|
|
uint8_t status;
|
|
/* transformer detect left time */
|
|
uint16_t left_time;
|
|
/* reserved */
|
|
uint8_t resvd;
|
|
} spg_afn03_fn10_query_detect_status_ul_t;
|
|
|
|
/* query module mac info down link */
|
|
typedef struct _spg_afn03_fn13_query_mod_mac_info_dl {
|
|
/* start query index of the secondary node, start from 0 */
|
|
uint16_t start_index;
|
|
/* query count */
|
|
uint8_t cnt;
|
|
} spg_afn03_fn13_query_mod_mac_info_dl_t;
|
|
|
|
/* module mac info */
|
|
typedef struct _spg_mod_mac_info {
|
|
/* meter address, little-endian */
|
|
uint8_t meter_addr[IOT_MAC_ADDR_LEN];
|
|
/* module mac address, big-endian */
|
|
uint8_t mod_mac[IOT_MAC_ADDR_LEN];
|
|
/* reserved */
|
|
uint8_t rsvd[24];
|
|
} spg_mod_mac_info_t;
|
|
|
|
/* query module mac info up link */
|
|
typedef struct _spg_afn03_fn13_rpt_mod_mac_info_ul {
|
|
/* total node cnt */
|
|
uint16_t total_cnt;
|
|
/* start query index of the secondary node, start from 0 */
|
|
uint16_t start_index;
|
|
/* rpt count this time */
|
|
uint8_t cnt;
|
|
/* module property info */
|
|
spg_mod_mac_info_t mac_info[0];
|
|
} spg_afn03_fn13_rpt_mod_mac_info_ul_t;
|
|
|
|
/* query other's node tsfm dectect result down link for guangdong */
|
|
typedef struct _spg_afn03_fn11_query_other_tsfm_result_dl {
|
|
/* start query index of the secondary node, start from 0 */
|
|
uint16_t start_index;
|
|
/* query count */
|
|
uint8_t cnt;
|
|
} spg_afn03_fn11_query_other_tsfm_result_dl_t;
|
|
|
|
/* tsfm dectect report info */
|
|
typedef struct _spg_tsfm_dect_result {
|
|
/* node mac address, little endian */
|
|
uint8_t node_addr[IOT_MAC_ADDR_LEN];
|
|
/* tsfm dectect result, see PROTO_SPG_TSFM_DECT_RESULT_XXX */
|
|
uint8_t result;
|
|
/* reserved */
|
|
uint8_t rsvd;
|
|
/* tsfm dectect mac address, little endian */
|
|
uint8_t tsfm_addr[IOT_MAC_ADDR_LEN];
|
|
} spg_tsfm_dect_result_t;
|
|
|
|
/* query other's node tsfm dectect result ul link for guangdong */
|
|
typedef struct _spg_afn03_fn11_query_other_tsfm_result_ul {
|
|
/* tsfm dectect total node count */
|
|
uint16_t total_cnt;
|
|
/* report count */
|
|
uint8_t rpt_cnt;
|
|
/* tsfm dectect result */
|
|
spg_tsfm_dect_result_t tsfm_result[0];
|
|
} spg_afn03_fn11_query_other_tsfm_result_ul_t;
|
|
|
|
typedef struct _spg_afn03_fn12_query_net_phase_and_tsfm_info_dl {
|
|
/* start query index of the secondary node, start from 1 */
|
|
uint16_t start_index;
|
|
/* count of the secondary node to be queried */
|
|
uint8_t count;
|
|
} spg_afn03_fn12_query_net_phase_and_tsfm_info_dl_t;
|
|
|
|
typedef struct _spg_sec_node_net_phase_and_tsfm_info {
|
|
/* node mac address - little endian */
|
|
uint8_t mac_addr[IOT_MAC_ADDR_LEN];
|
|
/* tsfm state, see PROTO_SPG_TSFM_STATE_XXX */
|
|
uint8_t tsfm_state;
|
|
/* node phase identification, D0-D2 : connect with A/B/C phase if set 1,
|
|
* otherwise not connect to corresponding phase
|
|
*/
|
|
uint16_t phase : 3,
|
|
/* flag to mark if L/N reversed in Single-phase power meter or phase
|
|
* sequence reversed in Three-phase power meter.
|
|
*/
|
|
opposite_phase : 2,
|
|
/* reserved */
|
|
rsvd : 11;
|
|
} spg_sec_node_net_phase_and_tsfm_info_t;
|
|
|
|
typedef struct _spg_afn03_fn12_query_net_phase_and_tsfm_info_ul {
|
|
/* total count of the secondary node */
|
|
uint16_t total_count;
|
|
/* start query index of the secondary node, start from 1 */
|
|
uint16_t start_index;
|
|
/* current ack count of the secondary node */
|
|
uint8_t ack_node_count;
|
|
/* sec node info of network phase and transformer */
|
|
spg_sec_node_net_phase_and_tsfm_info_t node_info[0];
|
|
} spg_afn03_fn12_query_net_phase_and_tsfm_info_ul_t;
|
|
|
|
typedef struct _spg_afn03_fn13_query_base_info_dl {
|
|
/* meter addr, little endian */
|
|
uint8_t meter_addr[IOT_MAC_ADDR_LEN];
|
|
/* element count */
|
|
uint8_t element_cnt;
|
|
/* element info */
|
|
uint8_t element[0];
|
|
} spg_afn03_fn13_query_base_info_dl_t;
|
|
|
|
typedef struct _spg_afn03_fn12_query_base_info_ul {
|
|
/* meter addr, little endian */
|
|
uint8_t meter_addr[IOT_MAC_ADDR_LEN];
|
|
/* element info */
|
|
uint8_t data[0];
|
|
} spg_afn03_fn13_query_base_info_ul_t;
|
|
|
|
typedef struct _spg_node_info_ver_info {
|
|
/* mac address of the station: small endian */
|
|
uint8_t mac[IOT_MAC_ADDR_LEN];
|
|
/* node vendor id */
|
|
uint16_t vendor_id;
|
|
/* node chip code */
|
|
uint16_t chip_code;
|
|
/* software version day */
|
|
uint8_t sw_ver_day;
|
|
/* software version month */
|
|
uint8_t sw_ver_month;
|
|
/* software version year */
|
|
uint8_t sw_ver_year;
|
|
/* software version */
|
|
uint16_t sw_ver;
|
|
} spg_node_info_ver_info_t;
|
|
|
|
typedef struct _spg_afn03_fn12_fn81_query_vendor_and_ver_dl {
|
|
/* start query index, start from 0. 0 is cco, others station */
|
|
uint16_t start_index;
|
|
/* count of the node to be queried */
|
|
uint8_t count;
|
|
} spg_afn03_fn12_fn81_query_vendor_and_ver_dl_t;
|
|
|
|
typedef struct _spg_afn03_fn12_fn81_query_vendor_and_ver_ul {
|
|
/* total count of the secondary node */
|
|
uint16_t total_count;
|
|
/* current ack count of the secondary node */
|
|
uint8_t ack_node_count;
|
|
/* sec node vendor info */
|
|
spg_node_info_ver_info_t node_info[0];
|
|
} spg_afn03_fn12_fn81_query_vendor_and_ver_ul_t;
|
|
|
|
typedef struct _spg_afn03_fn14_query_base_info_dl {
|
|
/* start query index, start from 0. 0 is cco, others station */
|
|
uint16_t start_index;
|
|
/* count of the secondary node to be queried */
|
|
uint8_t count;
|
|
/* element info, see PROTO_SPG_BASE_INFO_XXX */
|
|
uint8_t element;
|
|
} spg_afn03_fn14_query_base_info_dl_t;
|
|
|
|
typedef struct _node_base_info {
|
|
/* node mac addr, little endian */
|
|
uint8_t pm_addr[IOT_MAC_ADDR_LEN];
|
|
/* base info */
|
|
uint8_t data[0];
|
|
} node_base_info_t;
|
|
|
|
typedef struct _spg_afn03_fn14_query_base_info_ul {
|
|
/* current ack count of the secondary node */
|
|
uint8_t ack_node_count;
|
|
/* element info, see PROTO_SPG_CMD_SEC_NODE_INFO_XXX */
|
|
uint8_t element;
|
|
/* node base info */
|
|
//node_base_info_t base_info[0];
|
|
} spg_afn03_fn14_query_base_info_ul_t;
|
|
|
|
/* query node vendor info down link */
|
|
typedef struct _spg_afn03_fn21_query_node_vendor_info_dl {
|
|
/* start query index of the secondary node, start from 1 */
|
|
uint16_t start_index;
|
|
/* count of the secondary node to be queried */
|
|
uint8_t count;
|
|
} spg_afn03_fn21_query_node_vendor_info_dl_t;
|
|
|
|
/* struct contain info of report node vendor */
|
|
typedef struct _spg_sec_node_vendor_info {
|
|
/* node vendor info */
|
|
spg_node_info_ver_info_t ver_info;
|
|
/* flag to mark if have super capacitance */
|
|
uint8_t super_cap : 2,
|
|
/* flag to mark if could fix position */
|
|
fix_position : 2,
|
|
/* reserved */
|
|
rsvd : 4;
|
|
} spg_sec_node_vendor_info_t;
|
|
|
|
/* query node vendor info up link */
|
|
typedef struct _spg_afn03_fn21_query_node_vendor_info_ul {
|
|
/* total count of the secondary node */
|
|
uint16_t total_count;
|
|
/* start query index of the secondary node */
|
|
uint16_t start_index;
|
|
/* current ack count of the secondary node */
|
|
uint8_t ack_node_count;
|
|
/* vendor info of the secondary node */
|
|
spg_sec_node_vendor_info_t node_info[0];
|
|
} spg_afn03_fn21_query_node_vendor_info_ul_t;
|
|
|
|
/* query node vendor info down link */
|
|
typedef struct _spg_afn03_fn22_query_node_vendor_info_dl {
|
|
/* node mac address - little endian */
|
|
uint8_t node_addr[IOT_MAC_ADDR_LEN];
|
|
} spg_afn03_fn22_query_node_vendor_info_dl_t;
|
|
|
|
/* query node vendor info up link */
|
|
typedef struct _spg_afn03_fn22_query_node_vendor_info_ul {
|
|
/* vendor info of the secondary node */
|
|
spg_sec_node_vendor_info_t node_info;
|
|
} spg_afn03_fn22_query_node_vendor_info_ul_t;
|
|
|
|
/* task suggest timeout time */
|
|
typedef struct _spg_afn03_fn0b_rsp_task_timeout {
|
|
/* task priority 0 suggest timeout time, uint is 1s */
|
|
uint16_t prio_0_suggest_timeout;
|
|
/* task priority 0 suggest timeout time, uint is 1s */
|
|
uint16_t prio_1_suggest_timeout;
|
|
/* task priority 0 suggest timeout time, uint is 1s */
|
|
uint16_t prio_2_suggest_timeout;
|
|
/* task priority 0 suggest timeout time, uint is 1s */
|
|
uint16_t prio_3_suggest_timeout;
|
|
} spg_afn03_fn0b_rsp_task_timeout_t;
|
|
|
|
/* query sec node phase information */
|
|
typedef struct _spg_afn03_fn0c_query_sec_node_phase_info_dl {
|
|
/* count of the secondary node */
|
|
uint8_t sec_node_cnt;
|
|
/* mac address list of the secondary node */
|
|
uint8_t mac_addr[0][IOT_MAC_ADDR_LEN];
|
|
} spg_afn03_fn0c_query_sec_node_phase_info_dl_t;
|
|
|
|
typedef struct _spg_sec_node_phase_info {
|
|
/* node mac addr */
|
|
uint8_t addr[IOT_MAC_ADDR_LEN];
|
|
/* node phase identification, D0-D2 : connect with A/B/C phase if set 1,
|
|
* otherwise not connect to corresponding phase
|
|
*/
|
|
uint8_t phase : 3,
|
|
/* node phase feature, see PTORO_SPG_SEC_NODE_PHASE_XXX */
|
|
phase_feature : 2,
|
|
/* node phase type, see PROTO_SPG_PHASE_SEQ_XXX */
|
|
phase_type : 3;
|
|
/* protocol type, see PROTO_SPG_PROTO_TYPE_XXX */
|
|
uint8_t proto_type : 3,
|
|
/* reversed */
|
|
reversed : 3,
|
|
/* module type, see PROTO_SPG_MODULE_XXX */
|
|
module_type : 2;
|
|
} spg_sec_node_phase_info_t;
|
|
|
|
typedef struct _spg_sec_node_guangzhou_phase_info {
|
|
/* node mac addr */
|
|
uint8_t addr[IOT_MAC_ADDR_LEN];
|
|
/* node phase identification, D0-D2 : connect with A/B/C phase if set 1,
|
|
* otherwise not connect to corresponding phase
|
|
*/
|
|
uint8_t phase : 3,
|
|
/* node phase feature, see PTORO_SPG_SEC_NODE_PHASE_XXX */
|
|
phase_feature : 2,
|
|
/* flag to mark if L/N reversed in Single-phase power meter or phase
|
|
* sequence reversed in Three-phase power meter.
|
|
*/
|
|
opposite_phase: 2,
|
|
/* reversed */
|
|
reversed : 1;
|
|
/* protocol type, see PROTO_SPG_PROTO_TYPE_XXX */
|
|
uint8_t proto_type;
|
|
} spg_sec_node_guangzhou_phase_info_t;
|
|
|
|
/* report sec node phase information */
|
|
typedef struct _spg_afn03_fn0c_rpt_sec_node_phase_info_ul {
|
|
/* count of the secondary node for this report */
|
|
uint8_t ack_node_count;
|
|
/* phase info of the secondary node */
|
|
spg_sec_node_phase_info_t node_info[0];
|
|
} spg_afn03_fn0c_rpt_sec_node_phase_info_ul_t;
|
|
|
|
/* report sec node guangzhou phase information */
|
|
typedef struct _spg_afn03_fn0c_rpt_sec_node_guangzhou_phase_info_ul {
|
|
/* current ack count of the secondary node */
|
|
uint8_t ack_node_count;
|
|
/* phase info of the secondary node */
|
|
spg_sec_node_guangzhou_phase_info_t node_info[0];
|
|
} spg_afn03_fn0c_rpt_sec_node_guangzhou_phase_info_ul_t;
|
|
|
|
/* query sec node phase information */
|
|
typedef struct _spg_afn03_fn0d_query_sec_node_phase_info_dl {
|
|
/* start query index of the secondary node, start from 0 */
|
|
uint16_t start_index;
|
|
/* count of the secondary node to be queried */
|
|
uint8_t count;
|
|
} spg_afn03_fn0d_query_sec_node_phase_info_dl_t;
|
|
|
|
/* report sec node phase information*/
|
|
typedef struct _spg_afn03_fn0d_rpt_sec_node_phase_info_ul {
|
|
/* total count of the secondary node */
|
|
uint16_t total_count;
|
|
/* current ack count of the secondary node */
|
|
uint8_t ack_node_count;
|
|
/* phase info of the secondary node */
|
|
spg_sec_node_phase_info_t node_info[0];
|
|
} spg_afn03_fn0d_rpt_sec_node_phase_info_ul_t;
|
|
|
|
/* report sec node guangzhou phase information */
|
|
typedef struct _spg_afn03_fn0d_rpt_sec_node_guangzhou_phase_info_ul {
|
|
/* total count of the secondary node */
|
|
uint16_t total_count;
|
|
/* current ack count of the secondary node */
|
|
uint8_t ack_node_count;
|
|
/* phase info of the secondary node */
|
|
spg_sec_node_guangzhou_phase_info_t node_info[0];
|
|
} spg_afn03_fn0d_rpt_sec_node_guangzhou_phase_info_ul_t;
|
|
|
|
/* sec node tsfm result info */
|
|
typedef struct _spg_sec_node_tsfm_info {
|
|
/* node mac addr */
|
|
uint8_t addr[IOT_MAC_ADDR_LEN];
|
|
/* transform detection result, see PROTO_SPG_CCO_RPT_TSFM_XXX */
|
|
uint8_t tsfm_result;
|
|
} spg_sec_node_tsfm_info_t;
|
|
|
|
/* query sec node transform detection result in white list */
|
|
typedef struct _spg_afn03_fn0e_query_in_wl_tsfm_result_dl {
|
|
/* start query index of the secondary node, start from 0 */
|
|
uint16_t start_index;
|
|
/* count of the secondary node to be queried */
|
|
uint8_t count;
|
|
} spg_afn03_fn0e_query_in_wl_tsfm_result_dl_t;
|
|
|
|
/* report sec node query result in white list */
|
|
typedef struct _spg_afn03_fn0e_query_in_wl_tsfm_result_ul {
|
|
/* total count of the secondary node */
|
|
uint16_t total_count;
|
|
/* current ack count of the secondary node */
|
|
uint8_t ack_node_count;
|
|
/* transform result of the secondary node */
|
|
spg_sec_node_tsfm_info_t node_info[0];
|
|
} spg_afn03_fn0e_query_in_wl_tsfm_result_ul_t;
|
|
|
|
/* sec node tsfm result info */
|
|
typedef struct _spg_other_sec_node_tsfm_info {
|
|
/* node mac addr */
|
|
uint8_t addr[IOT_MAC_ADDR_LEN];
|
|
/* CCo mac of network that the node last joined */
|
|
uint8_t prev_cco_addr[IOT_MAC_ADDR_LEN];
|
|
/* reserve */
|
|
uint16_t reserved;
|
|
} spg_other_sec_node_tsfm_info_t;
|
|
|
|
/* query sec node transform detection result not in white list */
|
|
typedef struct _spg_afn03_fn0f_query_other_tsfm_result_dl {
|
|
/* start query result of secondary node, start from 0 */
|
|
uint16_t start_index;
|
|
/* count of the secondary node to be queried */
|
|
uint8_t count;
|
|
} spg_afn03_fn0f_query_other_tsfm_result_dl_t;
|
|
|
|
/* report sec node query result of not in white list */
|
|
typedef struct _spg_afn03_fn0f_query_other_tsfm_result_ul {
|
|
/* total count of the secondary node */
|
|
uint16_t total_count;
|
|
/* current ack count of the secondary node */
|
|
uint8_t ack_node_count;
|
|
/* result of the secondary node */
|
|
spg_other_sec_node_tsfm_info_t node_info[0];
|
|
} spg_afn03_fn0f_query_other_tsfm_result_ul_t;
|
|
|
|
typedef struct _spg_afn03_fn23_query_net_info_dl {
|
|
/* start query network info of secondary node, start from 1 */
|
|
uint16_t start_index;
|
|
/* count of the secondary node to be queried */
|
|
uint8_t count;
|
|
} spg_afn03_fn23_query_net_info_dl_t;
|
|
|
|
typedef struct _spg_sec_node_net_info {
|
|
/* mac address of the station: little endian */
|
|
uint8_t mac[IOT_MAC_ADDR_LEN];
|
|
/* communication mode, see PROTO_SPG_COMM_MOD_XXX */
|
|
uint8_t comm_mode;
|
|
/* time of joined network */
|
|
uint8_t join_sec;
|
|
uint8_t join_min;
|
|
uint8_t join_hour;
|
|
uint8_t join_day;
|
|
uint8_t join_mon;
|
|
uint8_t join_year;
|
|
/* flag to mark if the sec node in the network */
|
|
uint8_t in_net;
|
|
/* cost time form power on to join network, unit is 1s */
|
|
uint32_t cost_time;
|
|
} spg_sec_node_net_info_t;
|
|
|
|
typedef struct spg_afn03_fn23_query_net_info_ul_t {
|
|
/* total count of the secondary node */
|
|
uint16_t total_count;
|
|
/* start query index of the secondary node */
|
|
uint16_t start_index;
|
|
/* current ack count of the secondary node */
|
|
uint8_t ack_node_count;
|
|
/* network info of the secondary node */
|
|
spg_sec_node_net_info_t net_info[0];
|
|
} spg_afn03_fn23_query_net_info_ul_t;
|
|
|
|
typedef struct _spg_afn03_fn24_query_net_info_dl {
|
|
/* node mac address - little endian */
|
|
uint8_t node_addr[IOT_MAC_ADDR_LEN];
|
|
} spg_afn03_fn24_query_net_info_dl_t;
|
|
|
|
typedef struct _spg_afn03_fn24_query_net_info_ul {
|
|
/* network info of the secondary node */
|
|
spg_sec_node_net_info_t net_info;
|
|
} spg_afn03_fn24_query_net_info_ul_t;
|
|
|
|
/* query topo down link request */
|
|
typedef struct _spg_afn03_fn65_query_topo_dl {
|
|
/* query topo start index */
|
|
uint16_t start_index;
|
|
/* query topo node count */
|
|
uint8_t count;
|
|
} spg_afn03_fn65_query_topo_dl_t;
|
|
|
|
/* sec node network topo info */
|
|
typedef struct _spg_node_topo_info_guangdong {
|
|
/* node mac address - little endian */
|
|
uint8_t mac[IOT_MAC_ADDR_LEN];
|
|
/* node identity */
|
|
uint16_t tei;
|
|
/* proxy node identity */
|
|
uint16_t pco_tei;
|
|
/* station joined time is based on the time of CCO power-on, uint is 1s */
|
|
uint32_t join_ts;
|
|
/* change count of the proxy */
|
|
uint16_t proxy_chg_cnt;
|
|
/* leaving network count of the station */
|
|
uint16_t leave_cnt;
|
|
/* node level */
|
|
uint8_t level :4,
|
|
/* node role */
|
|
role :4;
|
|
} spg_node_topo_info_guangdong_t;
|
|
|
|
/* report topo info to cctt */
|
|
typedef struct _spg_afn03_fn65_query_topo_ul {
|
|
/* total node count in network topo */
|
|
uint16_t total_cnt;
|
|
/* node start index in network topo */
|
|
uint16_t start_index;
|
|
/* acknowledge node count */
|
|
uint8_t ack_count;
|
|
/* network topo info list of the node */
|
|
spg_node_topo_info_guangdong_t node_info[0];
|
|
} spg_afn03_fn65_query_topo_ul_t;
|
|
|
|
/* query secondary node runtime */
|
|
typedef struct _spg_afn03_fn66_query_node_runtime_dl {
|
|
/* node mac address - little endian */
|
|
uint8_t mac[IOT_MAC_ADDR_LEN];
|
|
} spg_afn03_fn66_query_node_runtime_dl_t;
|
|
|
|
/* report secondary node runtime */
|
|
typedef struct _spg_afn03_fn66_query_node_runtime_ul {
|
|
/* node runtime */
|
|
uint32_t runtime;
|
|
} spg_afn03_fn66_query_node_runtime_ul_t;
|
|
|
|
/* query secondary node reject info */
|
|
typedef struct _spg_afn03_fn67_query_reject_info_dl {
|
|
/* query node start index */
|
|
uint16_t start_index;
|
|
/* query node count */
|
|
uint8_t count;
|
|
} spg_afn03_fn67_query_reject_info_dl_t;
|
|
|
|
/* report secondary node reject info */
|
|
typedef struct _spg_afn03_fn67_query_reject_info_ul {
|
|
/* total node count */
|
|
uint16_t total_cnt;
|
|
/* acknowledge node count */
|
|
uint8_t ack_count;
|
|
/* reject node mac addr, little endian */
|
|
uint8_t node_addr[0][IOT_MAC_ADDR_LEN];
|
|
} spg_afn03_fn67_query_reject_info_ul_t;
|
|
|
|
/* query neighbor node channel info */
|
|
typedef struct _spg_afn03_fn68_query_channel_info_dl {
|
|
/* neighbor node mac address, little endian */
|
|
uint8_t mac[IOT_MAC_ADDR_LEN];
|
|
/* query node start index, start from 0. */
|
|
uint16_t start_index;
|
|
/* query node count, query cco max count is 20,
|
|
* query sta max count is 6. see PROTO_SPG_MAX_QR_CHANNEL_XXX.
|
|
*/
|
|
uint8_t cnt;
|
|
} spg_afn03_fn68_query_channel_info_dl_t;
|
|
|
|
/* sta neighbor node info */
|
|
typedef struct _spg_neighbor_node_info {
|
|
/* neighbor node mac address, little endian */
|
|
uint8_t mac[IOT_MAC_ADDR_LEN];
|
|
/* neighbor node tei */
|
|
uint16_t tei;
|
|
/* neighbor node proxy tei */
|
|
uint16_t proxy_tei;
|
|
/* neighbor node level */
|
|
uint8_t level;
|
|
/* success rate of uplink communication
|
|
* between neighbor node and local node
|
|
*/
|
|
uint8_t ul_sr;
|
|
/* success rate of downlink communication
|
|
* between neighbor node and local node
|
|
*/
|
|
uint8_t dl_sr;
|
|
/* success rate of uplink and downlink communication
|
|
* between neighbor node and local node
|
|
*/
|
|
uint8_t ul_dl_sr;
|
|
/* snr between neighbor node and local node */
|
|
int8_t snr;
|
|
/* signal attenuation between neighbor node and local node */
|
|
uint8_t signal_attenuation;
|
|
} spg_neighbor_node_info_t;
|
|
|
|
/* report neighbor node channel info */
|
|
typedef struct _spg_afn03_fn68_query_channel_info_ul {
|
|
/* total node count */
|
|
uint16_t total_cnt;
|
|
/* report cnt */
|
|
uint8_t cnt;
|
|
/* neighbor node info */
|
|
spg_neighbor_node_info_t node_info[0];
|
|
} spg_afn03_fn68_query_channel_info_ul_t;
|
|
|
|
/* query package log information */
|
|
typedef struct _spg_afn03_fn69_qr_pkg_log_dl {
|
|
/* package type, 0 - app package, 1 - cctt package */
|
|
uint8_t pkg_type;
|
|
/* start index, start form 0 */
|
|
uint16_t start_index;
|
|
/* query count */
|
|
uint8_t cnt;
|
|
} spg_afn03_fn69_qr_pkg_log_dl_t;
|
|
|
|
/* package information */
|
|
typedef struct _spg_afn03_fn69_pkg_info {
|
|
/* package length */
|
|
uint16_t len;
|
|
/* package information */
|
|
uint8_t data[0];
|
|
} spg_afn03_fn69_pkg_info_t;
|
|
|
|
/* report package log information */
|
|
typedef struct _spg_afn03_fn69_qr_pkg_log_ul {
|
|
/* package total count */
|
|
uint16_t total_cnt;
|
|
/* report count */
|
|
uint8_t rpt_cnt;
|
|
/* package information */
|
|
//spg_afn03_fn69_pkg_info_t pkg_info;
|
|
} spg_afn03_fn69_qr_pkg_log_ul_t;
|
|
|
|
/* query secondary node check info */
|
|
typedef struct _spg_afn03_fn70_query_node_check_info_dl {
|
|
/* node mac address - little endian */
|
|
uint8_t mac[IOT_MAC_ADDR_LEN];
|
|
} spg_afn03_fn70_query_node_check_info_dl_t;
|
|
|
|
/* report secondary node check info */
|
|
typedef struct _spg_afn03_fn70_query_node_check_info_ul {
|
|
/* zero check result */
|
|
uint8_t zc_result;
|
|
/* uart state */
|
|
uint8_t uart_state;
|
|
/* leave net reason */
|
|
uint8_t leave_reason;
|
|
/* reset reason */
|
|
uint8_t reset_reason;
|
|
} spg_afn03_fn70_query_node_check_info_ul_t;
|
|
|
|
/* query topo down link request */
|
|
typedef struct _spg_afn03_fn11_fn85_query_topo_dl {
|
|
/* query topo start index */
|
|
uint16_t start_index;
|
|
/* query topo node count */
|
|
uint8_t node_count;
|
|
} spg_afn03_fn11_fn85_query_topo_dl;
|
|
|
|
/* sec node network topo info */
|
|
typedef struct _spg_node_info_for_topo {
|
|
/* node mac address - little endian */
|
|
uint8_t mac[IOT_MAC_ADDR_LEN];
|
|
/* node identity */
|
|
uint16_t tei;
|
|
/* proxy node identity */
|
|
uint16_t pco_tei;
|
|
/* node level */
|
|
uint8_t level : 4;
|
|
/* node role */
|
|
uint8_t role : 4;
|
|
} spg_node_info_for_topo_t;
|
|
|
|
/* report topo info to cctt */
|
|
typedef struct _spg_afn03_fn11_fn85_query_topo_ul {
|
|
/* total node count in network topo */
|
|
uint16_t node_count;
|
|
/* node start index in network topo */
|
|
uint16_t node_start_index;
|
|
/* acknowledge node count */
|
|
uint8_t ack_node_count;
|
|
/* network topo info list of the node */
|
|
spg_node_info_for_topo_t node_info[0];
|
|
} spg_afn03_fn11_fn85_query_topo_ul_t;
|
|
|
|
/* report net info to cctt */
|
|
typedef struct _spg_afn03_fn91_net_info {
|
|
/* total node count */
|
|
uint8_t total_node_cnt;
|
|
/* local node network nid --3 bytes */
|
|
uint8_t local_nid[PROTO_SPG_NID_LEN];
|
|
/* local node mac address */
|
|
uint8_t local_mac[IOT_MAC_ADDR_LEN];
|
|
/* neighbour node network nid */
|
|
uint8_t nb_nid[0][PROTO_SPG_NID_LEN];
|
|
} spg_afn03_fn91_net_info;
|
|
|
|
/* report net info to cctt from guangdong protocol */
|
|
typedef struct _spg_afn03_fn91_net_info_gd {
|
|
/* total node count */
|
|
uint8_t total_node_cnt;
|
|
/* local node network nid */
|
|
uint8_t local_nid;
|
|
/* local node mac address */
|
|
uint8_t local_mac[IOT_MAC_ADDR_LEN];
|
|
/* neighbour node network nid */
|
|
uint8_t nb_nid[0];
|
|
} spg_afn03_fn91_net_info_gd;
|
|
|
|
/* query white list enable info */
|
|
typedef struct _spg_afn03_fn93_query_wl_enable_ul {
|
|
/* flag to mark if white list enable, 0 - disable, 1 - enable */
|
|
uint8_t flag_enable;
|
|
/* range of influence from white list, see PROTO_SPG_WL_INFLUENCE_XXX */
|
|
uint8_t range;
|
|
} spg_afn03_fn93_query_wl_enable_ul_t;
|
|
|
|
/* set frequency enable flag and threshold value */
|
|
typedef struct _spg_afn03_fnb0_query_score_param_ul {
|
|
/* flag to mark if score report enable */
|
|
uint8_t flag_enable;
|
|
/* score report threshold value, BIN format */
|
|
uint8_t threshold;
|
|
} spg_afn03_fnb0_query_score_param_ul_t;
|
|
|
|
/* set auto start time */
|
|
typedef struct _spg_afn03_fnb1_query_auto_start_time_ul {
|
|
/* if 0 - every day start, others - every month start. BCD format */
|
|
uint8_t day;
|
|
/* BCD format */
|
|
uint8_t hour;
|
|
/* BCD format */
|
|
uint8_t minute;
|
|
uint8_t rsvd;
|
|
} spg_afn03_fnb1_query_auto_start_time_ul_t;
|
|
|
|
/* query pm score information down link */
|
|
typedef struct _spg_afn03_fnb2_query_pm_score_info_dl {
|
|
/* start query index of the secondary node, start from 1 */
|
|
uint16_t start_index;
|
|
/* count of the secondary node to be queried */
|
|
uint8_t count;
|
|
} spg_afn03_fnb2_query_pm_score_info_dl_t;
|
|
|
|
/* pm score information */
|
|
typedef struct _spg_pm_score_info {
|
|
/* power meter mac address, little endian */
|
|
uint8_t pm_mac[IOT_MAC_ADDR_LEN];
|
|
/* assessment score */
|
|
uint8_t score;
|
|
/* trouble data item */
|
|
uint32_t err_bm;
|
|
} spg_pm_score_info_t;
|
|
|
|
/* query pm score information up link */
|
|
typedef struct _spg_afn03_fnb2_query_pm_score_info_ul {
|
|
/* total count of the secondary node */
|
|
uint16_t total_count;
|
|
/* current ack count of the secondary node */
|
|
uint8_t ack_node_count;
|
|
/* score info of the secondary node */
|
|
spg_pm_score_info_t node_info[0];
|
|
} spg_afn03_fnb2_query_pm_score_info_ul_t;
|
|
|
|
/* set CCO address down link request*/
|
|
typedef struct _spg_afn04_fn01_set_cco_addr_dl {
|
|
/* cco address */
|
|
uint8_t mac[IOT_MAC_ADDR_LEN];
|
|
} spg_afn04_fn01_set_cco_addr_dl_t;
|
|
|
|
/* add secondary node down link request */
|
|
typedef struct _spg_afn04_fn02_add_sec_node_dl {
|
|
/* count of the secondary node to be added */
|
|
uint8_t sec_node_count;
|
|
/* mac address list of the secondary node to be added */
|
|
uint8_t mac_addr[0][IOT_MAC_ADDR_LEN];
|
|
} spg_afn04_fn02_add_sec_node_dl_t;
|
|
|
|
/* remove secondary node down link request */
|
|
typedef struct _spg_afn04_fn03_rm_sec_node_dl {
|
|
/* count of the secondary node to be removed */
|
|
uint8_t sec_node_count;
|
|
/* mac address list of the secondary node to be removed */
|
|
uint8_t mac_addr[0][IOT_MAC_ADDR_LEN];
|
|
} spg_afn04_fn03_rm_sec_node_dl_t;
|
|
|
|
/* set report event down link request */
|
|
typedef struct _spg_afn04_fn04_set_sec_node_rpt_dl {
|
|
/* 1 - allow report event, 0 - not allow report event */
|
|
uint8_t rpt_allowed;
|
|
} spg_afn04_fn04_set_sec_node_rpt_dl_t;
|
|
|
|
/* add meter mapping request */
|
|
typedef struct _spg_afn04_fn07_add_node_mapping_dl {
|
|
/* add meter mapping count this time */
|
|
uint8_t node_cnt;
|
|
/* meter mapping info */
|
|
spg_meter_mapping_info_t meter_mapping_info[0];
|
|
} spg_afn04_fn07_add_meter_mapping_dl_t;
|
|
|
|
/* start tsfm detect request */
|
|
typedef struct _spg_afn04_fn80_start_tsfm_detect {
|
|
/* broadcast transformer feature time, unit is 1min */
|
|
uint16_t tsfm_feature_bcast_time;
|
|
/* reserved */
|
|
uint8_t reserved;
|
|
} spg_afn04_fn80_start_tsfm_detect_t;
|
|
|
|
/* set frequency enable flag and threshold value */
|
|
typedef struct _spg_afn04_fnb0_set_flag_and_threshold {
|
|
/* flag to mark if score report enable */
|
|
uint8_t flag_enable;
|
|
/* score report threshold value, BIN format */
|
|
uint8_t threshold;
|
|
} spg_afn04_fnb0_set_flag_and_threshold_t;
|
|
|
|
/* set auto start time */
|
|
typedef struct _spg_afn04_fnb1_set_auto_start_time {
|
|
/* if 0 - every day start, others - every month start. BCD format */
|
|
uint8_t day;
|
|
/* BCD format */
|
|
uint8_t hour;
|
|
/* BCD format */
|
|
uint8_t minute;
|
|
uint8_t rsvd;
|
|
} spg_afn04_fnb1_set_auto_start_time_t;
|
|
|
|
/* report task data to cctt */
|
|
typedef struct _spg_afn05_fn01_rpt_task_data_ul {
|
|
/* task id */
|
|
uint16_t task_id;
|
|
/* length of the task data */
|
|
uint8_t data_len;
|
|
/* task data */
|
|
uint8_t data[0];
|
|
} spg_afn05_fn01_rpt_task_data_ul_t;
|
|
|
|
/* score event report data in 645 */
|
|
typedef struct _spg_score_645_data_t {
|
|
/* assessment score */
|
|
uint8_t score;
|
|
/* trouble data item */
|
|
uint32_t err_bm;
|
|
} spg_score_645_data_t;
|
|
|
|
/* score event report data filed in 645 */
|
|
typedef struct _spg_score_evt_645_data_field {
|
|
/* data unit id */
|
|
uint8_t di;
|
|
/* data */
|
|
uint8_t data[0];
|
|
} spg_score_evt_645_data_field_t;
|
|
|
|
/* data fields in 645 */
|
|
typedef struct spg_power_rpt_evt_ul_645_data_gz {
|
|
/* length of the event report data */
|
|
uint8_t evt_type;
|
|
/* event report data */
|
|
uint8_t data[0];
|
|
} spg_power_rpt_evt_ul_645_data_gz_t;
|
|
|
|
/* power event rpt data */
|
|
typedef struct _spg_power_rpt_evt_data_gd {
|
|
/* dev type, see PROTO_SPG_DEV_TYPE_XXX */
|
|
uint8_t dev_type;
|
|
/* pm addr, little endian */
|
|
uint8_t mac[IOT_MAC_ADDR_LEN];
|
|
} spg_power_rpt_evt_data_gd_t;
|
|
|
|
/* power event rpt data fields */
|
|
typedef struct _spg_power_evt_rpt_data_field_gd {
|
|
/* power event type, see PROTO_SPG_EVENT_POWER_XXX */
|
|
uint8_t evt_type;
|
|
/* event report data */
|
|
uint8_t data[0];
|
|
} spg_power_evt_rpt_data_field_gd_t;
|
|
|
|
/* report event to cctt */
|
|
typedef struct _spg_afn05_fn02_rpt_evt_ul {
|
|
/* length of the event report data */
|
|
uint8_t data_len;
|
|
/* event report data */
|
|
uint8_t data[0];
|
|
} spg_afn05_fn02_rpt_evt_ul_t;
|
|
|
|
/* report secondary node info up link */
|
|
typedef struct _spg_afn05_fn03_rpt_sec_node_ul {
|
|
/* report count of the secondary node current */
|
|
uint8_t sec_node_count;
|
|
/* mac address list of the secondary node to be reported */
|
|
uint8_t mac[0][IOT_MAC_ADDR_LEN];
|
|
} spg_afn05_fn03_rpt_sec_node_ul_t;
|
|
|
|
/* report task data to cctt */
|
|
typedef struct _spg_afn05_fn05_rpt_task_status_ul {
|
|
/* task id */
|
|
uint16_t task_id;
|
|
/* sec node mac addr */
|
|
uint8_t mac[IOT_MAC_ADDR_LEN];
|
|
/* task exe status */
|
|
uint8_t exe_status;
|
|
} spg_afn05_fn05_rpt_task_status_ul_t;
|
|
|
|
/* report collection task status */
|
|
typedef struct _spg_afn05_fn06_rpt_clct_task_status_ul {
|
|
/* clct task id */
|
|
uint8_t clct_task_id;
|
|
/* sec node mac addr */
|
|
uint8_t mac[IOT_MAC_ADDR_LEN];
|
|
/* collection task status, see PROTO_SPG_CLCT_TASK_STATUS_XXX */
|
|
uint8_t clct_task_status;
|
|
} spg_afn05_fn06_rpt_clct_task_status_ul_t;
|
|
|
|
/* report collection data read task status */
|
|
typedef struct _spg_afn05_fn07_rpt_clct_data_read_status_ul {
|
|
/* clct task id */
|
|
uint8_t clct_task_id;
|
|
/* collection task sn */
|
|
uint8_t clct_task_sn;
|
|
/* sec node mac addr */
|
|
uint8_t mac[IOT_MAC_ADDR_LEN];
|
|
/* read collection task data status, see PROTO_SPG_CLCT_READ_STATUS_XXX */
|
|
uint8_t read_data_status;
|
|
} spg_afn05_fn07_rpt_clct_data_read_status_ul_t;
|
|
|
|
/* collection read task data */
|
|
typedef struct _spg_clct_read_task_data {
|
|
/* datagram control code */
|
|
uint8_t fn;
|
|
/* this data as same as 645 data */
|
|
uint8_t data[0];
|
|
/* There is a CS check behind the data
|
|
* check from data
|
|
*/
|
|
//uint8_t cs;
|
|
} spg_clct_read_task_data_t;
|
|
|
|
/* report collection read task data */
|
|
typedef struct _spg_afn05_fn08_rpt_clct_read_task_data_ul {
|
|
/* collection task id */
|
|
uint8_t clct_task_id;
|
|
/* collection task sn */
|
|
uint8_t clct_task_sn;
|
|
/* this CRC as same as add task CRC */
|
|
uint16_t crc;
|
|
/* collection read task data */
|
|
//spg_clct_read_task_data_t read_task_data[0];
|
|
} spg_afn05_fn08_rpt_clct_read_task_data_ul_t;
|
|
|
|
typedef struct _spg_afn05_fn80_tsfm_info_rpt {
|
|
/* sec node addr */
|
|
uint8_t pm_addr[IOT_MAC_ADDR_LEN];
|
|
/* device type */
|
|
uint8_t dev_type;
|
|
/* power meter count of collector connected */
|
|
uint8_t pm_cnt;
|
|
/* the major addr of same transformer */
|
|
uint8_t tsfm_addr[IOT_MAC_ADDR_LEN];
|
|
/* reserved */
|
|
uint16_t reserved;
|
|
/* power meter node addr info if device type is collector */
|
|
uint8_t node_addr[0][IOT_MAC_ADDR_LEN];
|
|
} spg_afn05_fn80_tsfm_info_rpt_t;
|
|
|
|
/* report power event to cctt */
|
|
typedef struct _spg_afn05_fn81_node_evt_rpt {
|
|
/* device type, see IOT_SG_CCO_DEV_TYPE_XXX */
|
|
uint8_t dev_type;
|
|
/* proto type */
|
|
uint8_t proto_type;
|
|
/* length of the event report data */
|
|
uint8_t data_len;
|
|
/* event report data */
|
|
uint8_t data[0];
|
|
}spg_afn05_fn81_node_evt_rpt;
|
|
|
|
typedef struct _spg_afn06_fn01_correct_time {
|
|
uint8_t sec;
|
|
uint8_t min;
|
|
uint8_t hour;
|
|
uint8_t day;
|
|
uint8_t mon;
|
|
uint8_t year_l;
|
|
} spg_afn06_fn01_correct_time_t;
|
|
|
|
/* upgrade data down link request */
|
|
typedef struct _spg_afn07_fn02_trans_file_dl_data_t {
|
|
/* file segment index */
|
|
uint16_t index;
|
|
/* file length */
|
|
uint16_t length;
|
|
/* segment data */
|
|
uint8_t data[0];
|
|
} spg_afn07_fn02_trans_file_dl_data_t;
|
|
|
|
/* 16 bits crc value of the upgrade data down link request */
|
|
typedef struct _spg_afn07_fn02_trans_file_dl_crc_t {
|
|
/* 16 bits crc value of segment */
|
|
uint16_t crc16;
|
|
} spg_afn07_fn02_trans_file_dl_crc_t;
|
|
|
|
/* start upgrade down link request */
|
|
typedef struct _spg_afn07_fn01_start_upgrade_dl_t {
|
|
/* file type see - PROTO_SPG_UPGRADEFILE_XXX */
|
|
uint8_t type;
|
|
/* file identity */
|
|
uint8_t id;
|
|
/* detection mac addr */
|
|
uint8_t dest_mac[IOT_MAC_ADDR_LEN];
|
|
/* file total segment count */
|
|
uint16_t block_cnt;
|
|
/* file size - unit: byte */
|
|
uint32_t file_size;
|
|
/* 16 bits crc value of upgrade file */
|
|
uint16_t crc16;
|
|
/* window time of upgrade - unit: minute */
|
|
uint8_t time_window;
|
|
} spg_afn07_fn01_start_upgrade_dl_t;
|
|
|
|
/* report upgrade file information to cctt */
|
|
typedef struct _spg_afn07_fn03_rpt_upgrade_info_ul {
|
|
/* file type see - PROTO_SPG_UPGRADEFILE_XXX */
|
|
uint8_t type;
|
|
/* file identity */
|
|
uint8_t id;
|
|
/* detection mac addr */
|
|
uint8_t dest_mac[IOT_MAC_ADDR_LEN];
|
|
/* file total segment count */
|
|
uint16_t block_cnt;
|
|
/* file size - unit: byte */
|
|
uint32_t file_size;
|
|
/* 16 bits crc value of upgrade file */
|
|
uint16_t crc16;
|
|
/* received block count */
|
|
uint16_t received_cnt;
|
|
} spg_afn07_fn03_rpt_upgrade_info_ul_t;
|
|
|
|
/* report upgrade file information to cctt */
|
|
typedef struct _spg_afn07_fn04_rpt_upgrade_progress_ul {
|
|
/* upgrade progress see - PROTO_SPG_UPGRADE_PROGRESS_XXX */
|
|
uint8_t progress;
|
|
/* file identity */
|
|
uint8_t id;
|
|
/* upgrade fail count */
|
|
uint16_t fail_cnt;
|
|
} spg_afn07_fn04_rpt_upgrade_progress_ul_t;
|
|
|
|
/* report upgrade fail node information to cctt */
|
|
typedef struct _spg_afn07_fn05_req_upgrade_node_info_dl {
|
|
/* req start index */
|
|
uint16_t start_index;
|
|
/* current report count */
|
|
uint8_t cur_cnt;
|
|
} spg_afn07_fn05_req_upgrade_node_info_dl_t;
|
|
|
|
/* report upgrade fail node information to cctt */
|
|
typedef struct _spg_afn07_fn05_rpt_upgrade_node_info_ul {
|
|
/* total count of upgrade fail */
|
|
uint16_t total_cnt;
|
|
/* current report count */
|
|
uint8_t cur_cnt;
|
|
/* node mac address */
|
|
uint8_t addr[0][IOT_MAC_ADDR_LEN];
|
|
} spg_afn07_fn05_rpt_upgrade_node_info_ul_t;
|
|
|
|
/* collection di structure in collection task info for dl/t 645-97 */
|
|
typedef struct _spg_clct_task_id_97 {
|
|
/* control code */
|
|
uint8_t control_code;
|
|
/* di of collection data */
|
|
uint16_t di;
|
|
/* length of collection data */
|
|
uint8_t len_data;
|
|
} spg_clct_task_id_97_t;
|
|
|
|
/* collection di structure in collection task info for dl/t 645-07 */
|
|
typedef struct _spg_clct_task_id_07 {
|
|
/* control code */
|
|
uint8_t control_code;
|
|
/* di of collection data */
|
|
uint32_t di;
|
|
/* length of collection data */
|
|
uint8_t len_data;
|
|
} spg_clct_task_id_07_t;
|
|
|
|
/* collection fn structure in collection task */
|
|
typedef struct _spg_clct_task_fn {
|
|
/* type of pm protocol, see PROTO_SPG_CLCT_TASK_PROTO_TYPE_XXX */
|
|
uint16_t proto_type :3,
|
|
/* type of pm, see PROTO_SPG_CLCT_TASK_PM_TYPE_XXX */
|
|
meter_type :2,
|
|
/* reserved for future */
|
|
rsvd :11;
|
|
} spg_clct_task_fn_t;
|
|
|
|
/* collection data time structure, Guangdong appendix A.1 */
|
|
typedef struct _spg_clct_task_data_time {
|
|
/* data time, BIN type */
|
|
uint16_t base_min :6, /* D0 - D5 */
|
|
base_hour :5, /* D6 - D10 */
|
|
base_day :5; /* D11 - D15 */
|
|
} spg_clct_task_data_time_t;
|
|
|
|
/* collection task info structure in collection task */
|
|
typedef struct _spg_clct_task_info {
|
|
/* task id */
|
|
uint8_t task_id;
|
|
/* task control code */
|
|
spg_clct_task_fn_t fn;
|
|
/* task timout time, uint is 1s */
|
|
uint16_t timeout;
|
|
/* collection base time */
|
|
spg_clct_task_data_time_t base_time;
|
|
/* collection period */
|
|
uint8_t period;
|
|
/* cnt of di */
|
|
uint8_t di_cnt;
|
|
/* collection data info, see spg_clct_task_id_97_t or
|
|
* spg_clct_task_id_07_t base on proto_type.
|
|
*/
|
|
uint8_t data[0];
|
|
/* There is a CRC check behind the data
|
|
* CRC check from fn to data
|
|
*/
|
|
//uint16_t crc;
|
|
} spg_clct_task_info_t;
|
|
|
|
/* delete collect task */
|
|
typedef struct _spg_afn08_fn01_add_clct_task {
|
|
/* delete collect task id */
|
|
spg_clct_task_info_t clct_task_info;
|
|
} spg_afn08_fn01_add_clct_task_t;
|
|
|
|
/* delete collect task */
|
|
typedef struct _spg_afn08_fn02_delete_clct_task {
|
|
/* delete collect task id */
|
|
uint8_t clct_task_id;
|
|
} spg_afn08_fn02_delete_clct_task_t;
|
|
|
|
/* query collection task id up link */
|
|
typedef struct _spg_afn08_fn03_query_clct_task_id_ul {
|
|
/* the module supports the max count of collection tasks */
|
|
uint8_t max_task_cnt;
|
|
/* the current count of collection tasks */
|
|
uint8_t cur_task_cnt;
|
|
/* clct task id data */
|
|
uint8_t clct_task_id[0];
|
|
} spg_afn08_fn03_query_clct_task_id_ul_t;
|
|
|
|
/* query collection task detailed information down link */
|
|
typedef struct _spg_afn08_fn04_query_clct_task_info_dl {
|
|
/* task id */
|
|
uint8_t clct_task_id;
|
|
} spg_afn08_fn04_query_clct_task_info_dl_t;
|
|
|
|
/* query collection task detailed information up link */
|
|
typedef struct _spg_afn08_fn04_query_clct_task_info_ul {
|
|
/* task id */
|
|
spg_clct_task_info_t clct_task_info;
|
|
} spg_afn08_fn04_query_clct_task_info_ul_t;
|
|
|
|
/* add collection data read task */
|
|
typedef struct _spg_afn08_fn05_add_clct_data_read_dl {
|
|
/* task priority, 0 - hight priority, 3 - low priority */
|
|
uint8_t task_pri :4,
|
|
/* reserved */
|
|
reserved :4;
|
|
/* timeout */
|
|
uint16_t timeout;
|
|
/* collection task id */
|
|
uint8_t clct_task_id;
|
|
/* collection task sn */
|
|
uint8_t clct_task_sn;
|
|
/* start time */
|
|
spg_clct_task_data_time_t start_time;
|
|
/* time count */
|
|
uint8_t time_cnt;
|
|
} spg_afn08_fn05_add_clct_data_read_dl_t;
|
|
|
|
/* delete collection data read task */
|
|
typedef struct _spg_afn08_fn06_del_clct_data_read_dl {
|
|
/* task id */
|
|
uint8_t clct_task_id;
|
|
} spg_afn08_fn06_del_clct_data_read_dl_t;
|
|
|
|
/* query collection data read task infomation down link */
|
|
typedef struct _spg_afn08_fn07_query_clct_data_read_info_dl {
|
|
/* task id */
|
|
uint8_t clct_task_id;
|
|
} spg_afn08_fn07_query_clct_data_read_info_dl_t;
|
|
|
|
/* query collection data read task infomation up link */
|
|
typedef struct _spg_afn08_fn07_query_clct_data_read_info_ul {
|
|
/* task priority, 0 - hight priority, 3 - low priority */
|
|
uint8_t task_pri : 4,
|
|
/* reserved */
|
|
reserved : 4;
|
|
/* timeout */
|
|
uint16_t timeout;
|
|
/* collection task id */
|
|
uint8_t clct_task_id;
|
|
/* collection task sn */
|
|
uint8_t clct_task_sn;
|
|
/* start time */
|
|
spg_clct_task_data_time_t start_time;
|
|
/* time count */
|
|
uint8_t time_cnt;
|
|
} spg_afn08_fn07_query_clct_data_read_info_ul_t;
|
|
|
|
/* query collection task status down link by addr */
|
|
typedef struct _spg_afn08_fn08_query_clct_task_status_dl {
|
|
/* current query secondary node count */
|
|
uint8_t cur_cnt;
|
|
/* secondary node mac address */
|
|
uint8_t addr[0][IOT_MAC_ADDR_LEN];
|
|
} spg_afn08_fn08_query_clct_task_status_dl_t;
|
|
|
|
/* collection task status data */
|
|
typedef struct _spg_clct_task_status_data {
|
|
/* task id */
|
|
uint8_t clct_task_id;
|
|
/* collection task status */
|
|
uint8_t clct_task_status;
|
|
} spg_clct_task_status_data_t;
|
|
|
|
/* secondary node collection task status */
|
|
typedef struct _spg_sec_clct_task_status {
|
|
/* secondary node mac address */
|
|
uint8_t addr[IOT_MAC_ADDR_LEN];
|
|
/* secondary node collection task count */
|
|
uint8_t clct_task_cnt;
|
|
/* collection task status data */
|
|
spg_clct_task_status_data_t status_data[0];
|
|
} spg_sec_clct_task_status_t;
|
|
|
|
/* query collection task status ul link */
|
|
typedef struct _spg_afn08_fn08_query_clct_task_status_ul {
|
|
/* current report secondary node count */
|
|
uint8_t cur_cnt;
|
|
/* collection task status */
|
|
//spg_sec_clct_task_status_t clct_task_status[0];
|
|
} spg_afn08_fn08_query_clct_task_status_ul_t;
|
|
|
|
/* query collection task status down link by index */
|
|
typedef struct _spg_afn08_fn09_query_clct_task_status_dl {
|
|
/* query secondary node start index, starting from 0 */
|
|
uint16_t start_index;
|
|
/* secondary node count */
|
|
uint8_t sec_cnt;
|
|
} spg_afn08_fn09_query_clct_task_status_dl_t;
|
|
|
|
/* query collection task status ul link */
|
|
typedef struct _spg_afn08_fn09_query_clct_task_status_ul {
|
|
/* current report secondary node count */
|
|
uint8_t cur_cnt;
|
|
/* collection task status */
|
|
//spg_sec_clct_task_status_t clct_task_status[0];
|
|
} spg_afn08_fn09_query_clct_task_status_ul_t;
|
|
|
|
/* data send dl link */
|
|
typedef struct _spg_afn22_fn01_data_send_dl {
|
|
/* data type, see PROTO_SPG_CTRL_DATA_TYPE_XXX */
|
|
uint8_t data_type;
|
|
/* data send param */
|
|
uint8_t data_para[8];
|
|
/* data send length */
|
|
uint16_t data_len;
|
|
/* send data */
|
|
uint8_t data[0];
|
|
} spg_afn22_fn01_data_send_dl_t;
|
|
|
|
/* data send ul link */
|
|
typedef struct _spg_afn22_fn01_data_send_ul {
|
|
/* data type, see PROTO_SPG_CTRL_DATA_TYPE_XXX */
|
|
uint8_t data_type;
|
|
/* data send param */
|
|
uint8_t data_para[8];
|
|
/* data send length */
|
|
uint16_t data_len;
|
|
/* send data */
|
|
uint8_t data[0];
|
|
} spg_afn22_fn01_data_send_ul_t;
|
|
|
|
/* node info */
|
|
typedef struct _spg_ctrl_node_info_t {
|
|
/* newwork id */
|
|
uint32_t nid : 24,
|
|
/* band id */
|
|
band_id : 8;
|
|
/* node mac address : small endian */
|
|
uint8_t addr[IOT_MAC_ADDR_LEN];
|
|
} spg_ctrl_node_info_t;
|
|
|
|
/* report scan node information to app */
|
|
typedef struct _spg_afn41_fn01_rpt_node_info_ul {
|
|
/* total count of scan node */
|
|
uint8_t total_cnt;
|
|
/* node info */
|
|
spg_ctrl_node_info_t node_info[0];
|
|
} spg_afn41_fn01_rpt_node_info_ul;
|
|
|
|
/* request connect node down link */
|
|
typedef struct _spg_afn41_fn02_req_connect_node_dl {
|
|
/* req connect node */
|
|
uint8_t addr[IOT_MAC_ADDR_LEN];
|
|
/* reserved */
|
|
uint16_t reserved;
|
|
} spg_afn41_fn02_req_connect_node_dl_t;
|
|
|
|
/* request connect node down link */
|
|
typedef struct _spg_afnf0_fn01_req_connect_node_dl {
|
|
/* req connect node */
|
|
uint8_t addr[IOT_MAC_ADDR_LEN];
|
|
} spg_afnf0_fn01_req_connect_node_dl_t;
|
|
|
|
/* set band up link, for guangzhou protocol */
|
|
typedef struct _spg_afnf0_fn01_set_band_ul {
|
|
/* result, 00 00 00 00 is success, otherwise is fail*/
|
|
uint8_t ret[4];
|
|
} spg_afnf0_fn01_set_band_ul_t;
|
|
|
|
typedef struct _spg_afnf0_fnf4_phy_topo_query_dl {
|
|
/* query physical topo start index */
|
|
uint16_t start_index;
|
|
/* query count */
|
|
uint8_t count;
|
|
} spg_afnf0_fnf4_phy_topo_query_dl_t;
|
|
|
|
/* physical topo */
|
|
typedef struct _spg_phy_topo_node_info {
|
|
/* node mac addr, little endian */
|
|
uint8_t mac_addr[IOT_MAC_ADDR_LEN];
|
|
/* device type, see PROTO_SPG_BD_DEV_TYPE_XXX */
|
|
uint8_t dev_type;
|
|
/* father node mac addr, little endian */
|
|
uint8_t father_node[IOT_MAC_ADDR_LEN];
|
|
/* phase info */
|
|
uint8_t phase : 3,
|
|
/* node phase feature, see PTORO_SPG_SEC_NODE_PHASE_XXX */
|
|
phase_feature : 2,
|
|
/* node phase type, see PROTO_SPG_PHASE_SEQ_XXX */
|
|
phase_type : 3;
|
|
/* proto type, see PROTO_SPG_PROTO_TYPE_XXX */
|
|
uint8_t proto_type : 3,
|
|
/* reserved1 */
|
|
reserved1 : 3,
|
|
/* module type, see PROTO_SPG_MODULE_XXX */
|
|
module_type : 2;
|
|
/* reserved2 */
|
|
uint8_t reserved2[15];
|
|
} spg_phy_topo_node_info_t;
|
|
|
|
typedef struct _spg_afnf0_fnf4_phy_topo_query_ul {
|
|
/* total node count */
|
|
uint16_t total_cnt;
|
|
/* start query index */
|
|
uint16_t start_index;
|
|
/* report node count */
|
|
uint8_t rpt_cnt;
|
|
/* physical topo node info */
|
|
spg_phy_topo_node_info_t node_info[0];
|
|
} spg_afnf0_fnf4_phy_topo_query_ul_t;
|
|
|
|
typedef struct _spg_afnf0_fnf5_bd_state_ul {
|
|
/* report branch detect state, see PROTO_SPG_BD_STATE_XXX */
|
|
uint8_t rpt_state;
|
|
} spg_afnf0_fnf5_bd_state_ul_t;
|
|
|
|
typedef struct _spg_afnf0_fnf6_bd_enable {
|
|
/* if enable branch detect, 0 stop branch detect, 1 start branch detect */
|
|
uint8_t enable;
|
|
/* reserved */
|
|
uint8_t reserved[5];
|
|
} spg_afnf0_fnf6_bd_enable_t;
|
|
|
|
/* transformer detect enable for guangzhou */
|
|
typedef struct _spg_afnf0_fn10_enable_tsfm {
|
|
/* start time */
|
|
uint8_t start_time[PROTO_SPG_DATETIME_LEN];
|
|
/* tsfm duration, unit is 1min */
|
|
uint16_t duration;
|
|
/* sec node retry count */
|
|
uint8_t retry_cnt;
|
|
/* each wait tick is 150ms */
|
|
uint8_t wait_tick_cnt;
|
|
} spg_afnf0_fn10_enable_tsfm_t;
|
|
|
|
/* data to response for query build version info */
|
|
typedef struct _spg_afnf0_fnde_build_ver_info {
|
|
/* Build type: Release/Debug-(0/1) */
|
|
uint8_t type_ver;
|
|
/* numerically encoded version, like 0x01020304 */
|
|
uint32_t firmware_version;
|
|
/* external software version. BCD format. range from 0 - 9999 */
|
|
uint16_t sw_ver;
|
|
/* app software version. bin format. range from 0 - 1023 */
|
|
uint16_t app_ver;
|
|
/* build year */
|
|
uint8_t year;
|
|
/* build month */
|
|
uint8_t month;
|
|
/* build day */
|
|
uint8_t day;
|
|
/* build hour */
|
|
uint8_t hour;
|
|
/* build min */
|
|
uint8_t min;
|
|
/* build sec */
|
|
uint8_t sec;
|
|
/* vendor id */
|
|
uint16_t vendor_id;
|
|
/* device id */
|
|
uint8_t dev_id[PROTO_SPG_DEVICE_ID_LEN];
|
|
/* chip management id */
|
|
uint8_t chip_mmid[PROTO_SPG_CHIP_MMID_ID_LEN];
|
|
/* image crc check result, 0 mean succeed, 1 mean fail */
|
|
uint8_t img_check_result : 1,
|
|
/* flag mark to if the device has branch signal receiving capability */
|
|
br_ident : 1,
|
|
/* flag mark to if enable rf */
|
|
rf : 1,
|
|
/* non 0 means broadcast packet sent in 3phase simultaneously, 0 means
|
|
* broadcast packet sent in 3phase in turn.
|
|
*/
|
|
tx_3phase_flag : 1,
|
|
/* reserve for future */
|
|
reserve : 4;
|
|
/* hardware version */
|
|
uint32_t hw_ver;
|
|
/* module mac address */
|
|
uint8_t mod_addr[IOT_MAC_ADDR_LEN];
|
|
/* user type */
|
|
uint8_t user_type;
|
|
/* simple pair passcode value. Only same passcode CCO and STA can be
|
|
* associated, little endian.
|
|
*/
|
|
uint16_t passcode;
|
|
/* equipment service provider, see IOT_SG_CCO_ESP_XXX */
|
|
uint8_t esp;
|
|
}spg_afnf0_fnde_build_ver_info_t;
|
|
|
|
/* report while list ii count */
|
|
typedef struct _spg_afnf0_fn13_node_info {
|
|
/* while list ii count */
|
|
uint16_t sec_node_num;
|
|
/* max while list ii count */
|
|
uint16_t max_sec_node_num;
|
|
} spg_afnf0_fn13_node_info_t;
|
|
|
|
/* query while list ii node info */
|
|
typedef struct _spg_afnf0_fn14_node_info_req {
|
|
/* start query index */
|
|
uint16_t start_index;
|
|
/* query count */
|
|
uint8_t count;
|
|
} spg_afnf0_fn14_node_info_req_t;
|
|
|
|
/* report query while list ii node info result */
|
|
typedef struct _spg_afnf0_fn14_node_info_rsp {
|
|
/* total count of secondary nodes */
|
|
uint16_t total_count;
|
|
/* count of secondary nodes returned in this packet */
|
|
uint8_t count;
|
|
/* secondary nodes info */
|
|
/* mac address list of the secondary node */
|
|
uint8_t mac[0][IOT_MAC_ADDR_LEN];
|
|
} spg_afnf0_fn14_node_info_rsp_t;
|
|
|
|
/* add white list ii node */
|
|
typedef struct _spg_afnf0_fn15_add_wlii_dl {
|
|
/* count of the secondary node to be added */
|
|
uint8_t sec_node_count;
|
|
/* mac address list of the secondary node to be added */
|
|
uint8_t mac_addr[0][IOT_MAC_ADDR_LEN];
|
|
} spg_afnf0_fn15_add_wlii_dl_t;
|
|
|
|
/* remove while list ii node request */
|
|
typedef struct _spg_afnf0_fn16_rmv_wlii_dl {
|
|
/* count of the secondary node to be remove */
|
|
uint8_t sec_node_cnt;
|
|
/* mac address list of the secondary node to be remove */
|
|
uint8_t mac_addr[0][IOT_MAC_ADDR_LEN];
|
|
} spg_afnf0_fn16_rmv_wlii_dl_t;
|
|
|
|
/* set frequency band parameter */
|
|
typedef struct _spg_set_freq_band {
|
|
uint8_t freq_band;
|
|
} spg_set_freq_band_t;
|
|
|
|
/* query sec node frequency band information */
|
|
typedef struct _spg_query_freq_band {
|
|
uint8_t freq_band;
|
|
} spg_query_freq_band_t;
|
|
|
|
#pragma pack(pop) /* restore the pack status */
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* PROTO_SPG_CCO_H */
|