526 lines
21 KiB
C
526 lines
21 KiB
C
|
|
/*
|
||
|
|
* Copyright (c) CompanyNameMagicTag 2012-2018. All rights reserved.
|
||
|
|
* Description: NDM related interfaces
|
||
|
|
* Author: CompanyName
|
||
|
|
* Create: 2012-07-13
|
||
|
|
*/
|
||
|
|
|
||
|
|
/** @defgroup ndm_group NDM service
|
||
|
|
* @ingroup mid
|
||
|
|
*/
|
||
|
|
#ifndef __SOC_MDM_NDM_H__
|
||
|
|
#define __SOC_MDM_NDM_H__
|
||
|
|
|
||
|
|
#include <soc_list.h>
|
||
|
|
#include <soc_types.h>
|
||
|
|
#include "soc_mdm_types.h"
|
||
|
|
#include "soc_config.h"
|
||
|
|
#include "soc_mdm_mac.h"
|
||
|
|
|
||
|
|
#ifdef __cplusplus
|
||
|
|
extern "C" {
|
||
|
|
#endif
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @ingroup ndm_group
|
||
|
|
* @brief Indicates that the frequency band is not specified and the NDC automatically searches for the frequency band.
|
||
|
|
*/
|
||
|
|
#define EXT_MDM_PLC_FREQ_AUTO 0xFF
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @ingroup ndm_group
|
||
|
|
* @brief Indicates that the snid is not specified, and the NDC automatically searches for the snid.
|
||
|
|
*/
|
||
|
|
#define EXT_MDM_PLC_SNID_AUTO 0
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @ingroup ndm_group
|
||
|
|
* @brief
|
||
|
|
*/
|
||
|
|
#define EXT_MDM_CHL_STATUS_DISCONNECT 2
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @ingroup ndm_group
|
||
|
|
* @brief
|
||
|
|
*/
|
||
|
|
#define EXT_NDM_NDM_MAX_SEND_REQ 5
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @ingroup ndm_group
|
||
|
|
* @brief Indicates that the NDC notifies the DBK to update or add the PLC network search information.
|
||
|
|
*/
|
||
|
|
#define EXT_NDC_SEARCH_CONN_IND_TYPE_NEW 0
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @ingroup ndm_group
|
||
|
|
* @brief Indicates that the NDC reports all PLC network information.
|
||
|
|
*/
|
||
|
|
#define EXT_NDC_SEARCH_CONN_IND_TYPE_ALL 1
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @ingroup ndm_group
|
||
|
|
* @brief Indicates that the NDC reports the current network search status.
|
||
|
|
*/
|
||
|
|
#define EXT_NDC_SEARCH_CONN_IND_TYPE_STATUS 2
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @ingroup ndm_group
|
||
|
|
* Used for the PLC network search and connection initiated by the DBK.
|
||
|
|
*/
|
||
|
|
#define EXT_ND_NETWORK_SEARCH_CONN 0x3408
|
||
|
|
/**
|
||
|
|
* @ingroup ndm_group
|
||
|
|
* Ndm max tei.
|
||
|
|
*/
|
||
|
|
#define EXT_NDM_MAX_TEI 0xFFE
|
||
|
|
/**
|
||
|
|
* @ingroup ndm_group
|
||
|
|
* Ndm min tei.
|
||
|
|
*/
|
||
|
|
#define EXT_NDM_MIN_TEI 0xFEF
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @ingroup ndm_group
|
||
|
|
* @brief Define the request connection mode.
|
||
|
|
*/
|
||
|
|
typedef enum {
|
||
|
|
EXT_NDM_CONNECT_UNKNOWN_MODE = 0,
|
||
|
|
EXT_NDM_CONNECT_NORMAL_CNNC_MODE = 1,
|
||
|
|
EXT_NDM_CONNECT_SEIZE_CNNC_MODE,
|
||
|
|
EXT_NDM_CONNECT_DISCONNECT_MODE,
|
||
|
|
EXT_NDM_CONNECT_INVALID_MODE
|
||
|
|
} ext_ndm_connect_req_mode;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @ingroup ndm_group
|
||
|
|
* @brief Defines the reply result of the reply frame.
|
||
|
|
*/
|
||
|
|
typedef enum {
|
||
|
|
EXT_NDC_CONNECT_RESULT_SUCCESS = 0, /**< Connection succeeded */
|
||
|
|
EXT_NDC_CONNECT_RESULT_SEIZE, /**< Use the forcible connection mode */
|
||
|
|
EXT_NDC_CONNECT_RESULT_LOST_CNNC, /**< The current connection is lost */
|
||
|
|
EXT_NDC_CONNECT_RESULT_DISCONNCET /**< Disconnect */
|
||
|
|
} ext_ndm_connect_rsp_result;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @ingroup ndm_group
|
||
|
|
* @brief Define the working status of the NDC channel.
|
||
|
|
*/
|
||
|
|
typedef enum {
|
||
|
|
MAC_NDC_CH_WORK_STATUS_IDLE, /**< Idle */
|
||
|
|
MAC_NDC_CH_WORK_STATUS_CONNECTED, /**< Connected */
|
||
|
|
MAC_NDC_CH_WORK_STATUS_DISCONNECT, /**< Disconnected */
|
||
|
|
MAC_NDC_CH_WORK_STATUS_CONNECTING, /**< The connection is being set up */
|
||
|
|
MAC_NDC_CH_WORK_STATUS_SEARCH /**< Network search status */
|
||
|
|
} mac_ndc_ch_work_status;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @ingroup ndm_group
|
||
|
|
* @brief Definition of network search mode
|
||
|
|
*/
|
||
|
|
typedef enum {
|
||
|
|
EXT_NDC_CHL_ACCESS_MODE_CCO = 0, /**< Indicates the CCO search network access mode. Only the CCO is searched and
|
||
|
|
* connected (by default, the controller connects to the network after
|
||
|
|
* power-on)
|
||
|
|
*/
|
||
|
|
EXT_NDC_CHL_ACCESS_MODE_STA, /**< Indicates that the STA searches for and connects to the STA */
|
||
|
|
EXT_NDC_CHL_ACCESS_MODE_AUTO /**< Indicates that the mode is not specified */
|
||
|
|
} ext_ndc_chl_access_mode;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @ingroup ndm_group
|
||
|
|
* @brief Definition of the command for searching for networks
|
||
|
|
*/
|
||
|
|
typedef enum {
|
||
|
|
EXT_NDC_CHL_ACTION_SEARCH = 0, /**< Indicates that the NDC searches only the network but does not connect to
|
||
|
|
* the network. (The NDC automatically searches for the network after the NDC
|
||
|
|
* is powered on or powered off in CCO mode.)
|
||
|
|
*/
|
||
|
|
EXT_NDC_CHL_ACTION_SEARCH_QRY, /**< Indicates that the network information (including the network search mode,
|
||
|
|
* MAC address, IP address, and device name) is queried during network search.
|
||
|
|
*/
|
||
|
|
EXT_NDC_CHL_ACTION_CONNECT, /**< Indicates that the network is selected(connected) */
|
||
|
|
EXT_NDC_CHL_ACTION_DISCONNECT, /**< Indicates that the network is disconnected */
|
||
|
|
EXT_NDC_CHL_ACTION_CLOSE, /**< Indicates that the network search is disabled */
|
||
|
|
EXT_NDC_CHL_ACTION_SEIZE_CONNECT /**< Force to connect */
|
||
|
|
} ext_ndc_chl_connect_action;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @ingroup ndm_group
|
||
|
|
* @brief Network search request parameters
|
||
|
|
*/
|
||
|
|
typedef struct {
|
||
|
|
ext_ndc_chl_access_mode access_mode; /**< Network search mode */
|
||
|
|
td_u8 search_freq; /**< Network search frequency band */
|
||
|
|
td_u8 action; /**< For details, see the definition of ext_ndc_chl_connect_action */
|
||
|
|
td_u8 mac[EXT_PLC_MAC_ADDR_LEN]; /**< MAC Address */
|
||
|
|
td_u32 snid; /**< Network identifier */
|
||
|
|
} ext_mac_ndm_search_conn_req;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @ingroup ndm_group
|
||
|
|
* @brief Parameters of the network search command
|
||
|
|
*/
|
||
|
|
typedef struct {
|
||
|
|
ext_mac_ndm_search_conn_req req; /**< For details, see the definition of #ext_mac_ndm_search_conn_req_s */
|
||
|
|
} ext_mac_ndm_report_net_info_req_st;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @ingroup ndm_group
|
||
|
|
* @brief Information about a single STA in the network search result report
|
||
|
|
*/
|
||
|
|
typedef struct {
|
||
|
|
td_u8 connect : 1;
|
||
|
|
td_u8 freq : 5; /**< Frequency band */
|
||
|
|
td_u8 prod_type_sta_type : 1; /**< STA products are used to distinguish the I-type meter and electric meter */
|
||
|
|
td_u8 pad : 1; /**< Reserved */
|
||
|
|
td_u8 rsvd; /**< Reserved */
|
||
|
|
td_u8 mac[EXT_PLC_MAC_ADDR_LEN]; /**< MAC address */
|
||
|
|
|
||
|
|
td_u32 snid; /**< Network identifier */
|
||
|
|
td_u32 discovery_cnt; /**< Number of times that the communication module is searched */
|
||
|
|
|
||
|
|
td_u8 ipv4[EXT_IPV4_ADDR_LEN]; /**< IP address of the PLC network node */
|
||
|
|
td_u8 dev_id[EXT_MDM_DEV_ID_LEN]; /**< Device ID of the network node */
|
||
|
|
td_s8 channel_info; /**< Channel quality information */
|
||
|
|
td_u8 ndc_ver; /**< NDC Channel version number */
|
||
|
|
|
||
|
|
td_u8 prod_type; /**< Product Version #ext_ftm_product_type */
|
||
|
|
td_u8 rvsd[3]; /**< Reserved 3 bytes */
|
||
|
|
} ext_mac_ndm_multinetwork_info_st;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @ingroup ndm_group
|
||
|
|
* @brief Network searching result
|
||
|
|
*/
|
||
|
|
typedef struct {
|
||
|
|
ext_ndc_chl_access_mode access_mode; /**< Indicates the mode for the communication module of the transponder
|
||
|
|
* to connect to the PLC network. */
|
||
|
|
td_u8 ndc_status : 3; /**< Indicates the current state of the NDC. */
|
||
|
|
td_u8 report_type : 3; /**< Report type, partial or all, or status update */
|
||
|
|
td_u8 rvsd : 2; /**< Reserved */
|
||
|
|
td_u8 cur_work_freq; /**< Indicates the current working network frequency band. */
|
||
|
|
td_u8 node_num; /**< Indicates the number of searched networks. */
|
||
|
|
td_u8 pad; /**< Reserved */
|
||
|
|
td_u32 cur_snid; /**< Indicates the current network ID. */
|
||
|
|
td_u32 err_code; /**< Indicates the network search/network connection error code. */
|
||
|
|
td_u32 continue_time; /**< Duration of searching for the network, in seconds. */
|
||
|
|
ext_mac_ndm_multinetwork_info_st node[0]; /**< network parameter. This parameter is valid only when ucNodeNum is
|
||
|
|
* not 0. */
|
||
|
|
} ext_mac_ndm_report_net_info_st;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @ingroup ndm_group
|
||
|
|
* @brief Network searching result parameter
|
||
|
|
*/
|
||
|
|
typedef struct {
|
||
|
|
ext_mac_ndm_report_net_info_st report; /**< For details, see the definition of #ext_mac_ndm_report_net_info_st */
|
||
|
|
} ext_mac_ndm_report_net_info_ind_st;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @ingroup ndm_group
|
||
|
|
* @brief Format of the P2P service packet.
|
||
|
|
*/
|
||
|
|
typedef struct {
|
||
|
|
td_u8 src_mac[EXT_PLC_MAC_ADDR_LEN]; /**< MAC address of the message Sender */
|
||
|
|
td_u8 dest_mac[EXT_PLC_MAC_ADDR_LEN]; /**< MAC address of the message receiver */
|
||
|
|
|
||
|
|
td_u8 max_resend_count; /**< Maximum number of times for sending packets. If this parameter is not
|
||
|
|
* set, the default value 5 is used by default.
|
||
|
|
*/
|
||
|
|
td_u8 lid; /**< Packet priority */
|
||
|
|
td_u8 port_num; /**< Port number. The value is #EXT_DMS_CHL_MAC_PORT_APP */
|
||
|
|
td_u8 ctrl; /**< Control word. For details, see EXT_DMS_CHL_TX_CTRL_XXX. The maximum
|
||
|
|
* value is #EXT_DMS_CHL_TX_CTRL_MAX
|
||
|
|
*/
|
||
|
|
td_u16 id; /**< Frame ID, which is customized by the user */
|
||
|
|
td_u16 data_size; /**< Size of the data to be sent */
|
||
|
|
td_u8 *data; /**< Data to be sent */
|
||
|
|
|
||
|
|
td_u8 is_active_report; /**< The flag of sta's auto push data.#TD_TRUE:is active push */
|
||
|
|
td_u8 reserved[3]; /**< 3 reserved byte number */
|
||
|
|
} ext_p2p_mac_frame_ctrl;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @ingroup ndm_group
|
||
|
|
* @brief P2P service packet sending interface
|
||
|
|
*
|
||
|
|
* @par Description:
|
||
|
|
* P2P service packet sending interface.This interface adds the STA's conditional active push
|
||
|
|
* P2P data function. On the STA, whether to actively push data is determined according to the
|
||
|
|
* value of is_active_report. When is_active_report is TRUE, the STA traverses the 1901 protocol
|
||
|
|
* band and sends a handshake frame to search for the CIU device when it doesn't join the network.
|
||
|
|
* When the handshake with the CIU device is successful, the P2P packet is sent. The STA will record
|
||
|
|
* the latest search push information (receive the target site handshake response frame). If data is
|
||
|
|
* pushed to a recorded site on the same frequency band, the STA will send the data directly. To
|
||
|
|
* ensure that the normal networking functions of STAs are not affected, some restrictions are added here:
|
||
|
|
* 1. STA on the network only sends P2P data directly in this frequency band. It will not switchs
|
||
|
|
* frequency bands and will not send handshake frames.
|
||
|
|
* 2. When not connected to the network, the STA works in the frequency band connected to the CIU or when
|
||
|
|
* the handshake with the CIU succeeds, the STA actively pushes the data without first sending a
|
||
|
|
* handshake frame, and directly sends the data. In other P1901.1 protocol bands, STA needs to send
|
||
|
|
* handshake frames for searching. The STA search interval is an integer multiple of 60 seconds (the
|
||
|
|
* integer multiple is the current number of P1901.1 protocol frequency bands).
|
||
|
|
* 3. The STA sends handshake frames by default in a round of search: the number of handshake frames sent
|
||
|
|
* in each frequency band is 6, the interval between handshake frames is 1 second.
|
||
|
|
*
|
||
|
|
* @attention The interface is used to send P2P service packets. All service packets are sent in local broadcast mode.
|
||
|
|
* @attention Range of data size that can be sent is (0, 476].
|
||
|
|
* @attention Invoked by NDM/STA
|
||
|
|
* @attention dest_mac cannot use the following MAC addresses:
|
||
|
|
* 0x00: 0x00: 0x00: 0x00: 0x00: 0x00,
|
||
|
|
* 0xff: 0xff: 0xff: 0xff: 0xff: 0xff.
|
||
|
|
* @param frame_ctrl [IN] type #ext_p2p_mac_frame_ctrl* : service packets
|
||
|
|
* @param frame_ctrl_len [IN] type #td_u8 : sizeof(ext_p2p_mac_frame_ctrl)
|
||
|
|
*
|
||
|
|
* @retval ret type #td_u32
|
||
|
|
* @li EXT_ERR_INVALID_PARAMETER: Invalid input parameter.
|
||
|
|
* @li EXT_ERR_MALLOC_FAILUE: (CIU/STA)Memory allocation error
|
||
|
|
* @li EXT_ERR_P2P_IN_LINKING: (CIU/STA)Start the search.
|
||
|
|
* @li EXT_ERR_P2P_IN_SEARCHING: (CIU/STA)The search is in progress. New search cannot be started.
|
||
|
|
* @li EXT_ERR_NOT_SUPPORT: CIU is not working in p2p communication mode.
|
||
|
|
* @li EXT_ERR_P2P_PUSH_FREQUENTLY: STA pushes too frequently.
|
||
|
|
* @li EXT_ERR_BUSY : (CIU/STA)is sending P2P data which needs to wait for a while.
|
||
|
|
* @li EXT_ERR_SUCCESS : (STA) send packet successful.
|
||
|
|
* @par Dependency:
|
||
|
|
* @li soc_mdm_ndm.h : Describes the external APIs of the link layer.
|
||
|
|
* @see None.
|
||
|
|
* @since DW21_V100R001C00
|
||
|
|
*/
|
||
|
|
td_u32 uapi_p2p_chl_tx(EXT_CONST ext_p2p_mac_frame_ctrl *frame_ctrl, td_u8 frame_ctrl_len);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @ingroup ndm_group
|
||
|
|
* @brief When the app receives the p2p packet, it invokes this interface to indicate that the p2p packet has been
|
||
|
|
* received.
|
||
|
|
*
|
||
|
|
* @par Description:
|
||
|
|
* After receiving the p2p packet, the app invokes this interface to indicate that the p2p packet has been
|
||
|
|
* received.
|
||
|
|
*
|
||
|
|
* @attention After the app identifies the p2p packet, it needs to invoke this interface to inform the MAC layer that
|
||
|
|
* the packet has been received.
|
||
|
|
* @attention Invoked by the NDM/STA
|
||
|
|
* @param osa_mac [IN] type #td_u8*, source MAC address of packets
|
||
|
|
* @param mac_len [IN] type #td_u8,mac address length
|
||
|
|
* @retval ret type #td_u32.
|
||
|
|
* @li EXT_ERR_SUCCESS: The notification is successful.
|
||
|
|
* @li EXT_ERR_INVALID_PARAMETER: Invalid input parameter.
|
||
|
|
*
|
||
|
|
* @par Dependency:
|
||
|
|
* @li soc_mdm_mac.h. The file is used to describe the external interfaces of the link layer.
|
||
|
|
* @see None.
|
||
|
|
* @since DW21_V100R001C00
|
||
|
|
*/
|
||
|
|
td_u32 uapi_app_received_p2p_pkt(EXT_IN EXT_CONST td_u8 *osa_mac, EXT_IN td_u8 mac_len);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @ingroup ndm_group
|
||
|
|
* @brief Load the information about the components related to the P2P communication.
|
||
|
|
*
|
||
|
|
* @par description:
|
||
|
|
* Load P2P communication component information.
|
||
|
|
*
|
||
|
|
* @attention Invoked by the NDM/STA. It can be invoked only once.
|
||
|
|
* @param None
|
||
|
|
*
|
||
|
|
* @retval ret type #ext_mac_component_info_st
|
||
|
|
*
|
||
|
|
* @par dependency:
|
||
|
|
* @li soc_mdm_mac.h: The file is used to describe the external interfaces of the link layer.
|
||
|
|
* @see None.
|
||
|
|
* @since DW21_V100R001C00
|
||
|
|
*/
|
||
|
|
td_void uapi_load_p2p_component_p1901(td_void);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @ingroup ndm_group
|
||
|
|
* @brief
|
||
|
|
* Set whether the CIU communicate with dynamic MAC address.
|
||
|
|
* @par description:
|
||
|
|
* Run the following command to check whether the CIU has no MAC address.
|
||
|
|
*
|
||
|
|
* @attention When set #TD_TRUE, CIU automatically uses the MAC address of the target to be
|
||
|
|
* connected as its own MAC address.
|
||
|
|
* @attention When set #TD_FALSE, CIU uses fixed MAC address communication, the caller must ensure
|
||
|
|
* that the MAC address of the NDM is
|
||
|
|
* valid and unique.In addition,the identification and processing flow of fixed MAC communication
|
||
|
|
* for CIU should be added at the application layer of receiver.
|
||
|
|
* @attention Fixed MAC address and dynamic MAC address cannot be used at the same time.
|
||
|
|
* @attention Invoked by the NDM
|
||
|
|
* @param is_no_mac [IN] type #td_bool:
|
||
|
|
* @li TD_TRUE: Dynamic MAC address. Use the MAC address of the P2P communication target site as its own MAC (except
|
||
|
|
* for wildcard MAC addresses)
|
||
|
|
* @li TD_FALSE: Fixed MAC address. Use CIU's own MAC address
|
||
|
|
* @retval ret type #td_u32.
|
||
|
|
* @li EXT_ERR_SUCCESS: The setting is successful.
|
||
|
|
* @li # Other return values fail to be set.
|
||
|
|
*
|
||
|
|
* @par dependency:
|
||
|
|
* @li soc_mdm_mac.h: The file is used to describe the external interfaces of the link layer.
|
||
|
|
* @see None.
|
||
|
|
* @since DW21_V100R001C00
|
||
|
|
*/
|
||
|
|
td_u32 uapi_p2p_set_ciu_no_mac_state_p1901(EXT_IN td_bool is_no_mac);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @ingroup ndm_group
|
||
|
|
* brief the type of ndm's work mode
|
||
|
|
*/
|
||
|
|
typedef enum {
|
||
|
|
EXT_NDM_UNKNOWN_WORK_MODE = 0, /**< Unknown mode */
|
||
|
|
EXT_NDM_CIU_MODE, /**< CIU mode */
|
||
|
|
EXT_NDM_SEARCH_NET_MODE, /**< Network search mode */
|
||
|
|
EXT_NDM_CIU_MODE_SWITCH_COM, /**< CIU mode which needs switching com type */
|
||
|
|
EXT_NDM_SEARCH_NET_MODE_SWITCH_COM, /**< Network search mode which needs switching com type */
|
||
|
|
EXT_NDM_MONITOR_MODE,
|
||
|
|
} ext_ndm_work_mode_type;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @ingroup ndm_group
|
||
|
|
* @brief Registration and initialization of the transponder channel function (P1901.1 protocol)
|
||
|
|
*
|
||
|
|
* @par description:
|
||
|
|
* Register and initialize the function of the transponder channel.
|
||
|
|
* @par dependency:
|
||
|
|
* @li soc_mdm_ndm.h: The file is used to describe the external interfaces of the link layer.
|
||
|
|
* @see None.
|
||
|
|
* @since DW21_V100R001C00
|
||
|
|
*/
|
||
|
|
td_u32 uapi_register_ndm_chl_p1901(td_void);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @ingroup ndm_group
|
||
|
|
* @brief Registration and initialization of the transponder channel function (SG protocol)
|
||
|
|
*
|
||
|
|
* @par description:
|
||
|
|
* Register and initialize the function of the transponder channel.
|
||
|
|
* @par dependency:
|
||
|
|
* @li soc_mdm_ndm.h: The file is used to describe the external interfaces of the link layer.
|
||
|
|
* @see None.
|
||
|
|
* @since DW21_V100R001C00
|
||
|
|
*/
|
||
|
|
td_u32 uapi_register_ndm_chl_psg(td_void);
|
||
|
|
/**
|
||
|
|
* @ingroup ndm_group
|
||
|
|
* @brief Indicates the callback function type for judging point to point packet by destination mac address.
|
||
|
|
*
|
||
|
|
* @par Description:
|
||
|
|
* Indicates the callback function type for judging whether receive point to point packet by destination mac address.
|
||
|
|
*
|
||
|
|
* @attention The product type is STA or NDM.
|
||
|
|
* @param dest_mac [IN] Type #td_u8*: destination mac address.
|
||
|
|
* @param dest_mac_len [IN] Type #td_u8: destination mac address length.
|
||
|
|
* @retval ret type #td_bool.
|
||
|
|
* @li TD_TRUE: receive this point to point packet.
|
||
|
|
* @li TD_FALSE: drop this packet
|
||
|
|
*
|
||
|
|
* @par Dependency:
|
||
|
|
* @li soc_mdm_ndm.h: Describes the external APIs of the link layer.
|
||
|
|
* @see None
|
||
|
|
* @since DW21_V100R001C00
|
||
|
|
*/
|
||
|
|
typedef td_bool (*ext_mdm_is_rcv_ciu_pkt_by_dest_mac)(EXT_CONST td_u8 *dest_mac, td_u8 dest_mac_len);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @ingroup ndm_group
|
||
|
|
* @brief Register the callback function for judging point to point packet by destination mac address.
|
||
|
|
*
|
||
|
|
* @par Description:
|
||
|
|
* Register the callback function for for judging whether receive point to point packet by destination mac address.
|
||
|
|
*
|
||
|
|
* @attention The product type is STA or NDM.
|
||
|
|
* @param cb [IN] Type #ext_mdm_is_rcv_ciu_pkt_by_dest_mac: callback function.
|
||
|
|
* @retval ret type #td_u32.
|
||
|
|
* @li EXT_ERR_INVALID_PARAMETER: return this value when cb is null.
|
||
|
|
* @li EXT_ERR_SUCCESS: registration success
|
||
|
|
*
|
||
|
|
* @par Dependency:
|
||
|
|
* @li soc_mdm_ndm.h: Describes the external APIs of the link layer.
|
||
|
|
* @see None
|
||
|
|
* @since DW21_V100R001C00
|
||
|
|
*/
|
||
|
|
td_u32 uapi_register_judge_is_rcv_p2p_pkt_by_dest_mac(ext_mdm_is_rcv_ciu_pkt_by_dest_mac cb);
|
||
|
|
/**
|
||
|
|
* @ingroup ndm_group
|
||
|
|
* brief the type of event type
|
||
|
|
*/
|
||
|
|
typedef enum {
|
||
|
|
P2P_SHARK_HANDS_START = 0, /**< Start handshake. */
|
||
|
|
P2P_SHARK_HANDS_FAIL, /**< Handshake failure. */
|
||
|
|
P2P_SHARK_HANDS_SUCCESS, /**< Handshake success. */
|
||
|
|
P2P_SEND_PACKET, /**< Data was sent successfully. */
|
||
|
|
} ext_p2p_event_report_code;
|
||
|
|
/**
|
||
|
|
* @ingroup ndm_group
|
||
|
|
* brief the type of report information
|
||
|
|
*/
|
||
|
|
typedef struct {
|
||
|
|
ext_p2p_event_report_code code; /**< Event reporting code */
|
||
|
|
|
||
|
|
td_u16 frame_id; /**< frame id, the value is equal to id in ext_p2p_mac_frame_ctrl */
|
||
|
|
td_u16 rsved_1; /**< reserved 2 bytes */
|
||
|
|
|
||
|
|
td_u8 current_frequency; /**< Current frequency band */
|
||
|
|
td_u8 rsved_2; /**< reserved 1 bytes */
|
||
|
|
|
||
|
|
td_u8 dest_mac[EXT_PLC_MAC_ADDR_LEN]; /**< Destination site MAC address */
|
||
|
|
} ext_p2p_event_info;
|
||
|
|
/**
|
||
|
|
* @ingroup ndm_group
|
||
|
|
* @brief Indicates the callback function type for processing reported data.
|
||
|
|
*
|
||
|
|
* @par Description:
|
||
|
|
* Indicates the callback function type for processing reported data.
|
||
|
|
*
|
||
|
|
* @attention The product type is STA or NDM.
|
||
|
|
* @param report_info [IN] Type #ext_p2p_event_info*: data to be reported.
|
||
|
|
* @retval none.
|
||
|
|
*
|
||
|
|
* @par Dependency:
|
||
|
|
* @li soc_mdm_ndm.h: Describes the external APIs of the link layer.
|
||
|
|
* @see None
|
||
|
|
* @since DW21_V100R001C00
|
||
|
|
*/
|
||
|
|
typedef td_void (*ext_p2p_event_report_callback)(ext_p2p_event_info *report_info);
|
||
|
|
/**
|
||
|
|
* @ingroup ndm_group
|
||
|
|
* @brief Register the callback function for processing reported data.
|
||
|
|
*
|
||
|
|
* @par Description:
|
||
|
|
* Register the callback function for processing reported data.
|
||
|
|
*
|
||
|
|
* @attention The product type is STA or NDM.
|
||
|
|
* @param callback [IN] Type #ext_p2p_event_report_callback: function name.
|
||
|
|
* @retval ret type #td_u32.
|
||
|
|
* @li EXT_ERR_INVALID_PARAMETER: callback is null pointer.
|
||
|
|
* @li EXT_ERR_SUCCESS: registration success.
|
||
|
|
*
|
||
|
|
* @par Dependency:
|
||
|
|
* @li soc_mdm_ndm.h: Describes the external APIs of the link layer.
|
||
|
|
* @see None
|
||
|
|
* @since DW21_V100R001C00
|
||
|
|
*/
|
||
|
|
td_u32 uapi_register_p2p_event_report(ext_p2p_event_report_callback callback);
|
||
|
|
/**
|
||
|
|
* @ingroup ndm_group
|
||
|
|
* @brief Register the callback function for processing the handshake and heartbeat
|
||
|
|
* FC sent from the NDM in the case of point-to-point communication.
|
||
|
|
*
|
||
|
|
* @par Description: Register the callback function for processing the handshake and heartbeat
|
||
|
|
* FC sent from the NDM in the case of point-to-point communication.
|
||
|
|
*
|
||
|
|
* @attention The product type is STA.
|
||
|
|
* @param None.
|
||
|
|
* @retval None.
|
||
|
|
* @par Dependency: soc_mdm_ndm.h: Describes the external APIs of the link layer.
|
||
|
|
* @see None
|
||
|
|
* @since DW21_V100R001C00
|
||
|
|
*/
|
||
|
|
td_void uapi_mdm_register_process_p2p_fc_function(td_void);
|
||
|
|
#ifdef __cplusplus
|
||
|
|
}
|
||
|
|
#endif
|
||
|
|
|
||
|
|
#endif
|