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
 |