1010 lines
36 KiB
C
1010 lines
36 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_SG_STA_DRV_H
|
||
|
#define IOT_SG_STA_DRV_H
|
||
|
|
||
|
/* os shim includes */
|
||
|
#include "os_types_api.h"
|
||
|
|
||
|
/* common includes */
|
||
|
#include "iot_rtc_api.h"
|
||
|
#include "iot_pkt_api.h"
|
||
|
#include "iot_uart_api.h"
|
||
|
#include "iot_sg_drv_api.h"
|
||
|
#include "iot_sg_cfg.h"
|
||
|
#include "iot_sg_ext_sta_api.h"
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
/* define driver id */
|
||
|
#define IOT_SG_STA_DRV_ID_INVALID 0x0000
|
||
|
#define IOT_SG_STA_DRV_ID_645_PM 0x0001
|
||
|
#define IOT_SG_STA_DRV_ID_CT1 0x0002
|
||
|
#define IOT_SG_STA_DRV_ID_CT2 0x0003
|
||
|
#define IOT_SG_STA_DRV_ID_TEST 0x0004
|
||
|
#define IOT_SG_STA_DRV_ID_1662_PM 0x0005
|
||
|
#define IOT_SG_STA_DRV_ID_QSXJ_PM 0x0006
|
||
|
#define IOT_SG_STA_DRV_ID_HX_DLMS_PM 0x0007
|
||
|
#define IOT_SG_STA_DRV_ID_WAPPER_PM 0x0008
|
||
|
#define IOT_SG_STA_DRV_ID_IEC_PM 0x0009
|
||
|
#define IOT_SG_STA_DRV_ID_MAX IOT_SG_STA_DRV_ID_IEC_PM
|
||
|
|
||
|
/* define driver load mode */
|
||
|
#define IOT_SG_STA_DRV_LOAD_MODE_STATIC 0x0001
|
||
|
#define IOT_SG_STA_DRV_LOAD_MODE_DYNAMIC 0x0002
|
||
|
|
||
|
/* define maximum number of drivers in the table */
|
||
|
#define IOT_SG_STA_DRV_TABLE_SIZE 9
|
||
|
|
||
|
/* define event report result */
|
||
|
/* event delivered to cco successfully */
|
||
|
#define IOT_SG_STA_EVENT_RPT_OK 0
|
||
|
/* event buffer is full in cco side */
|
||
|
#define IOT_SG_STA_EVENT_RPT_BUF_FULL 1
|
||
|
/* event delivery timeout */
|
||
|
#define IOT_SG_STA_EVENT_RPT_TIMEOUT 2
|
||
|
/* event report disabled */
|
||
|
#define IOT_SG_STA_EVENT_RPT_DISABLED 3
|
||
|
/* event report enabled */
|
||
|
#define IOT_SG_STA_EVENT_RPT_ENABLED 4
|
||
|
|
||
|
/* define protocol data type between sta and meter */
|
||
|
#define IOT_SG_STA_DATA_TYPE_TRANS 0
|
||
|
#define IOT_SG_STA_DATA_TYPE_645_97 1
|
||
|
#define IOT_SG_STA_DATA_TYPE_645_07 2
|
||
|
#define IOT_SG_STA_DATA_TYPE_69845 3
|
||
|
|
||
|
/* define data type mask between sta and meter */
|
||
|
#define IOT_SG_STA_DATA_TYPE_MASK_TRANS (1 << IOT_SG_STA_DATA_TYPE_TRANS)
|
||
|
#define IOT_SG_STA_DATA_TYPE_MASK_645_97 (1 << IOT_SG_STA_DATA_TYPE_645_97)
|
||
|
#define IOT_SG_STA_DATA_TYPE_MASK_645_07 (1 << IOT_SG_STA_DATA_TYPE_645_07)
|
||
|
#define IOT_SG_STA_DATA_TYPE_MASK_69845 (1 << IOT_SG_STA_DATA_TYPE_69845)
|
||
|
|
||
|
/* define device type */
|
||
|
#define IOT_SG_STA_DEV_TYPE_POWER_METER 0
|
||
|
#define IOT_SG_STA_DEV_TYPE_COLLECTOR_T1 1
|
||
|
#define IOT_SG_STA_DEV_TYPE_COLLECTOR_T2 2
|
||
|
#define IOT_SG_STA_DEV_TYPE_COLLECTOR_T3 3
|
||
|
|
||
|
/* define driver address type */
|
||
|
#define IOT_SG_STA_DRV_ADDR_TYPE_DEFAULT 0
|
||
|
#define IOT_SG_STA_DRV_ADDR_TYPE_METER 1
|
||
|
#define IOT_SG_STA_DRV_ADDR_TYPE_COLLECTOR 2
|
||
|
#define IOT_SG_STA_DRV_ADDR_TYPE_REPEATER 3
|
||
|
#define IOT_SG_STA_DRV_ADDR_TYPE_FOLLOW 4
|
||
|
|
||
|
#define IOT_SG_STA_VENDOR_INFO_TYPE_INVALID 0
|
||
|
#define IOT_SG_STA_VENDOR_INFO_TYPE_VERSION 1
|
||
|
|
||
|
/* station transformer detect result */
|
||
|
#define IOT_SG_STA_TSFM_DETECT_RET_UNKNOWN (0)
|
||
|
#define IOT_SG_STA_TSFM_DETECT_RET_SAME (1)
|
||
|
#define IOT_SG_STA_TSFM_DETECT_RET_DIFFERENT (2)
|
||
|
|
||
|
/* define type of app proto, gw */
|
||
|
#define IOT_SG_STA_APP_PROTO_GW 0
|
||
|
/* define type of app proto, nw */
|
||
|
#define IOT_SG_STA_APP_PROTO_NW 1
|
||
|
|
||
|
/* define secondary node register report type */
|
||
|
#define IOT_SG_STA_NODE_RPT_TYPE_NO_EXIST (0)
|
||
|
#define IOT_SG_STA_NODE_RPT_TYPE_EXIST (1)
|
||
|
#define IOT_SG_STA_NODE_RPT_TYPE_UPDATE (2)
|
||
|
|
||
|
/* define secondary node register report type */
|
||
|
#define IOT_SG_STA_PM_INFO_TYPE_UNKNOW (0)
|
||
|
#define IOT_SG_STA_PM_INFO_TYPE_PF_PO (1)
|
||
|
|
||
|
/* define module pull out state unknown */
|
||
|
#define IOT_SG_STA_PO_CHECK_UNKNOWN (0)
|
||
|
/* define module state not pulled out */
|
||
|
#define IOT_SG_STA_PO_CHECK_NO (1)
|
||
|
/* define module state pulled out */
|
||
|
#define IOT_SG_STA_PO_CHECK_YES (2)
|
||
|
|
||
|
/* define drv event type */
|
||
|
#define IOT_SG_STA_NET_STATE_JOINING (0)
|
||
|
#define IOT_SG_STA_NET_STATE_JOINED (1)
|
||
|
#define IOT_SG_STA_NET_STATE_LEAVE (2)
|
||
|
|
||
|
/* define drive upgrade state */
|
||
|
#define IOT_SG_STA_DRV_UPGRADE_STATE_IDLE (0)
|
||
|
#define IOT_SG_STA_DRV_UPGRADE_STATE_START (1)
|
||
|
|
||
|
/* define sta plc comm type */
|
||
|
#define IOT_SG_STA_PLC_COMM_TYPE_HPLC_MODE (0)
|
||
|
#define IOT_SG_STA_PLC_COMM_TYPE_DUAL_MODE (1)
|
||
|
|
||
|
/* define 698 meter correct time mode */
|
||
|
#define IOT_SG_STA_698_CORR_TIME_MODE_NO_RN (0)
|
||
|
#define IOT_SG_STA_698_CORR_TIME_MODE_WITH_RN (1)
|
||
|
|
||
|
/* station device info descriptor */
|
||
|
typedef struct _iot_sg_sta_dev_info {
|
||
|
/* device ID */
|
||
|
uint8_t dev_id[IOT_MAC_ADDR_LEN];
|
||
|
/* reset number */
|
||
|
uint16_t reset_cnt;
|
||
|
} iot_sg_sta_dev_info_t;
|
||
|
|
||
|
/* station plc_state info descriptor */
|
||
|
typedef struct _iot_sg_sta_plc_info {
|
||
|
/* sta mac, big-endian */
|
||
|
uint8_t sta_mac[IOT_MAC_ADDR_LEN];
|
||
|
/* cco mac, big-endian */
|
||
|
uint8_t cco_mac[IOT_MAC_ADDR_LEN];
|
||
|
/* net state, see IOT_SG_STA_NET_STATE_XXX */
|
||
|
uint8_t net_state;
|
||
|
/* snr */
|
||
|
int16_t snr;
|
||
|
/* number of times to join the network */
|
||
|
uint16_t join_cnt;
|
||
|
/* app data forward total count */
|
||
|
uint32_t app_data_fwd_cnt;
|
||
|
} iot_sg_sta_plc_info_t;
|
||
|
|
||
|
/* transformer info result */
|
||
|
typedef struct _iot_sg_sta_tsfm_result {
|
||
|
/* 0 - transformer detect in progress, 1 - transformer detect done */
|
||
|
uint8_t hw_tsfm_done;
|
||
|
/* real transformer mac address, big-endian */
|
||
|
uint8_t hw_tsfm_addr[IOT_MAC_ADDR_LEN];
|
||
|
/* tsfm detect result see - IOT_SG_STA_TSFM_DETECT_RET_XXX */
|
||
|
uint8_t hw_tsfm_result;
|
||
|
/* 0 - transformer detect in progress, 1 - transformer detect done */
|
||
|
uint8_t sw_tsfm_done;
|
||
|
/* real transformer mac address, big-endian */
|
||
|
uint8_t sw_tsfm_addr[IOT_MAC_ADDR_LEN];
|
||
|
/* tsfm detect result see - IOT_SG_STA_TSFM_DETECT_RET_XXX */
|
||
|
uint8_t sw_tsfm_result;
|
||
|
} iot_sg_sta_tsfm_result_t;
|
||
|
|
||
|
typedef struct _iot_sg_sta_drv_time {
|
||
|
uint8_t year;
|
||
|
uint8_t month;
|
||
|
uint8_t day;
|
||
|
uint8_t hour;
|
||
|
uint8_t mintue;
|
||
|
uint8_t second;
|
||
|
} iot_sg_sta_drv_time_t;
|
||
|
|
||
|
/* query secondary node register payload from cco to sta */
|
||
|
typedef struct _iot_sg_sta_drv_node_info {
|
||
|
/* power meter mac address */
|
||
|
uint8_t pm_addr[IOT_MAC_ADDR_LEN];
|
||
|
/* power meter data type. see IOT_SG_STA_DATA_TYPE_XXX */
|
||
|
uint8_t data_type;
|
||
|
/* module type. see IOT_SG_STA_DEV_TYPE_XXX */
|
||
|
uint8_t module_type :2,
|
||
|
/* flag to mark if the node is Q/GDW 354-2009 meter */
|
||
|
is_09_rule :1,
|
||
|
/* flag to mark if the meter is three phase meter */
|
||
|
is_three_phase :1,
|
||
|
/* phase of the device, bit0-2 means phaseA/B/C, set "1" to
|
||
|
* indicate which phase the device belongs to.
|
||
|
*/
|
||
|
phase :3,
|
||
|
/* flag to mark if voltage reverse phase sequence */
|
||
|
v_rps :1;
|
||
|
/* flag to mark if physical phase identification done */
|
||
|
uint8_t phase_ident :1,
|
||
|
/* flag to mark if the meter support load record */
|
||
|
supp_lr :1,
|
||
|
/* suspected status of the meter, 1 - power off, 0 - power on */
|
||
|
sus_pof :1,
|
||
|
/* flag to mark if node is double protocol */
|
||
|
double_proto :1,
|
||
|
/* reserved for future */
|
||
|
reserved :4;
|
||
|
} iot_sg_sta_drv_node_info_t;
|
||
|
|
||
|
typedef struct _iot_sg_sta_drv_fj_evt_rpt_cfg {
|
||
|
/* event report mode for fujian, see IOT_SG_STA_FJ_EVT_RPT_MODE_XXX */
|
||
|
uint8_t fj_evt_rpt_mode :2,
|
||
|
/* event report type for fujian, see IOT_SG_STA_FJ_EVT_RPT_TYPE_XXX */
|
||
|
fj_evt_rpt_type :1,
|
||
|
/* enable event report or not when report mode is external, 1 - enable */
|
||
|
fj_evt_rpt_en :1,
|
||
|
/* reserved for future */
|
||
|
reserved_2 :4;
|
||
|
} iot_sg_sta_drv_fj_evt_rpt_cfg_t;
|
||
|
|
||
|
/* pack for the structures in the whole file */
|
||
|
#pragma pack(push) /* save the pack status */
|
||
|
#pragma pack(1) /* 1 byte align */
|
||
|
|
||
|
/* meter list base element */
|
||
|
typedef struct _iot_sg_sta_drv_meter_info_t {
|
||
|
/* meter address */
|
||
|
uint8_t meter_addr[IOT_MAC_ADDR_LEN];
|
||
|
/* reserved for future, default set as 0 */
|
||
|
uint16_t reserved;
|
||
|
} iot_sg_sta_drv_meter_info_t;
|
||
|
|
||
|
/* sta frame add meter list to driver */
|
||
|
typedef struct _iot_sg_sta_drv_meter_list {
|
||
|
/* meter count */
|
||
|
uint8_t meter_count;
|
||
|
/* reserved for future, default set as 0 */
|
||
|
uint8_t rsvd[3];
|
||
|
/* meter information */
|
||
|
iot_sg_sta_drv_meter_info_t meter_info[0];
|
||
|
} iot_sg_sta_drv_meter_list_t;
|
||
|
|
||
|
/* map list base element */
|
||
|
typedef struct _iot_sg_sta_drv_map_list_info {
|
||
|
/* login address */
|
||
|
uint8_t login_addr[IOT_MAC_ADDR_LEN];
|
||
|
/* meter address */
|
||
|
uint8_t meter_addr[IOT_METER_ADDR_LEN];
|
||
|
} iot_sg_sta_drv_map_list_info_t;
|
||
|
|
||
|
/* sta frame add addr map list to driver */
|
||
|
typedef struct _iot_sg_sta_drv_map_list {
|
||
|
/* map list count */
|
||
|
uint8_t list_count;
|
||
|
/* reserved for future, default set as 0 */
|
||
|
uint8_t rsvd[3];
|
||
|
/* map list information */
|
||
|
iot_sg_sta_drv_map_list_info_t map_info[0];
|
||
|
} iot_sg_sta_drv_map_list_t;
|
||
|
|
||
|
/* IOT_SG_STA_PM_INFO_TYPE_PF_PO data structure */
|
||
|
typedef struct _iot_sg_sta_drv_pf_po_info {
|
||
|
/* power off time, same as event start time
|
||
|
* second defined in last uint32_t
|
||
|
*/
|
||
|
uint32_t pf_year :7,
|
||
|
pf_month :4,
|
||
|
pf_day :5,
|
||
|
pf_hour :5,
|
||
|
pf_min :6,
|
||
|
/* flag to mark if the meter power off has been reported */
|
||
|
pf_rpt :1,
|
||
|
/* flag to mark if the meter received ack after power off reported */
|
||
|
pf_rpt_ok :1,
|
||
|
/* reserved for further use */
|
||
|
rsvd1 :3;
|
||
|
/* power on time, same as event end time
|
||
|
* second defined in last uint32_t
|
||
|
*/
|
||
|
uint32_t po_year :7,
|
||
|
po_month :4,
|
||
|
po_day :5,
|
||
|
po_hour :5,
|
||
|
po_min :6,
|
||
|
/* flag to mark if the meter power on has been reported */
|
||
|
po_rpt :1,
|
||
|
/* flag to mark if the meter received ack after power on reported */
|
||
|
po_rpt_ok :1,
|
||
|
/* reserved for further use */
|
||
|
rsvd2 :3;
|
||
|
/* power off time, second */
|
||
|
uint16_t pf_sec :6,
|
||
|
/* power on time, second */
|
||
|
po_sec :6,
|
||
|
/* suspected status of the meter, 1 - power off, 0 - power on */
|
||
|
status :1,
|
||
|
/* reserved for further use */
|
||
|
rsvd3 :3;
|
||
|
} iot_sg_sta_drv_pf_po_info_t;
|
||
|
|
||
|
#pragma pack(pop) /* restore the pack status */
|
||
|
|
||
|
/* function callback to init driver
|
||
|
* return:
|
||
|
* 0 - success
|
||
|
* otherwise - error code
|
||
|
*/
|
||
|
typedef uint32_t (*iot_sg_sta_drv_init_func_t)();
|
||
|
|
||
|
/* function callback to deinit driver */
|
||
|
typedef void (*iot_sg_sta_drv_deinit_func_t)();
|
||
|
|
||
|
/* function callback to start device detect
|
||
|
* return:
|
||
|
* 0 - success
|
||
|
* otherwise - error code
|
||
|
*/
|
||
|
typedef uint32_t (*iot_sg_sta_drv_start_detect_func_t)();
|
||
|
|
||
|
/* function callback to stop device detect
|
||
|
* return:
|
||
|
* 0 - device detected
|
||
|
* otherwise - error code
|
||
|
*/
|
||
|
typedef uint32_t (*iot_sg_sta_drv_stop_detect_func_t)();
|
||
|
|
||
|
/* function callback to get detected device type
|
||
|
* return:
|
||
|
* device type of detected device. see GW_APP_DEV_TYPE_XXX
|
||
|
*/
|
||
|
typedef uint32_t (*iot_sg_sta_drv_get_device_type_t)();
|
||
|
|
||
|
/* function callback to get device address
|
||
|
* return:
|
||
|
* device address.
|
||
|
*/
|
||
|
typedef void (*iot_sg_sta_drv_get_device_addr_t)(uint8_t *addr);
|
||
|
|
||
|
/* function callback to get the detected mac address used by the driver to login
|
||
|
* return:
|
||
|
* mac address of detected device
|
||
|
*/
|
||
|
typedef void (*iot_sg_sta_drv_get_login_addr_t)(uint8_t *addr);
|
||
|
|
||
|
/* function callback to get login address type
|
||
|
* return:
|
||
|
* type of logic address. see IOT_SG_STA_DRV_ADDR_TYPE_XXX
|
||
|
*/
|
||
|
typedef uint32_t (*iot_sg_sta_drv_get_login_addr_type_t)();
|
||
|
|
||
|
/* function callback to handle meter read request. once the handling is
|
||
|
* finished, driver should call iot_sg_sta_meter_read_done to deliver the
|
||
|
* response back.
|
||
|
* @data_type: data type. See GW_APP_DATA_TYPE_XXX
|
||
|
* @req_pkt: iot packet of the request. the ownership will be transferred
|
||
|
* to driver.
|
||
|
* @time_dur: duration, unit is 1ms.
|
||
|
* @interval: interval, uint is 1ms.
|
||
|
* @baud: baud rate.
|
||
|
*
|
||
|
* return:
|
||
|
* 0 - request handled successfully
|
||
|
* otherwise - error code
|
||
|
*/
|
||
|
typedef uint32_t (*iot_sg_sta_drv_meter_r_func_t)(uint8_t data_type,
|
||
|
iot_pkt_t *req_pkt, uint32_t time_dur, uint32_t interval, uint32_t baud);
|
||
|
|
||
|
/* function callback to cancel current meter read request */
|
||
|
typedef void (*iot_sg_sta_drv_meter_r_cancel_func_t)();
|
||
|
|
||
|
/* function callback to start secondary node register */
|
||
|
typedef void (*iot_sg_sta_drv_start_node_reg_func_t)();
|
||
|
|
||
|
/* function callback to stop secondary node register */
|
||
|
typedef void (*iot_sg_sta_drv_stop_node_reg_func_t)();
|
||
|
|
||
|
/* function callback to notify driver that its detected login address is
|
||
|
* invalidy.
|
||
|
*/
|
||
|
typedef void (*iot_sg_sta_drv_invalid_addr_notify_func_t)();
|
||
|
|
||
|
/* function callback to notify driver that timer fired */
|
||
|
typedef void (*iot_sg_sta_drv_timer_func_t)();
|
||
|
|
||
|
/* function callback to notify driver that refresh timer fired. framework will
|
||
|
* call this function periodically.
|
||
|
* @period: the periodic value of the timer, uint is 1ms.
|
||
|
*/
|
||
|
typedef void (*iot_sg_sta_drv_refresh_timer_func_t)(uint32_t period);
|
||
|
|
||
|
/* function callback to notify driver the received data from UART
|
||
|
* @good_frame: non-zero to mark the packet contain an integrated good frame.
|
||
|
* @pkt: iot packet of the uart data. the ownership will be transferred
|
||
|
* to driver.
|
||
|
*/
|
||
|
|
||
|
typedef void (*iot_sg_sta_drv_uart_func_t)(uint32_t good_frame, iot_pkt_t *pkt);
|
||
|
|
||
|
/* function callback to handle correct time request.
|
||
|
* @pkt: iot packet of the request. the ownership will be transferred
|
||
|
* to driver.
|
||
|
* @is_ntb_corr:0 - not NTB correct time, 1 - is NTB correct time.
|
||
|
* return:
|
||
|
* 0 - request handled successfully
|
||
|
* otherwise - error code
|
||
|
*/
|
||
|
typedef uint32_t (*iot_sg_sta_drv_correct_time_func_t)(iot_pkt_t *pkt,
|
||
|
uint8_t is_ntb_corr);
|
||
|
|
||
|
/* function callback to notify driver to enable events reports function.
|
||
|
*/
|
||
|
typedef void (*iot_sg_sta_drv_enable_event_rpt_func_t)();
|
||
|
|
||
|
/* function callback to notify driver to disable events reports function.
|
||
|
*/
|
||
|
typedef void (*iot_sg_sta_drv_disable_event_rpt_func_t)();
|
||
|
|
||
|
/* function callback to notify driver the event report result
|
||
|
* @result: event report result. See IOT_SG_STA_EVENT_RPT_XXX
|
||
|
*/
|
||
|
typedef void (*iot_sg_sta_drv_event_rpt_ack_func_t)(uint8_t result);
|
||
|
|
||
|
/* function callback to handle communication test request from cco.
|
||
|
* @data_type: data type. See GW_APP_DATA_TYPE_XXX
|
||
|
* @pkt: iot packet of the request. the ownership will be transferred
|
||
|
* to driver.
|
||
|
*/
|
||
|
typedef void (*iot_sg_sta_drv_comm_test_func_t)(uint8_t data_type,
|
||
|
iot_pkt_t *pkt);
|
||
|
|
||
|
/* function callback to handle private action for driver.
|
||
|
* @data: driver private integer data.
|
||
|
* @data_load: driver private pointer type data.
|
||
|
*/
|
||
|
typedef void(*iot_sg_sta_drv_private_func_t)(uint32_t data, void *data_load);
|
||
|
|
||
|
/* function callback to start get node time */
|
||
|
typedef void (*iot_sg_sta_drv_get_time_func_t)();
|
||
|
|
||
|
/* function callback to notice drv checking pm status. */
|
||
|
typedef uint32_t (*iot_sg_sta_drv_pm_check_func_t)(uint8_t *addr,
|
||
|
uint8_t date_type, uint32_t dur, uint8_t delay_flag);
|
||
|
|
||
|
/* function callback to add a list of meter to be searched */
|
||
|
typedef uint32_t (*iot_sg_sta_drv_add_sm_list_func_t)
|
||
|
(iot_sg_sta_drv_meter_list_t *);
|
||
|
|
||
|
/* function callback to add a login addr map list */
|
||
|
typedef uint32_t (*iot_sg_sta_drv_add_map_list_func_t)
|
||
|
(iot_sg_sta_drv_map_list_t *);
|
||
|
|
||
|
/**
|
||
|
* @brief function callback to handle get vendor info request.
|
||
|
* @param info_type: type of vendor info data.
|
||
|
* See IOT_SG_STA_VENDOR_INFO_TYPE_XXX.
|
||
|
* @param data: vendor info data cache.
|
||
|
* @param data_len: vendor info data cache length.
|
||
|
* @param length: length of vendor info data.
|
||
|
* @retval: 0 -- request handled successfully.
|
||
|
* @retval: otherwise -- error code.
|
||
|
*/
|
||
|
typedef uint32_t (*iot_sg_sta_drv_get_vendor_info_t)(uint8_t info_type,
|
||
|
uint8_t *data, uint16_t data_len, uint16_t *length);
|
||
|
|
||
|
/**
|
||
|
* @brief function callback to handle push data request.
|
||
|
* @param pkt: iot packet of the request. the ownership will be transferred
|
||
|
* to driver.
|
||
|
* @param data_type: data type, see IOT_SG_STA_DATA_TYPE_XXX.
|
||
|
* @param baud: uart baud, 0 mean use current uart baud.
|
||
|
* @param addr: address of meter address.
|
||
|
* @param seq: sequence of request.
|
||
|
* @retval: 0 - request handled successfully
|
||
|
* @retval: otherwise - error code
|
||
|
*/
|
||
|
typedef uint32_t (*iot_sg_sta_drv_push_data_func_t)(iot_pkt_t *pkt,
|
||
|
uint8_t data_type, uint32_t baud, uint8_t *addr, uint16_t seq);
|
||
|
|
||
|
/* function callback to get pm information in driver
|
||
|
* @param: addr - address of get pm
|
||
|
* @param: type - type of data, see IOT_SG_STA_PM_INFO_TYPE_XXX
|
||
|
* @param: data - pointer to cache data buffer.
|
||
|
* @param: data_len - length of data buffer
|
||
|
* @retval: ERR_OK - case successfully
|
||
|
* @retval: otherwise - error code, see ERR_XXX
|
||
|
*/
|
||
|
typedef uint32_t (*iot_sg_sta_drv_get_pm_info_t)(
|
||
|
uint8_t *addr, uint8_t data_type, uint8_t *data,
|
||
|
uint16_t data_len);
|
||
|
|
||
|
/* function callback to check module pulled out status */
|
||
|
typedef void (*iot_sg_sta_drv_pull_out_check)();
|
||
|
|
||
|
/* function callback to set the login address.
|
||
|
* @param: addr - login address.
|
||
|
*/
|
||
|
typedef void (*iot_sg_sta_drv_set_login_addr)(uint8_t *addr);
|
||
|
|
||
|
/* function callback to synchronize power meter list */
|
||
|
typedef void (*iot_sg_sta_drv_sync_node_func_t)(
|
||
|
iot_sg_ext_node_list_sync_t *node_list);
|
||
|
|
||
|
/**
|
||
|
* @brief function callback to get driver state count values.
|
||
|
* @param list: Pointer to an integer array that save counts.
|
||
|
* @param cnt: The size of the array.
|
||
|
* @retval: The number of counts get.
|
||
|
*/
|
||
|
typedef uint32_t(*iot_sg_sta_drv_get_state_cnt_func_t)(uint32_t *list,
|
||
|
uint8_t cnt);
|
||
|
|
||
|
/* smart grid sta role driver descriptor */
|
||
|
typedef struct _iot_sg_sta_drv {
|
||
|
/* id of the driver. see IOT_SG_STA_DRV_ID_INVALID */
|
||
|
uint16_t drv_id;
|
||
|
/* id of the driver load mode. see IOT_SG_STA_DRV_LOAD_MODE_XXX */
|
||
|
uint16_t drv_load_mode;
|
||
|
/* driver supported data type mask. see GW_APP_DATA_TYPE_MASK_XXX */
|
||
|
uint16_t data_type_mask;
|
||
|
/* device type. see GW_APP_DEV_TYPE_XXX */
|
||
|
uint8_t dev_type;
|
||
|
/* driver required headroom for each request packet. smart grid app will
|
||
|
* make sure every iot packet delivered to driver has such headroom
|
||
|
* reserved.
|
||
|
*/
|
||
|
uint8_t headroom;
|
||
|
/* Driver detect time required for the device, unit is 1ms */
|
||
|
uint32_t detect_time;
|
||
|
/* driver operation function callbacks */
|
||
|
iot_sg_sta_drv_init_func_t init;
|
||
|
iot_sg_sta_drv_deinit_func_t deinit;
|
||
|
iot_sg_sta_drv_start_detect_func_t start_detect;
|
||
|
iot_sg_sta_drv_stop_detect_func_t stop_detect;
|
||
|
iot_sg_sta_drv_get_device_type_t get_device_type;
|
||
|
iot_sg_sta_drv_get_device_addr_t get_device_addr;
|
||
|
iot_sg_sta_drv_get_login_addr_t get_login_addr;
|
||
|
iot_sg_sta_drv_get_login_addr_type_t get_login_type;
|
||
|
iot_sg_sta_drv_invalid_addr_notify_func_t nodify_invalid_addr;
|
||
|
iot_sg_sta_drv_meter_r_func_t meter_read;
|
||
|
iot_sg_sta_drv_start_node_reg_func_t start_node_reg;
|
||
|
iot_sg_sta_drv_stop_node_reg_func_t stop_node_reg;
|
||
|
iot_sg_sta_drv_correct_time_func_t correct_time;
|
||
|
iot_sg_sta_drv_enable_event_rpt_func_t enable_event_rpt;
|
||
|
iot_sg_sta_drv_disable_event_rpt_func_t disable_event_rpt;
|
||
|
iot_sg_sta_drv_event_rpt_ack_func_t event_rpt_ack;
|
||
|
iot_sg_sta_drv_comm_test_func_t comm_test;
|
||
|
iot_sg_sta_drv_timer_func_t timer_func;
|
||
|
iot_sg_sta_drv_refresh_timer_func_t refresh_timer_func;
|
||
|
iot_sg_sta_drv_uart_func_t uart_func;
|
||
|
iot_sg_sta_drv_private_func_t private_func;
|
||
|
iot_sg_sta_drv_get_time_func_t get_time;
|
||
|
iot_sg_sta_drv_pm_check_func_t pm_check;
|
||
|
iot_sg_sta_drv_add_sm_list_func_t add_sm_list;
|
||
|
iot_sg_sta_drv_add_map_list_func_t add_map_list;
|
||
|
iot_sg_sta_drv_get_vendor_info_t get_vendor_info;
|
||
|
iot_sg_sta_drv_push_data_func_t push_data;
|
||
|
iot_sg_sta_drv_get_pm_info_t get_pm_info;
|
||
|
iot_sg_sta_drv_pull_out_check pull_out_check;
|
||
|
iot_sg_sta_drv_set_login_addr set_login_addr;
|
||
|
iot_sg_sta_drv_sync_node_func_t sync_node_func;
|
||
|
iot_sg_sta_drv_get_state_cnt_func_t get_state_cnt;
|
||
|
} iot_sg_sta_drv_t;
|
||
|
|
||
|
extern iot_sg_sta_drv_t *g_sta_drv_table[IOT_SG_STA_DRV_TABLE_SIZE];
|
||
|
|
||
|
/* @brief iot_sg_sta_meter_read_done() - function callback to allow device
|
||
|
* driver to notify that the meter read
|
||
|
* operation done.
|
||
|
* @paam data_type: data type. See GW_APP_DATA_TYPE_XXX
|
||
|
* @param rsp_pkt: iot packet of the response, the ownership of the pkt will
|
||
|
* be transferred from driver to smart grid app.
|
||
|
* if rsp_pkt == NULL, means driver meter read timeout.
|
||
|
*/
|
||
|
void iot_sg_sta_meter_read_done(uint8_t data_type, iot_pkt_t *rsp_pkt);
|
||
|
|
||
|
/* iot_sg_sta_drv_detect_done - function callback to allow device driver to
|
||
|
* notify that the detect operation done.
|
||
|
*/
|
||
|
void iot_sg_sta_drv_detect_done(void);
|
||
|
|
||
|
/**
|
||
|
* @brief iot_sg_sta_get_time_done() - function callback to allow device
|
||
|
* driver to notify that the get meter
|
||
|
* time operation done.
|
||
|
* @param time: time of the response, point to time of meter.
|
||
|
* if time == NULL, means driver get time failed.
|
||
|
*/
|
||
|
void iot_sg_sta_get_time_done(iot_sg_sta_drv_time_t *time_t);
|
||
|
|
||
|
/* iot_sg_sta_drv_private_call_req - function callback to allow device driver to
|
||
|
* request framework to call its private
|
||
|
* interface in framework thread context.
|
||
|
* Sometimes, driver may receive input in
|
||
|
* context other than framework thread context.
|
||
|
* While most of driver operations like meter
|
||
|
* reading are handled inside the framework
|
||
|
* thread context. To serialize multiple
|
||
|
* driver operations in the framework
|
||
|
* thread context, driver can call this API.
|
||
|
* framework will call driver's private
|
||
|
* function callback later in framework thread
|
||
|
* context.
|
||
|
* @data: driver private integer data.
|
||
|
* @pkt: iot packet for loading driver private data.
|
||
|
*/
|
||
|
void iot_sg_sta_drv_private_call_req(uint32_t data, iot_pkt_t *pkt);
|
||
|
|
||
|
/**
|
||
|
* @brief iot_sg_sta_drv_private_call_req_cancel - function callback to allow
|
||
|
* device driver to request
|
||
|
* framework to cancel its
|
||
|
* pending private call request
|
||
|
* if any.
|
||
|
*/
|
||
|
void iot_sg_sta_drv_private_call_req_cancel(void);
|
||
|
|
||
|
/* @brief function callback to allow device driver to report secondary
|
||
|
* node register event.
|
||
|
* @param node_info: secondary node info
|
||
|
* @param rpt_type: report type, see IOT_SG_STA_NODE_RPT_TYPE_XXX.
|
||
|
*/
|
||
|
void iot_sg_sta_node_reg_report(iot_sg_sta_drv_node_info_t *node_info,
|
||
|
uint8_t rpt_type);
|
||
|
|
||
|
/**
|
||
|
* @brief function callback to allow device driver to deregister secondary
|
||
|
* node info.
|
||
|
* @param addr: pointer to addr of secondary node.
|
||
|
*/
|
||
|
void iot_sg_sta_node_reg_deregister(uint8_t *addr);
|
||
|
|
||
|
/**
|
||
|
* @brief function callback to allow device driver to deregister
|
||
|
* all secondary node info.
|
||
|
*/
|
||
|
void iot_sg_sta_node_reg_deregister_all(void);
|
||
|
|
||
|
/* @brief function callback to allow device driver to check if a node is
|
||
|
* being black listed
|
||
|
* @param addr: mac address of the node to be checked.
|
||
|
*
|
||
|
* @return
|
||
|
* 0 - not black listed
|
||
|
* otherwise - black listed
|
||
|
*/
|
||
|
uint32_t iot_sg_sta_is_bl_node(uint8_t *addr);
|
||
|
|
||
|
/* @brief function callback to allow device driver to add a node into black
|
||
|
* list.
|
||
|
* @param addr: mac address of the node to be black listed.
|
||
|
* @param dur: time out value to remove the node from black list. unit is 1s.
|
||
|
*/
|
||
|
void iot_sg_sta_bl_node_add(uint8_t *addr, uint32_t dur);
|
||
|
|
||
|
/**
|
||
|
* @brief function callback to allow device driver to remove node from black
|
||
|
* list.
|
||
|
* @param addr: pointer to addr of secondary node.
|
||
|
*/
|
||
|
void iot_sg_sta_bl_node_rm(uint8_t *addr);
|
||
|
|
||
|
/**
|
||
|
* @brief function callback to allow device driver to remove all nodes from
|
||
|
* black list.
|
||
|
*/
|
||
|
void iot_sg_sta_bl_node_rm_all(void);
|
||
|
|
||
|
/* iot_sg_sta_node_reg_done - function callback to allow device driver to
|
||
|
* notify that the secondary node register done.
|
||
|
*/
|
||
|
void iot_sg_sta_node_reg_done();
|
||
|
|
||
|
/* iot_sg_sta_report_event - function callback to allow device driver to
|
||
|
* deliver event to cco.
|
||
|
* @addr: mac address of the power meter of the event
|
||
|
* @data_ptr: pointer to the event data.
|
||
|
* @len: length size of event data.
|
||
|
* @new_evt 0: the event isn't new, 1: the event is new.
|
||
|
* return:
|
||
|
* 0 - event sent out successfully. smart grid app will deliver
|
||
|
* the final result to driver through event_rpt_ack callback.
|
||
|
* otherwise - error code. see ERR_XXX
|
||
|
*/
|
||
|
uint32_t iot_sg_sta_report_event(uint8_t *addr, uint8_t *data_ptr,
|
||
|
uint32_t len, uint8_t new_evt);
|
||
|
|
||
|
/* iot_sg_sta_start_driver_timer - function callback to allow device driver to
|
||
|
* request smart grid app to start the driver
|
||
|
* timer. once timer fired, smart grid app will
|
||
|
* call iot_sg_sta_drv_timer_func_t to notify
|
||
|
* driver.
|
||
|
* @dur: duration of the timer. the unit is 1 ms.
|
||
|
*
|
||
|
* return:
|
||
|
* 0 - for timer started successfully case
|
||
|
* otherwise - error code
|
||
|
*/
|
||
|
uint32_t iot_sg_sta_start_driver_timer(uint32_t dur);
|
||
|
|
||
|
/* iot_sg_sta_stop_driver_timer - function callback to allow device driver to
|
||
|
* request smart grid app to stop the driver
|
||
|
* timer.
|
||
|
*/
|
||
|
void iot_sg_sta_stop_driver_timer();
|
||
|
|
||
|
/* iot_sg_sta_send_uart - function callback to allow device driver to
|
||
|
* request smart grid app to send data through
|
||
|
* uart.
|
||
|
* @pkt: iot packet to be sent to the uart. the ownership will
|
||
|
* be transferred from device driver to smart grid app.
|
||
|
*
|
||
|
* return:
|
||
|
* 0 - for success case
|
||
|
* otherwise - error code
|
||
|
*/
|
||
|
uint32_t iot_sg_sta_send_uart(iot_pkt_t *pkt);
|
||
|
|
||
|
/**
|
||
|
* @brief iot_sg_sta_drv_config_uart - function callback to allow device driver to
|
||
|
* request smart grid app to config uart parameters.
|
||
|
* @param baud: baudrate
|
||
|
* @param parity: see IOT_UART_PARITY_XXX
|
||
|
* @param data: data bits
|
||
|
* @param stop: stop flag
|
||
|
* @param fmt: preferred rx frame format
|
||
|
* @param thrd: rx timeout, unit is byte
|
||
|
* @retval: 0 - for success case
|
||
|
* @retval: otherwise - error code
|
||
|
*/
|
||
|
uint32_t iot_sg_sta_config_uart(uint32_t baud, uint8_t parity,
|
||
|
uint8_t data, uint8_t stop, iot_frame_fmt *fmt, uint32_t thrd);
|
||
|
|
||
|
/**
|
||
|
* @brief iot_sg_sta_get_cmn_cfg - function callback to allow device driver to
|
||
|
* get common configuration info.
|
||
|
* @retval: NULL -- fail.
|
||
|
* @retval: otherwise -- pointer to common config info.
|
||
|
*/
|
||
|
iot_sg_sta_cmn_cfg_t *iot_sg_sta_get_cmn_cfg(void);
|
||
|
|
||
|
/**
|
||
|
* @brief iot_sg_sta_get_drv_pib - function callback to allow device driver to
|
||
|
* get the entry position of station driver in
|
||
|
* PIB.
|
||
|
* @param drv_pib_size: returns the size of the PIB space for the station
|
||
|
* driver, if success.
|
||
|
* @retval: NULL -- fail.
|
||
|
* @retval: otherwise -- entry position of station driver in PIB.
|
||
|
*/
|
||
|
uint8_t *iot_sg_sta_get_drv_pib(uint32_t *drv_pib_size);
|
||
|
|
||
|
/**
|
||
|
* @brief iot_sg_sta_get_dev_info - function callback to allow device driver to
|
||
|
* get the station device info.
|
||
|
* @param dev_info: returns station device info.
|
||
|
*/
|
||
|
void iot_sg_sta_get_dev_info(iot_sg_sta_dev_info_t *dev_info);
|
||
|
|
||
|
/**
|
||
|
* @brief iot_sg_sta_get_plc_info - function callback to allow device driver to
|
||
|
* get the station plc info.
|
||
|
* @param plc_info: returns station plc info.
|
||
|
*/
|
||
|
void iot_sg_sta_get_plc_info(iot_sg_sta_plc_info_t *plc_info);
|
||
|
|
||
|
/**
|
||
|
* @brief iot_sg_sta_get_fj_evt_cfg_info - function callback to allow device
|
||
|
* driver to get the station event info.
|
||
|
* @param plc_info: returns station event info.
|
||
|
*/
|
||
|
void iot_sg_sta_get_fj_evt_cfg_info(iot_sg_sta_drv_fj_evt_rpt_cfg_t *evt_cfg);
|
||
|
|
||
|
/**
|
||
|
* @brief iot_sg_sta_pd_check_done - function callback to allow device driver to
|
||
|
* notify that check pm power off status done.
|
||
|
* @param exist: exist is 1, not exist is 0.
|
||
|
* @param addr: pointer to address of pm checked.
|
||
|
*/
|
||
|
void iot_sg_sta_pd_check_done(uint8_t exist, uint8_t *addr);
|
||
|
|
||
|
/**
|
||
|
* @brief iot_sg_sta_power_on_check_done - function callback to allow device
|
||
|
* driver to notify that power on check completed.
|
||
|
*/
|
||
|
void iot_sg_sta_power_on_check_done();
|
||
|
|
||
|
/**
|
||
|
* @brief: iot_sg_node_reg_get_node_cnt - get node cnt.
|
||
|
* @retval: node cnt.
|
||
|
*/
|
||
|
uint8_t iot_sg_node_reg_get_node_cnt(void);
|
||
|
|
||
|
/**
|
||
|
* @brief iot_sg_sta_645_proto_to_drv - convert DT/L 645 protocol id to drv
|
||
|
* data type.
|
||
|
* @param p_id: id of DT/L 645 protocol, see PROTO_645_XXX_ID.
|
||
|
* @retval: drv data type, see IOT_SG_STA_DATA_TYPE_XXX.
|
||
|
*/
|
||
|
uint8_t iot_sg_sta_645_proto_to_drv(uint8_t p_id);
|
||
|
|
||
|
/**
|
||
|
* @brief iot_sg_sta_645_proto_to_drv - convert drv data type to DT/L 645
|
||
|
* protocol id.
|
||
|
* @param type: drv data type, see IOT_SG_STA_DATA_TYPE_XXX.
|
||
|
* @retval: id of DT/L 645 protocol, see PROTO_645_XXX_ID.
|
||
|
*/
|
||
|
uint8_t iot_sg_sta_drv_to_645_proto(uint8_t type);
|
||
|
|
||
|
/**
|
||
|
* @brief: check if current device is 3 phase power meter.
|
||
|
* @retval: 0 - module type is not three-phase.
|
||
|
* @retval: 1 - module type is three-phase.
|
||
|
*/
|
||
|
uint8_t iot_sg_sta_is_3p_module(void);
|
||
|
|
||
|
/**
|
||
|
* @brief: get current plc protocol type.
|
||
|
* @retval: plc protocol type - see IOT_SG_STA_APP_PROTO_XXX.
|
||
|
*/
|
||
|
uint8_t iot_sg_sta_get_proto_type(void);
|
||
|
|
||
|
/**
|
||
|
* @brief: check current command whether read sidle meter.
|
||
|
*
|
||
|
* @param data_type data type, @see IOT_SG_STA_DATA_TYPE_XXX
|
||
|
* @return 1 mean read sidle meter, 0 mean not read sidle meter.
|
||
|
*/
|
||
|
uint8_t iot_sg_sta_is_sidle_meter_read(uint8_t data_type);
|
||
|
|
||
|
/**
|
||
|
* @brief: get current user type.
|
||
|
* @retval: user type - see IOT_SG_STA_FLASH_STORAGE_MODE_XXX.
|
||
|
*/
|
||
|
uint8_t iot_sg_sta_get_user_type(void);
|
||
|
|
||
|
/**
|
||
|
* @brief: get flag to mark if cert test command ever detected.
|
||
|
* @retval: 1 mean detected, 0 mean no detected.
|
||
|
*/
|
||
|
uint8_t iot_sg_sta_get_cert_test_detected(void);
|
||
|
|
||
|
/**
|
||
|
* @brief: get flag to mark if Nanwang product testing is detected.
|
||
|
* @retval: 1 mean detected, 0 mean no detected.
|
||
|
*/
|
||
|
uint8_t iot_sg_sta_get_nw_pt_detected(void);
|
||
|
|
||
|
/**
|
||
|
* @brief: get tsfm result info.
|
||
|
* @param tsfm_info: returns station tsfm result info.
|
||
|
*/
|
||
|
void iot_sg_sta_get_tsfm_result(iot_sg_sta_tsfm_result_t *tsfm_result);
|
||
|
|
||
|
/**
|
||
|
* @brief: check phase event report flag.
|
||
|
* @retval: flag of phase event report flag.
|
||
|
* 1 mean enable, 0 mean disable.
|
||
|
*/
|
||
|
uint8_t iot_sg_sta_phase_rpt_enable_check(void);
|
||
|
|
||
|
/**
|
||
|
* @brief iot_sg_sta_set_hw_tsfm_addr() - set hardware tsfm addr.
|
||
|
* @param addr: addr to be set, little-endian.
|
||
|
*/
|
||
|
void iot_sg_sta_set_hw_tsfm_addr(uint8_t *addr);
|
||
|
|
||
|
/**
|
||
|
* @brief: start secondary node register.
|
||
|
*/
|
||
|
void iot_sg_sta_drv_start_sec_node_reg(void);
|
||
|
|
||
|
/**
|
||
|
* @brief: iot_sg_sta_pull_out_check_done() - module pulled out check done.
|
||
|
* @param result: check result, see IOT_SG_STA_PO_CHECK_XXX.
|
||
|
*/
|
||
|
void iot_sg_sta_pull_out_check_done(uint8_t result);
|
||
|
|
||
|
/**
|
||
|
* @brief: meter found in all A search meter stages.
|
||
|
*/
|
||
|
void iot_sg_sta_all_aa_sm_done(void);
|
||
|
|
||
|
/**
|
||
|
* @brief: start get meter time.
|
||
|
*/
|
||
|
void iot_sg_sta_drv_start_get_time();
|
||
|
|
||
|
/**
|
||
|
* @brief app sta rtc time set.
|
||
|
* @param tm: pointer to the time cache.
|
||
|
* @param sys_flag: flag of system time.
|
||
|
* @retval: ERR_OK - set rtc time successfully.
|
||
|
* @retval: otherwise - error code. see ERR_XXX
|
||
|
*/
|
||
|
void iot_sg_sta_rtc_set(iot_time_tm_t *tm, uint8_t sys_flag);
|
||
|
|
||
|
/**
|
||
|
* @brief app sta rtc time get.
|
||
|
* @param tm: pointer to the time cache.
|
||
|
* @param sys_flag: flag of system time.
|
||
|
* @retval: ERR_OK - get rtc time successfully.
|
||
|
* @retval: otherwise - error code. see ERR_XXX
|
||
|
*/
|
||
|
uint32_t iot_sg_sta_rtc_get(iot_time_tm_t *tm, uint8_t sys_flag);
|
||
|
|
||
|
/**
|
||
|
* @brief app sta rtc time valid check.
|
||
|
* @param sys_flag: pointer to the flag of system time cache.
|
||
|
* @retval: ERR_OK - rtc time valid.
|
||
|
* @retval: otherwise - error code. see ERR_XXX
|
||
|
*/
|
||
|
uint32_t iot_sg_sta_rtc_valid_check(uint8_t sys_flag);
|
||
|
|
||
|
/**
|
||
|
* @brief Clear rtc time flags.
|
||
|
* @param sys_flag: pointer to the flag of system time cache.
|
||
|
*/
|
||
|
void iot_sg_sta_rtc_clear(uint8_t sys_flag);
|
||
|
|
||
|
/**
|
||
|
* @brief app sta get meter time by rtc time.
|
||
|
* @param tm: pointer to the time cache.
|
||
|
* @param sys_flag: flag of system time.
|
||
|
* @retval: ERR_OK - get rtc time successfully.
|
||
|
* @retval: otherwise - error code. see ERR_XXX
|
||
|
*/
|
||
|
uint32_t iot_sg_sta_rtc_get_m_t(iot_time_tm_t *tm);
|
||
|
|
||
|
/**
|
||
|
* @brief cco black list invalid time set.
|
||
|
* @param time: invalid time, uint is 1min.
|
||
|
*/
|
||
|
void iot_sg_sta_cco_bl_invalid_time_set(uint32_t time);
|
||
|
|
||
|
/**
|
||
|
* @brief app sta node address valid check.
|
||
|
* @param addr: pointer to address.
|
||
|
* @retval: ERR_OK - address valid.
|
||
|
* @retval: otherwise - error code. see ERR_XXX
|
||
|
*/
|
||
|
uint8_t iot_sg_sta_node_addr_check(uint8_t *addr);
|
||
|
|
||
|
/**
|
||
|
* @brief drive upgrade state set.
|
||
|
* @param state: upgrade state, see IOT_SG_STA_DRV_UPGRADE_STATE_XXX.
|
||
|
*/
|
||
|
void iot_sg_sta_drv_upgrade_state_set(uint8_t state);
|
||
|
|
||
|
/**
|
||
|
* @brief 21 meter module mac get.
|
||
|
* @param mac: module mac.
|
||
|
*/
|
||
|
void iot_sg_sta_21meter_mode_mac_get(uint8_t *mac);
|
||
|
|
||
|
/**
|
||
|
* @brief: get physic link type.
|
||
|
* @return: see IOT_SG_STA_PLC_COMM_TYPE_XXX_MODE.
|
||
|
*/
|
||
|
uint8_t iot_sg_sta_get_phy_type();
|
||
|
|
||
|
/**
|
||
|
* @brief: cco black address list get.
|
||
|
* @param addr_buff: pointer to address buffer.
|
||
|
* @param buff_cnt: address buffer count.
|
||
|
* @return: cco black list address count.
|
||
|
*/
|
||
|
uint8_t iot_sg_sta_cco_bl_list_get(uint8_t *addr_buff, uint8_t buff_cnt);
|
||
|
|
||
|
/**
|
||
|
* @brief: cco black address list set.
|
||
|
* @param addr_buff: pointer to address buffer.
|
||
|
* @param buff_cnt: address buffer count.
|
||
|
*/
|
||
|
void iot_sg_sta_cco_bl_list_set(uint8_t *addr_buff, uint8_t buff_cnt);
|
||
|
|
||
|
/**
|
||
|
* @brief: cco black address list update flag get.
|
||
|
* @return: cco black address list update flag.
|
||
|
*/
|
||
|
uint8_t iot_sg_sta_cco_bl_update_flag_get();
|
||
|
|
||
|
/**
|
||
|
* @brief: cco black address list update flag clean;
|
||
|
*/
|
||
|
void iot_sg_sta_cco_bl_update_flag_clean();
|
||
|
|
||
|
/**
|
||
|
* @brief: repeater follow address set.
|
||
|
* @param flw_addr: pointer to follow address buffer.
|
||
|
*/
|
||
|
void iot_sg_sta_repeater_flw_addr_set(uint8_t *flw_addr);
|
||
|
|
||
|
/**
|
||
|
* @brief: nw new meter check.
|
||
|
* @retval: 1 - meter is nw new meter.
|
||
|
* @retval: 0 - meter isn't nw new meter.
|
||
|
*/
|
||
|
uint8_t iot_sg_sta_nw_new_meter_check();
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif /* IOT_SG_STA_DRV_H */
|