Files
kunlun/inc/host_interface/plc/iot_cli_discovery.h
2024-09-28 14:24:04 +08:00

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