150 lines
4.6 KiB
C
150 lines
4.6 KiB
C
/****************************************************************************
|
|
|
|
Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED.
|
|
|
|
This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT
|
|
be copied by any method or incorporated into another program without
|
|
the express written consent of Aerospace C.Power. This Information or any portion
|
|
thereof remains the property of Aerospace C.Power. The Information contained herein
|
|
is believed to be accurate and Aerospace C.Power assumes no responsibility or
|
|
liability for its use in any way and conveys no license or title under
|
|
any patent or copyright and makes no representation or warranty that this
|
|
Information is free from patent or copyright infringement.
|
|
|
|
****************************************************************************/
|
|
#ifndef IOT_CLI_HOST_DISCOVERY_H
|
|
#define IOT_CLI_HOST_DISCOVERY_H
|
|
|
|
/* os shim includes */
|
|
#include "os_types.h"
|
|
#include "iot_utils_api.h"
|
|
#include "iot_cli.h"
|
|
#include "iot_config_api.h"
|
|
#include "iot_cli_sg_api.h"
|
|
#include "iot_plc_msg_sta_api.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#pragma pack(push) /* save the pack status */
|
|
#pragma pack(1) /* 1 byte align */
|
|
|
|
#if (IOT_STA_CONTROL_MODE == IOT_STA_CONTROL_TYPE_STA)
|
|
|
|
#define CLI_JOIN_NODE_DEFAULT_BAND (1)
|
|
#define CLI_JOIN_STA (0xFF)
|
|
#define CLI_JOIN_NODE_SET_BAND_INYERVAL (30)
|
|
#define CLI_DISCOVERY_MAX_DIS_NODE (40)
|
|
// max report discover node info interval time, unit: ms
|
|
#define CLI_DISCOVERY_MAX_INTERVAL_TM (10 * 1000)
|
|
|
|
typedef struct _cli_discovery_node_rpt {
|
|
/** tei of the discovered node */
|
|
uint16_t tei;
|
|
/** role of the discovered node. see IOT_PLC_DEV_ROLE_XXX */
|
|
uint8_t role;
|
|
/** network ID of the discovered node */
|
|
uint32_t nid;
|
|
/** logical phase of the discovered node. see IOT_PLC_PHASE_XXX */
|
|
uint8_t phase;
|
|
/** rx snr of the discoverted node */
|
|
int8_t rx_snr;
|
|
/** mac address of the discoverted node */
|
|
uint8_t addr[IOT_MAC_ADDR_LEN];
|
|
/** cco mac address of the discoverted node */
|
|
uint8_t cco_addr[IOT_MAC_ADDR_LEN];
|
|
uint8_t band_id;
|
|
} cli_discovery_node_rpt;
|
|
|
|
typedef struct _cli_dis_node_info
|
|
{
|
|
uint32_t dis_node_num;
|
|
cli_discovery_node_rpt nodelist[CLI_DISCOVERY_MAX_DIS_NODE];
|
|
timer_id_t rpt_timer;
|
|
} cli_dis_node_info;
|
|
|
|
typedef struct _cli_sg_device_info_ul {
|
|
/* software version */
|
|
uint16_t sw_ver;
|
|
/* module vendor ID */
|
|
uint16_t vendor_id;
|
|
/* reserved */
|
|
uint8_t rsvd[32];
|
|
} cli_sg_device_info_ul_t;
|
|
|
|
typedef struct _cli_enable_discovery_mode_dl {
|
|
uint8_t enabled;
|
|
} cli_enable_discovery_mode_dl;
|
|
|
|
typedef struct _cli_enable_discovery_mode_ack {
|
|
uint8_t result;
|
|
} cli_enable_discovery_mode_ack;
|
|
|
|
/**
|
|
* @brief cli_enable_discovery_mode - enable discovery mode
|
|
* @param buffer: buffer with argument for enable command
|
|
* @param bufferlen: length of the buffer
|
|
* @param src_mac: source mac of cli msg
|
|
*/
|
|
void cli_enable_discovery_mode(
|
|
uint8_t *buffer, uint32_t bufferlen, uint8_t *src_mac);
|
|
|
|
/**
|
|
* @brief cli_disable_discovery_mode - disable discovery mode
|
|
*/
|
|
void cli_disable_discovery_mode();
|
|
|
|
/**
|
|
* @brief cli_local_device_info - query local device information
|
|
* @param buffer: buffer with argument for enable command
|
|
* @param bufferlen: length of the buffer
|
|
* @param src_mac: source mac of cli msg
|
|
*/
|
|
void cli_local_device_info(uint8_t *buffer, uint32_t bufferlen,
|
|
uint8_t *src_mac);
|
|
|
|
/**
|
|
* @brief cli_join_node - join specific cco
|
|
* @param buffer: buffer with argument for join command
|
|
* @param bufferlen: length of the buffer
|
|
* @param src_mac: source mac of cli msg
|
|
*/
|
|
void cli_join_node(
|
|
uint8_t *buffer, uint32_t bufferlen, uint8_t *src_mac);
|
|
|
|
/**
|
|
* @brief cli_node_is_ready - check if joined
|
|
* @param buffer: buffer with argument for query ready command
|
|
* @param bufferlen: length of the buffer
|
|
* @param src_mac: source mac of cli msg
|
|
*/
|
|
void cli_node_is_ready(
|
|
uint8_t *buffer, uint32_t bufferlen, uint8_t *src_mac);
|
|
|
|
/**
|
|
* @brief upload_dis_nod_info_list - collect and notify node list
|
|
*/
|
|
void upload_dis_nod_info_list();
|
|
|
|
/**
|
|
* @brief cli_discovery_init - cli discovery init
|
|
*/
|
|
void cli_discovery_init();
|
|
|
|
/**
|
|
* @brief cli_discovery_deinit - cli discovery deinit
|
|
*/
|
|
void cli_discovery_deinit();
|
|
|
|
void cli_discovery_node_notify(iot_plc_discovery_node_rpt_t *info);
|
|
|
|
#endif
|
|
|
|
#pragma pack(pop) /* restore the pack status */
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif |