|
- /**
- *
- * \file
- *
- * \brief WINC3400 IoT Application Interface.
- *
- * Copyright (c) 2017-2018 Microchip Technology Inc. and its subsidiaries.
- *
- * \asf_license_start
- *
- * \page License
- *
- * Subject to your compliance with these terms, you may use Microchip
- * software and any derivatives exclusively with Microchip products.
- * It is your responsibility to comply with third party license terms applicable
- * to your use of third party software (including open source software) that
- * may accompany Microchip software.
- *
- * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES,
- * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE,
- * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY,
- * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE
- * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL
- * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE
- * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE
- * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT
- * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY
- * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY,
- * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE.
- *
- * \asf_license_stop
- *
- */
-
- /**@defgroup m2m_wifi WLAN
- */
-
- #ifndef __M2M_WIFI_H__
- #define __M2M_WIFI_H__
-
- /*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
- INCLUDES
- *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
-
- #include "common/include/nm_common.h"
- #include "driver/include/m2m_types.h"
- #include "driver/source/nmdrv.h"
-
- /*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
- MACROS
- *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
- /**@defgroup WlanEnums Enumeration/Typedefs
- * @ingroup m2m_wifi
- * @{*/
-
- /*!
- @enum \
- tenuWifiFrameType
- @brief
- Enumeration for Wi-Fi MAC frame type codes (2-bit)
- The following types are used to identify the type of frame sent or received.
- Each frame type constitutes a number of frame subtypes as defined in @ref tenuSubTypes to specify
- the exact type of frame.
-
- Values are defined as per the IEEE 802.11 standard.
- @remarks
- The following frame types are useful for advanced user usage when symbol CONF_MGMT is defined
- and the user application requires to monitor the frame transmission and reception.
- @warning
- This functionality is not supported by current WINC firmware.
- @see
- tenuSubTypes
- */
- typedef enum {
- MANAGEMENT = 0x00, /*!< Wi-Fi Management frame (Probe Req/Resp, Beacon, Association Req/Resp ...etc). */
- CONTROL = 0x04, /*!< Wi-Fi Control frame (eg. ACK frame). */
- DATA_BASICTYPE = 0x08, /*!< Wi-Fi Data frame. */
- RESERVED = 0x0C
- }tenuWifiFrameType;
-
-
- /*!
- @enum \
- tenuSubTypes
-
- @brief
- Enumeration for Wi-Fi MAC Frame subtype code (6-bit).
- The frame subtypes fall into one of the three frame type groups as defined in @ref tenuWifiFrameType
- (MANAGEMENT, CONTROL & DATA).
-
- Values are defined as per the IEEE 802.11 standard.
- @remarks
- The following sub-frame types are useful for advanced user usage when symbol CONF_MGMT is defined
- and the application developer requires to monitor the frame transmission and reception.
- @warning
- This functionality is not supported by current WINC firmware.
- @see
- tenuWifiFrameType
- */
- typedef enum {
- /* Sub-Types related to Management */
- ASSOC_REQ = 0x00, /*!< Management: Association Request */
- ASSOC_RSP = 0x10, /*!< Management: Association Response */
- REASSOC_REQ = 0x20, /*!< Management: Re-Association Request */
- REASSOC_RSP = 0x30, /*!< Management: Re-Association Response */
- PROBE_REQ = 0x40, /*!< Management: Probe Request */
- PROBE_RSP = 0x50, /*!< Management: Probe Response */
- BEACON = 0x80, /*!< Management: Beacon */
- ATIM = 0x90, /*!< Management: Announcement Traffic Information Map */
- DISASOC = 0xA0, /*!< Management: Disassociation */
- AUTH = 0xB0, /*!< Management: Authentication */
- DEAUTH = 0xC0, /*!< Management: Deauthentication */
- ACTION = 0xD0, /*!< Management: Action */
-
- /* Sub-Types related to Control */
- PS_POLL = 0xA4, /*!< Control: Power Save Poll*/
- RTS = 0xB4, /*!< Control: Request to Send */
- CTS = 0xC4, /*!< Control: Clear to Send */
- ACK = 0xD4, /*!< Control: Acknowledgement */
- CFEND = 0xE4, /*!< Control: End of Contention Free Period */
- CFEND_ACK = 0xF4, /*!< Control: ACK of data from STA + CFEND */
- BLOCKACK_REQ = 0x84, /*!< Control: Block Acknoweledgement Request */
- BLOCKACK = 0x94, /*!< Control: Block Acknowledgement */
-
- /* Sub-Types related to Data */
- DATA = 0x08, /*!< Data: A non-QoS data frame */
- DATA_ACK = 0x18, /*!< Data: Data + CF-Ack */
- DATA_POLL = 0x28, /*!< Data: Data + CF-Poll */
- DATA_POLL_ACK = 0x38, /*!< Data: Data + CF-Ack + CF-Poll*/
- NULL_FRAME = 0x48, /*!< Data: Null (no data) */
- CFACK = 0x58, /*!< Data: CF-Ack (no data) */
- CFPOLL = 0x68, /*!< Data: CF-Poll (no data) */
- CFPOLL_ACK = 0x78, /*!< Data: CF-Poll + CF-Ack (no data) */
- QOS_DATA = 0x88, /*!< Data: A QoS data frame */
- QOS_DATA_ACK = 0x98, /*!< Data: QoS data + CF-Ack */
- QOS_DATA_POLL = 0xA8, /*!< Data: QoS data + CF-Poll */
- QOS_DATA_POLL_ACK = 0xB8, /*!< Data: QoS data + CF-Ack + CF-Poll */
- QOS_NULL_FRAME = 0xC8, /*!< Data: QoS Null (no data) */
- QOS_CFPOLL = 0xE8, /*!< Data: Qos CF-Poll (no data) */
- QOS_CFPOLL_ACK = 0xF8 /*!< Data: QoS CF-Poll + CF-Ack (no data) */
- }tenuSubTypes;
-
-
- /*!
- @enum \
- tenuInfoElementId
-
- @brief
- Enumeration for the Wi-Fi Information Element(IE) IDs, which indicates the specific type of IEs.
- IEs are management frame information included in management frames.
-
- Values are defined as per the IEEE 802.11 standard.
-
- @warning
- This functionality is not supported by current WINC firmware.
- */
- typedef enum {
- ISSID = 0, /*!< Service Set Identifier (SSID) */
- ISUPRATES = 1, /*!< Supported Rates */
- IFHPARMS = 2, /*!< FH parameter set */
- IDSPARMS = 3, /*!< DS parameter set */
- ICFPARMS = 4, /*!< CF parameter set */
- ITIM = 5, /*!< Traffic Information Map */
- IIBPARMS = 6, /*!< IBSS parameter set */
- ICOUNTRY = 7, /*!< Country element. */
- IEDCAPARAMS = 12, /*!< EDCA parameter set */
- ITSPEC = 13, /*!< Traffic Specification */
- ITCLAS = 14, /*!< Traffic Classification */
- ISCHED = 15, /*!< Schedule. */
- ICTEXT = 16, /*!< Challenge Text */
- IPOWERCONSTRAINT = 32, /*!< Power Constraint. */
- IPOWERCAPABILITY = 33, /*!< Power Capability */
- ITPCREQUEST = 34, /*!< TPC Request */
- ITPCREPORT = 35, /*!< TPC Report */
- ISUPCHANNEL = 36, /*!< Supported channel list */
- ICHSWANNOUNC = 37, /*!< Channel Switch Announcement */
- IMEASUREMENTREQUEST = 38, /*!< Measurement request */
- IMEASUREMENTREPORT = 39, /*!< Measurement report */
- IQUIET = 40, /*!< Quiet element Info */
- IIBSSDFS = 41, /*!< IBSS DFS */
- IERPINFO = 42, /*!< ERP Information */
- ITSDELAY = 43, /*!< TS Delay */
- ITCLASPROCESS = 44, /*!< TCLAS Processing */
- IHTCAP = 45, /*!< HT Capabilities */
- IQOSCAP = 46, /*!< QoS Capability */
- IRSNELEMENT = 48, /*!< RSN Information Element */
- IEXSUPRATES = 50, /*!< Extended Supported Rates */
- IEXCHSWANNOUNC = 60, /*!< Extended Ch Switch Announcement */
- IHTOPERATION = 61, /*!< HT Information */
- ISECCHOFF = 62, /*!< Secondary Channel Offset */
- I2040COEX = 72, /*!< 20/40 Coexistence IE */
- I2040INTOLCHREPORT = 73, /*!< 20/40 Intolerant channel report */
- IOBSSSCAN = 74, /*!< OBSS Scan parameters */
- IEXTCAP = 127, /*!< Extended capability */
- IWMM = 221, /*!< WMM parameters */
- IWPAELEMENT = 221 /*!< WPA Information Element */
- }tenuInfoElementId;
-
- /*!
- @enum \
- tenuWifiCapability
-
- @brief
- Enumeration for capability Information field bit.
- The value of the capability information field from the 802.11 management frames received by the
- wireless LAN interface.
- Defining the capabilities of the Wi-Fi system.
-
- Values are defined as per the IEEE 802.11 standard.
- @warning
- This functionality is not supported by current WINC firmware.
- */
- typedef enum{
- ESS = 0x01, /*!< ESS capability */
- IBSS = 0x02, /*!< IBSS mode */
- POLLABLE = 0x04, /*!< CF Pollable */
- POLLREQ = 0x08, /*!< Request to be polled */
- PRIVACY = 0x10, /*!< WEP encryption supported */
- SHORTPREAMBLE = 0x20, /*!< Short Preamble is supported */
- SHORTSLOT = 0x400, /*!< Short Slot is supported */
- PBCC = 0x40, /*!< PBCC */
- CHANNELAGILITY = 0x80, /*!< Channel Agility */
- SPECTRUM_MGMT = 0x100, /*!< Spectrum Management */
- DSSS_OFDM = 0x2000 /*!< DSSS-OFDM */
- }tenuWifiCapability;
-
-
- /*!
- @typedef \
- tpfAppWifiCb
-
- @brief
- This is the main callback function for the Wi-Fi driver and is responsible for processing
- any M2M_WIFI events that are received on the Wi-Fi interface.
- These events (notifications) are usually received in response to earlier Wi-Fi requests such
- as @ref m2m_wifi_request_scan, and @ref m2m_wifi_connect.
-
- Most Wi-Fi APIs are asynchronous and calling them generates information that is passed back
- via this callback - for instance @ref m2m_wifi_request_scan will return a set of detected
- networks.
-
- Applications must ensure a callback function is registered with the Wi-Fi driver by
- calling @ref m2m_wifi_init.
- @param [in] u8MsgType
- Type of notification. Possible types are:
- - @ref M2M_WIFI_RESP_CON_STATE_CHANGED
- - @ref M2M_WIFI_RESP_CONN_INFO
- - @ref M2M_WIFI_REQ_DHCP_CONF
- - @ref M2M_WIFI_REQ_WPS
- - @ref M2M_WIFI_RESP_IP_CONFLICT
- - @ref M2M_WIFI_RESP_SCAN_DONE
- - @ref M2M_WIFI_RESP_SCAN_RESULT
- - @ref M2M_WIFI_RESP_CURRENT_RSSI
- - @ref M2M_WIFI_RESP_CLIENT_INFO
- - @ref M2M_WIFI_RESP_PROVISION_INFO
- - @ref M2M_WIFI_RESP_DEFAULT_CONNECT
- - @ref M2M_WIFI_RESP_ETHERNET_RX_PACKET (If Bypass mode is active)
- - @ref M2M_WIFI_RESP_WIFI_RX_PACKET (If monitoring mode is active)
-
- @param [in] pvMsg
- A pointer to a buffer containing the notification parameters (if any). It should be
- Casted to the data type associated with type of notification.
-
- @see
- tstrM2mWifiStateChanged
- tstrM2MWPSInfo
- tstrM2mScanDone
- tstrM2mWifiscanResult
- m2m_wifi_init
- */
- typedef void (*tpfAppWifiCb) (uint8 u8MsgType, void * pvMsg);
-
- /*!
- @typedef \
- tpfAppEthCb
-
- @brief
- Ethernet (Bypass mode) notification callback function receiving Bypass mode events as
- defined in the Wi-Fi responses enumeration @ref tenuM2mStaCmd.
-
- If bypass mode is enabled, applications must ensure this callback function is registered
- with the Wi-Fi driver by calling @ref m2m_wifi_init.
-
- @param [in] u8MsgType
- Type of notification. Possible types are:
- - @ref M2M_WIFI_RESP_ETHERNET_RX_PACKET
-
- @param [in] pvMsg
- A pointer to a buffer containing the notification parameters (if any). This must be
- casted to the data type uint8 *.
-
- @param [in] pvControlBuf
- A pointer to control buffer describing the accompanied message. This must be casted to
- the data type @ref tstrM2mIpCtrlBuf.
-
- @see
- m2m_wifi_init
-
- */
- typedef void (*tpfAppEthCb) (uint8 u8MsgType, void * pvMsg,void * pvCtrlBuf);
-
- /*!
- @typedef \
- tpfAppMonCb
-
- @brief
- Wi-Fi monitoring mode callback function. This function delivers all received wi-Fi packets
- to the application. Applications requiring to operate in the monitoring shall call the
- function m2m_wifi_enable_monitoring_mode, each frame received will invoke a single call to this
- callback function. Monitoring mode may be disabled by calling @ref m2m_wifi_disable_monitoring_mode.
-
- @param [in] pstrWifiRxPacket
- Pointer to a structure holding the Wi-Fi packet header parameters.
-
- @param [in] pu8Payload
- Pointer to the buffer holding the Wi-Fi packet payload information required by the application
- starting from the defined OFFSET by the application (when calling
- m2m_wifi_enable_monitoring_mode). Could hold a value of NULL, if the application does not need
- any data from the payload.
-
- @param [in] u16PayloadSize
- The size of the payload in bytes.
-
- @see
- m2m_wifi_enable_monitoring_mode
-
- @warning
- u16PayloadSize may not exceed the buffer size given through m2m_wifi_enable_monitoring_mode.
- */
- typedef void (*tpfAppMonCb) (tstrM2MWifiRxPacketInfo *pstrWifiRxPacket, uint8 * pu8Payload, uint16 u16PayloadSize);
-
- /**@}*/
-
- /*!
- @struct \
- tstrEthInitParam
-
- @brief
- Structure to hold Ethernet interface parameters.
- Structure is to be defined and have its attributes set, based on the application's functionality
- before a call is made to initialize the wi-fi operations by calling the
- @ref m2m_wifi_init function. Part of the wi-fi configuration structure @ref tstrWifiInitParam.
- Applications shouldn't need to define this structure, if the bypass mode is not defined.
-
- @see
- tpfAppEthCb
- tpfAppWifiCb
- m2m_wifi_init
- */
- typedef struct {
- tpfAppWifiCb pfAppWifiCb; /*!< Callback for wifi notifications. */
- tpfAppEthCb pfAppEthCb; /*!< Callback for Ethernet interface. */
- uint8 * au8ethRcvBuf; /*!< Pointer to Receive Buffer of Ethernet Packet */
- uint16 u16ethRcvBufSize; /*!< Size of Receive Buffer for Ethernet Packet */
- } tstrEthInitParam;
-
- /*!
- @struct \
- tstrM2mIpCtrlBuf
-
- @brief
- Structure holding the incoming buffer's data size information, indicating the data size of the
- buffer and the remaining buffer's data size. The data of the buffer which holds the packet sent
- to the host when in the bypass mode, is placed in the @ref tstrEthInitParam::au8ethRcvBuf attribute.
- This following information is retrieved in the host when an event
- @ref M2M_WIFI_RESP_ETHERNET_RX_PACKET is received in the Wi-Fi callback function
- @ref tpfAppWifiCb.
-
- The application is expected to use this structure's information to determine if there is still incoming data to be received from the firmware.
-
- @see
- tpfAppEthCb
- tstrEthInitParam
-
- @warning
- Make sure that bypass mode is defined before using @ref tstrM2mIpCtrlBuf
-
- */
- typedef struct{
- uint16 u16DataSize; /*!< Size of the received data in bytes. */
- uint16 u16RemainigDataSize; /*!< Size of the remaining data bytes to be delivered to host. */
- } tstrM2mIpCtrlBuf;
-
-
- /**
- @struct \
- tstrWifiInitParam
-
- @brief
- Structure, holding the Wi-fi configuration attributes such as the wi-fi callback , monitoring mode callback and Ethernet parameter initialization structure.
- Such configuration parameters are required to be set before calling the wi-fi initialization function @ref m2m_wifi_init.
- @ref pfAppWifiCb attribute must be set to handle the wi-fi callback operations.
- @ref pfAppMonCb attribute, is optional based on whether the application requires the monitoring mode configuration, and can there not
- be set before the initialization.
- @ref strEthInitParam structure, is another optional configuration based on whether the bypass mode is set.
-
- */
- typedef struct {
- tpfAppWifiCb pfAppWifiCb; /*!< Callback for Wi-Fi notifications. */
- tpfAppMonCb pfAppMonCb; /*!< Callback for monitoring interface. */
- tstrEthInitParam strEthInitParam ; /*!< Structure to hold Ethernet interface parameters. */
- uint8 GainTableIndex; /*!< Gain Table index to be used to configure the WiFi and BLE gains. */
- uint8 __PAD24__[3]; /*!< Padding bytes for forcing 4-byte alignment */
- } tstrWifiInitParam;
-
-
- /*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
- FUNCTION PROTOTYPES
- *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
- /** \defgroup WLANAPI Functions
- * @ingroup m2m_wifi
- */
- #ifdef __cplusplus
- extern "C" {
- #endif
- /**@{*/
- /*!
- @fn \
- NMI_API void m2m_wifi_download_mode(void);
-
- @brief
- Synchronous API that prepares the WINC IC to enter firmware or certificate download mode.
-
- @details
- The WINC board is prepared for download, through initializations for the WINC driver including
- bus initializations and interrupt enabling, it also halts the chip, to allow for the firmware
- downloads. Firmware can be downloaded through a number of interfaces, UART, I2C and SPI.
-
- @return
- The function returns @ref M2M_SUCCESS for successful operations and a negative value otherwise.
- */
- NMI_API sint8 m2m_wifi_download_mode(void);
-
- /*!
- @fn \
- NMI_API sint8 m2m_wifi_init(tstrWifiInitParam * pWifiInitParam);
-
- @brief
- Synchronous API that initialises the WINC driver.
-
- @details
- This function initializes the driver by registering the call back function for M2M_WIFI layer
- (also the call back function for bypass mode/monitoring mode if defined), initializing the host
- interface layer and the bus interfaces. Wi-Fi callback registering is essential to allow the
- handling of the events received, in response to the asynchronous Wi-Fi operations.
-
- Following are the possible Wi-Fi events that are expected to be received through the callback
- function (provided by the application):
-
- - @ref M2M_WIFI_RESP_CON_STATE_CHANGED
- - @ref M2M_WIFI_RESP_CONN_INFO
- - @ref M2M_WIFI_REQ_DHCP_CONF
- - @ref M2M_WIFI_REQ_WPS
- - @ref M2M_WIFI_RESP_IP_CONFLICT
- - @ref M2M_WIFI_RESP_SCAN_DONE
- - @ref M2M_WIFI_RESP_SCAN_RESULT
- - @ref M2M_WIFI_RESP_CURRENT_RSSI
- - @ref M2M_WIFI_RESP_CLIENT_INFO
- - @ref M2M_WIFI_RESP_PROVISION_INFO
- - @ref M2M_WIFI_RESP_DEFAULT_CONNECT
- - @ref M2M_WIFI_RESP_ETHERNET_RX_PACKET (if bypass mode is enabled)
- - @ref M2M_WIFI_RESP_WIFI_RX_PACKET (if monitoring mode is enabled)
-
- Any application using the WINC driver must call this function at the start of its main function.
-
- @param [in] pWifiInitParam
- This is a pointer to the @ref tstrWifiInitParam structure which contains pointers to the
- application WIFI layer callback, monitoring mode callback and @ref tstrEthInitParam
- structure (which contains initialisation settings for bypass mode).
-
- @return
- The function returns @ref M2M_SUCCESS for successful operations and a negative value otherwise.
- @pre
- Prior to this function call, application users must provide a callback function responsible for
- receiving all the wi-fi events that are received on the M2M_WIFI layer.
-
- @warning
- Failure to successfully complete function indicates that the driver couldn't be initialized and
- a fatal error will prevent the application from proceeding.
-
- @see
- m2m_wifi_deinit
- tenuM2mStaCmd
- */
- NMI_API sint8 m2m_wifi_init(tstrWifiInitParam * pWifiInitParam);
-
- /*!
- @fn \
- NMI_API sint8 m2m_wifi_deinit(void * arg);
-
- @brief
- Synchronous API that de-initialises the WINC driver.
-
- @details
- This disables the host interface and frees any resources used by the M2M_WIFI layer.
- The function must be called in the during the final phases of closing the application to ensure
- that all resources have been correctly released.
-
- @param [in] arg
- Opaque argument, not used in current implementation. Application should use null.
-
- @return
- The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC,
- and a negative value otherwise.
- */
- NMI_API sint8 m2m_wifi_deinit(void * arg);
-
- /*!
- @fn \
- sint8 m2m_wifi_init_hold(void);
-
- @brief
- First part of m2m_wifi_init, up to the point of initializing spi for flash access.
- @see
- m2m_wifi_init
- */
- sint8 m2m_wifi_init_hold(void);
- /*!
- @fn \
- sint8 m2m_wifi_init_start(tstrWifiInitParam * param);
-
- @brief
- Second part of m2m_wifi_init, continuing from where m2m_wifi_init_hold left off.
-
- @param [in] param
- Structure containing configration details
-
- @see
- m2m_wifi_init
- */
- sint8 m2m_wifi_init_start(tstrWifiInitParam * param);
-
- /*!
- @fn \
- sint8 m2m_wifi_reinit(tstrWifiInitParam * pWifiInitParam);
-
- @brief
- Deinitialize and reinitialize wifi. Resets the WINC.
- Parameter may be set to NULL, in which case there is no change to the parameters given at
- initialization.
- */
- sint8 m2m_wifi_reinit(tstrWifiInitParam * param);
- /*!
- @fn \
- sint8 m2m_wifi_reinit_hold(void);
-
- @brief
- First part of m2m_wifi_reinit, up to the point of initializing spi for flash access.
- @see
- m2m_wifi_reinit
- */
- sint8 m2m_wifi_reinit_hold(void);
-
- /*!
- @fn \
- sint8 m2m_wifi_reinit_start(tstrWifiInitParam * param);
-
- @brief
- Second part of m2m_wifi_reinit, continuing from where m2m_wifi_reinit_hold left off.
- @see
- m2m_wifi_reinit
- */
- sint8 m2m_wifi_reinit_start(tstrWifiInitParam * param);
-
- /*!
- @fn \
- NMI_API void m2m_wifi_yield(void);
-
- @brief
- Yield from processing more synchronous M2M events
-
- @details
- This function causes the synchronous M2M event handler function to yield from processing further
- events and return control to the caller.
-
- @return
- The function returns @ref M2M_SUCCESS for successful interrupt handling and a negative value
- otherwise.
-
- @pre
- Prior to receiving Wi-Fi interrupts, the WINC driver should have been successfully initialized
- by calling the @ref m2m_wifi_init function.
-
- @warning
- Failure to successfully complete this function indicates bus errors and hence a fatal error that will prevent the application from proceeding.
- */
-
- NMI_API void m2m_wifi_yield(void);
- /*!
- @fn \
- NMI_API sint8 m2m_wifi_handle_events(void * arg);
-
- @brief
- Synchronous M2M event handler function
-
- @details
- This function is responsible for handling interrupts received from the WINC firmware.
- Applications should call this function periodically in-order to receive the events that are to
- be handled by the callback functions implemented by the application.
- */
-
- NMI_API sint8 m2m_wifi_handle_events(void * arg);
-
- /*!
- @fn \
- NMI_API sint8 m2m_wifi_default_connect(void);
-
- @brief
- Asynchronous API that attempts to reconnect to the last-associated access point.
-
- @details
- An application calling this function will cause the firmware to attempt to reconnect to the
- access point with which it had last successfully connected. A failure to connect will result in
- a response of @ref M2M_WIFI_RESP_DEFAULT_CONNECT indicating a connection error as defined in the
- structure @ref tstrM2MDefaultConnResp.
-
- Possible errors are:
- - @ref M2M_DEFAULT_CONN_EMPTY_LIST indicating that the connection list is empty, or
- - @ref M2M_DEFAULT_CONN_SCAN_MISMATCH indicating a mismatch for the saved AP name.
-
- @return
- The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC,
- and a negative value otherwise.
-
- @pre
- Prior to connecting, the WINC driver should have been successfully initialized by calling the
- @ref m2m_wifi_init function.
-
- @warning
- - This function maybe called in station mode only.
- - It is important to note that successful completion of a call to m2m_wifi_default_connect()
- does not guarantee success of the WIFI connection; a negative return value indicates only
- locally-detected errors.
-
- @see
- m2m_wifi_connect
- */
- NMI_API sint8 m2m_wifi_default_connect(void);
-
- /*!
- @fn \
- NMI_API sint8 m2m_wifi_connect(char *pcSsid, uint8 u8SsidLen, uint8 u8SecType, void *pvAuthInfo, uint16 u16Ch);
-
- @brief
- Asynchronous API to request connection to a specified access point
-
- @details
- Prior to a successful connection, the application developers must know the SSID, the security
- type, and the authentication parameters of the target access point; knowledge of the channel number
- is optional.
-
- The connection status will be indicated to the application via a
- @ref M2M_WIFI_RESP_CON_STATE_CHANGED event. The status will be one of those defined in
- @ref tenuM2mConnState withe @ref M2M_WIFI_CONNECTED indicating a successful connection.
-
- @param [in] pcSsid
- A buffer holding the SSID corresponding to the requested AP.
-
- @param [in] u8SsidLen
- Length of the given SSID (not including the NULL termination). A length less than ZERO or
- greater than the maximum defined SSID @ref M2M_MAX_SSID_LEN will result in a negative error
- @ref M2M_ERR_FAIL.
-
- @param [in] u8SecType
- Wi-Fi security type security for the network. It can be one of the following types:
- -@ref M2M_WIFI_SEC_OPEN
- -@ref M2M_WIFI_SEC_WEP
- -@ref M2M_WIFI_SEC_WPA_PSK
- -@ref M2M_WIFI_SEC_802_1X
- A value outside these possible values will result in a negative return error @ref M2M_ERR_FAIL.
-
- @param [in] pvAuthInfo
- Authentication parameters required for completing the connection. It is type is based on the
- security type. If the authentication parameters are NULL or are greater than the maximum length
- of the authentication parameters length as defined by @ref M2M_MAX_PSK_LEN a negative error will
- return @ref M2M_ERR_FAIL(-12) indicating connection failure.
-
- @param [in] u16Ch
- Wi-Fi channel number as defined in @ref tenuM2mScanCh enumeration. Specification of a channel
- number greater than @ref M2M_WIFI_CH_14 returns a negative error @ref M2M_ERR_FAIL(-12) unless
- the value is M2M_WIFI_CH_ALL (255). A channel number of M2M_WIFI_CH_ALL indicates that the
- firmware should scan all channels to find the SSID specified in parameter pcSsid.
-
- Failure to find the connection match will return a negative error
- @ref M2M_DEFAULT_CONN_SCAN_MISMATCH.
-
- @return
- The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC,
- and a negative value otherwise.
-
- @pre
- Prior to a successful connection request, the wi-fi driver must have been successfully initialized through the call of the @ref m2m_wifi_init function
-
- @see
- tuniM2MWifiAuth
- tstr1xAuthCredentials
- tstrM2mWifiWepParams
-
- @warning
- - This function must be called in station mode only.
- - Successful completion of this function does not guarantee success of the WIFI connection, and
- a negative return value indicates only locally-detected errors.
- */
- NMI_API sint8 m2m_wifi_connect(char *pcSsid, uint8 u8SsidLen, uint8 u8SecType, void *pvAuthInfo, uint16 u16Ch);
-
- /*!
- @fn \
- NMI_API sint8 m2m_wifi_connect_sc(char *pcSsid, uint8 u8SsidLen, uint8 u8SecType, void *pvAuthInfo, uint16 u16Ch,uint8 u8SaveCred);
-
- @brief
- Asynchronous API to request connection to a specific AP with option to store credentials in
- flash.
-
- @details
- Prior to a successful connection, the application developers must know the SSID, the security
- type, and the authentication parameters of the target access point; knowledge of the channel number
- is optional.
-
- The connection status will be indicated to the application via a
- @ref M2M_WIFI_RESP_CON_STATE_CHANGED event. The status will be one of those defined in
- @ref tenuM2mConnState withe @ref M2M_WIFI_CONNECTED indicating a successful connection.
-
- The only difference between this function and @ref m2m_wifi_connect, is the option to save the
- acess point info ( SSID, password...etc) into flash.
-
- @param [in] pcSsid
- A buffer holding the SSID corresponding to the requested AP.
-
- @param [in] u8SsidLen
- Length of the given SSID (not including the NULL termination). A length less than ZERO or
- greater than the maximum defined SSID @ref M2M_MAX_SSID_LEN will result in a negative error
- @ref M2M_ERR_FAIL.
-
- @param [in] u8SecType
- Wi-Fi security type security for the network. It can be one of the following types:
- -@ref M2M_WIFI_SEC_OPEN
- -@ref M2M_WIFI_SEC_WEP
- -@ref M2M_WIFI_SEC_WPA_PSK
- -@ref M2M_WIFI_SEC_802_1X
- A value outside these possible values will result in a negative return error @ref M2M_ERR_FAIL.
-
- @param [in] pvAuthInfo
- Authentication parameters required for completing the connection. It is type is based on the
- security type. If the authentication parameters are NULL or are greater than the maximum length
- of the authentication parameters length as defined by @ref M2M_MAX_PSK_LEN a negative error will
- return @ref M2M_ERR_FAIL(-12) indicating connection failure.
-
- @param [in] u16Ch
- Wi-Fi channel number as defined in @ref tenuM2mScanCh enumeration. Specification of a channel
- number greater than @ref M2M_WIFI_CH_14 returns a negative error @ref M2M_ERR_FAIL(-12) unless
- the value is M2M_WIFI_CH_ALL (255). A channel number of M2M_WIFI_CH_ALL indicates that the
- firmware should scan all channels to find the SSID specified in parameter pcSsid.
-
- Failure to find the connection match will return a negative error
- @ref M2M_DEFAULT_CONN_SCAN_MISMATCH.
-
- @param [in] u8SaveCred
- Option to store the acess point SSID and password into the WINC flash memory or not.
-
- @pre
- Prior to a successful connection request, the wi-fi driver must have been successfully initialized through the call of the @ref m2m_wifi_init function
-
- @see
- tuniM2MWifiAuth
- tstr1xAuthCredentials
- tstrM2mWifiWepParams
-
- @warning
- - This function must be called in station mode only.
- - Successful completion of this function does not guarantee success of the WIFI connection, and
- a negative return value indicates only locally-detected errors.
-
- @return The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC,
- and a negative value otherwise.
-
- */
- NMI_API sint8 m2m_wifi_connect_sc(char *pcSsid, uint8 u8SsidLen, uint8 u8SecType, void *pvAuthInfo, uint16 u16Ch, uint8 u8SaveCred);
-
- /*!
- @fn \
- NMI_API sint8 m2m_wifi_disconnect(void);
-
- @brief
- Synchronous API to request disconnection from a network.
-
- @details
- This function will cause the WINC IC to disconnect from any currently connected access point.
-
- @return
- The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC,
- and a negative value otherwise.
-
- @pre
- Disconnection must be made to a successfully connected AP. If the WINC is not in the connected state, a call to this function will hold insignificant.
-
- @warning
- This function must be called in station mode only.
-
- @see
- m2m_wifi_connect
- m2m_wifi_default_connect
-
- */
- NMI_API sint8 m2m_wifi_disconnect(void);
-
- /*!
- @fn \
- NMI_API sint8 m2m_wifi_start_provision_mode(tstrM2MAPConfig *pstrAPConfig, char *pcHttpServerDomainName, uint8 bEnableHttpRedirect);
-
- @brief
- Asynchronous API for control of Wi-Fi provisioning functionality.
-
- @details
- This function allows the application to start the WINC IC in 'provisioning mode', a special mode
- that triggers the WINC to create a Wi-Fi access point, DHCP server, and HTTP server.
-
- The HTTP server presents a provisioning page to a connected client which lists the access points
- detected in the vicinity of the WINC, and allows one of these to be selected and any appropriate
- credentials to be entered. This allows a headless system to be provisioned (configured to
- connect with an access point).
-
- Provisioning status is returned in a @ref M2M_WIFI_RESP_PROVISION_INFO event.
-
- @param [in] pstrAPConfig
- AP configuration parameters as defined in @ref tstrM2MAPConfig configuration structure.
- A NULL value passed in, will result in a negative error @ref M2M_ERR_FAIL.
-
- @param [in] pcHttpServerDomainName
- Domain name of the HTTP Provision WEB server which others will use to load the provisioning
- Home page. For example "wincconf.net".
-
- @param [in] bEnableHttpRedirect
- A flag to enable/disable the HTTP redirect feature. Possible values are:
- - Zero: DO NOT Use HTTP Redirect. In this case the associated device could open the
- provisioning page ONLY when the HTTP Provision URL of the WINC HTTP Server is
- correctly written on the browser.
- - Non-Zero: Use HTTP Redirect. In this case, all http traffic (http://URL) from the
- associated device (Phone, PC, ...etc) will be redirected to the WINC HTTP
- Provisioning Home page.
-
- @return
- The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC,
- and a negative value otherwise.
-
- @pre
- - A Wi-Fi notification callback of type @ref tpfAppWifiCb MUST be implemented and registered at
- startup. Registering the callback is done through passing it to the initialization
- @ref m2m_wifi_init function.
- - The event @ref M2M_WIFI_RESP_CONN_INFO must be handled in the callback to receive the
- requested connection info.
-
- @see
- tpfAppWifiCb
- m2m_wifi_init
- M2M_WIFI_RESP_PROVISION_INFO
- m2m_wifi_stop_provision_mode
- tstrM2MAPConfig
-
- @warning
- DO Not use ".local" in the pcHttpServerDomainName.
-
-
- \section WIFIExample1 Example
- The example demonstrates a code snippet for how provisioning is triggered and the response event
- received accordingly.
-
- @code
- #include "m2m_wifi.h"
- #include "m2m_types.h"
-
- void wifi_event_cb(uint8 u8WiFiEvent, void * pvMsg)
- {
- switch(u8WiFiEvent)
- {
- case M2M_WIFI_RESP_PROVISION_INFO:
- {
- tstrM2MProvisionInfo *pstrProvInfo = (tstrM2MProvisionInfo*)pvMsg;
- if(pstrProvInfo->u8Status == M2M_SUCCESS)
- {
- m2m_wifi_connect((char*)pstrProvInfo->au8SSID, (uint8)strlen(pstrProvInfo->au8SSID), pstrProvInfo->u8SecType,
- pstrProvInfo->au8Password, M2M_WIFI_CH_ALL);
-
- printf("PROV SSID : %s\n",pstrProvInfo->au8SSID);
- printf("PROV PSK : %s\n",pstrProvInfo->au8Password);
- }
- else
- {
- printf("(ERR) Provisioning Failed\n");
- }
- }
- break;
-
- default:
- break;
- }
- }
-
- int main()
- {
- tstrWifiInitParam param;
-
- param.pfAppWifiCb = wifi_event_cb;
- if(!m2m_wifi_init(¶m))
- {
- tstrM2MAPConfig apConfig;
- uint8 bEnableRedirect = 1;
-
- strcpy(apConfig.au8SSID, "WINC_SSID");
- apConfig.u8ListenChannel = 1;
- apConfig.u8SecType = M2M_WIFI_SEC_OPEN;
- apConfig.u8SsidHide = 0;
-
- // IP Address
- apConfig.au8DHCPServerIP[0] = 192;
- apConfig.au8DHCPServerIP[1] = 168;
- apConfig.au8DHCPServerIP[2] = 1;
- apConfig.au8DHCPServerIP[0] = 1;
-
- m2m_wifi_start_provision_mode(&apConfig, "atmelwincconf.com", bEnableRedirect);
-
- while(1)
- {
- m2m_wifi_handle_events(NULL);
- }
- }
- }
- @endcode
- */
- NMI_API sint8 m2m_wifi_start_provision_mode(tstrM2MAPConfig *pstrAPConfig, char *pcHttpServerDomainName, uint8 bEnableHttpRedirect);
-
- /*!
- @fn \
- sint8 m2m_wifi_stop_provision_mode(void);
-
- @brief
- Synchronous API for terminating provisioning mode on the WINC IC.
-
- @details
- This function will terminate any currently active provisioning mode on the WINC IC, returning the
- IC to idle.
-
- @return
- The function returns ZERO for success and a negative value otherwise.
-
- @pre
- An active provisioning session must be active before it is terminated through this function.
- @see
- m2m_wifi_start_provision_mode
- */
- NMI_API sint8 m2m_wifi_stop_provision_mode(void);
-
- /*!
- @fn \
- sint8 m2m_wifi_get_connection_info(void);
-
- @brief
- Asynchronous API for retrieving the WINC IC's connection status.
-
- @details
- Requests the connection status from the WINC IC including information regarding any access
- point to which it is currently connected, or any non-AP station that is connected to the WINC.
- All information will be returned to the application via the Wi-Fi notifiction callback and the
- event @ref M2M_WIFI_RESP_CONN_INFO.
-
- The connection info can be retrieved using the structure @ref tstrM2MConnInfo which contains:
- - Connection Security
- - Connection RSSI
- - Remote MAC address
- - Remote IP address
- - SSID of the network (in cases where the WINC is in non-AP mode)
-
- @return
- The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC,
- and a negative value otherwise.
-
- @pre
- - A Wi-Fi notification callback of type @ref tpfAppWifiCb MUST be implemented and registered at
- startup. Registering the callback is done through passing it to the initialization
- @ref m2m_wifi_init function.
- - The event @ref M2M_WIFI_RESP_CONN_INFO must be handled in the callback to receive the
- requested connection info.
-
- @warning
- - In case of WINC AP mode or P2P mode, the SSID field shall be a NULL string.
-
- @see
- M2M_WIFI_RESP_CONN_INFO,
- tstrM2MConnInfo
- \section WIFIExample2 Example
- The code snippet shows an example of how wi-fi connection information is retrieved .
- @code
- #include "m2m_wifi.h"
- #include "m2m_types.h"
-
- void wifi_event_cb(uint8 u8WiFiEvent, void * pvMsg)
- {
- switch(u8WiFiEvent)
- {
- case M2M_WIFI_RESP_CONN_INFO:
- {
- tstrM2MConnInfo *pstrConnInfo = (tstrM2MConnInfo*)pvMsg;
-
- printf("CONNECTED AP INFO\n");
- printf("SSID : %s\n",pstrConnInfo->acSSID);
- printf("SEC TYPE : %d\n",pstrConnInfo->u8SecType);
- printf("Signal Strength : %d\n", pstrConnInfo->s8RSSI);
- printf("Local IP Address : %d.%d.%d.%d\n",
- pstrConnInfo->au8IPAddr[0] , pstrConnInfo->au8IPAddr[1], pstrConnInfo->au8IPAddr[2], pstrConnInfo->au8IPAddr[3]);
- }
- break;
-
- case M2M_WIFI_REQ_DHCP_CONF:
- {
- // Get the current AP information.
- m2m_wifi_get_connection_info();
- }
- break;
- default:
- break;
- }
- }
-
- int main()
- {
- tstrWifiInitParam param;
-
- param.pfAppWifiCb = wifi_event_cb;
- if(!m2m_wifi_init(¶m))
- {
- // connect to the default AP
- m2m_wifi_default_connect();
-
- while(1)
- {
- m2m_wifi_handle_events(NULL);
- }
- }
- }
- @endcode
- */
- NMI_API sint8 m2m_wifi_get_connection_info(void);
-
- /*!
- @fn \
- NMI_API sint8 m2m_wifi_set_mac_address(uint8 au8MacAddress[6]);
-
- @brief
- Synchronous API for assigning a MAC address to the WINC IC.
-
- @details
- This function is intended to allow non-production software to assign a MAC address to the WINC IC.
-
- @param [in] au8MacAddress
- MAC Address to be provisioned to the WINC.
-
- @return
- The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC,
- and a negative value otherwise.
-
- @warning
- This function is intended for development use only and not for use in production software.
- */
- NMI_API sint8 m2m_wifi_set_mac_address(uint8 au8MacAddress[6]);
-
- /*!
- @fn \
- NMI_API sint8 m2m_wifi_wps(uint8 u8TriggerType,const char * pcPinNumber);
-
- @brief
- Asynchronous API to engage the WINC IC's Wi-Fi Protected Setup (enrolee) function.
-
- @details
- This function can be called to make the WINC enter WPS (Wi-Fi Protected Setup) mode. The result
- is passed to the Wi-Fi notification callback with the event @ref M2M_WIFI_REQ_WPS.
-
- @param [in] u8TriggerType
- WPS Trigger method. This may be:
- - [WPS_PIN_TRIGGER](@ref WPS_PIN_TRIGGER) Push button method
- - [WPS_PBC_TRIGGER](@ref WPS_PBC_TRIGGER) Pin method
-
- @param [in] pcPinNumber
- Valid only if the u8TriggerType is WPS_PIN_TRIGGER, this parameter contains the PIN number.
- The number must follow the format as given in the WSC1.0 specification.
-
- @return
- The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC,
- and a negative value otherwise.
-
- @warning
- This function is not supported in AP or P2P modes.
-
- @pre
- - A Wi-Fi notification callback of type (@ref tpfAppWifiCb MUST be implemented and registered at
- startup. Registering the callback is done through passing it to the
- [m2m_wifi_init](@ref m2m_wifi_init).
- - The event [M2M_WIFI_REQ_WPS](@ref M2M_WIFI_REQ_WPS) must be handled in the callback to receive
- the WPS status.
- - The WINC device MUST be in IDLE or STA mode. If AP or P2P mode is active, the WPS will not be
- performed.
- - The [m2m_wifi_handle_events](@ref m2m_wifi_handle_events) MUST be called to receive the responses
- in the callback.
-
- @see
- tpfAppWifiCb
- m2m_wifi_init
- M2M_WIFI_REQ_WPS
- tenuWPSTrigger
- tstrM2MWPSInfo
-
- \section WIFIExample3 Example
- The code snippet shows an example of how wifi WPS is triggered .
- @code
- #include "m2m_wifi.h"
- #include "m2m_types.h"
-
- void wifi_event_cb(uint8 u8WiFiEvent, void * pvMsg)
- {
- switch(u8WiFiEvent)
- {
- case M2M_WIFI_REQ_WPS:
- {
- tstrM2MWPSInfo *pstrWPS = (tstrM2MWPSInfo*)pvMsg;
- if(pstrWPS->u8AuthType != 0)
- {
- printf("WPS SSID : %s\n",pstrWPS->au8SSID);
- printf("WPS PSK : %s\n",pstrWPS->au8PSK);
- printf("WPS SSID Auth Type : %s\n",pstrWPS->u8AuthType == M2M_WIFI_SEC_OPEN ? "OPEN" : "WPA/WPA2");
- printf("WPS Channel : %d\n",pstrWPS->u8Ch + 1);
-
- // establish Wi-Fi connection
- m2m_wifi_connect((char*)pstrWPS->au8SSID, (uint8)m2m_strlen(pstrWPS->au8SSID),
- pstrWPS->u8AuthType, pstrWPS->au8PSK, pstrWPS->u8Ch);
- }
- else
- {
- printf("(ERR) WPS Is not enabled OR Timed out\n");
- }
- }
- break;
-
- default:
- break;
- }
- }
-
- int main()
- {
- tstrWifiInitParam param;
-
- param.pfAppWifiCb = wifi_event_cb;
- if(!m2m_wifi_init(¶m))
- {
- // Trigger WPS in Push button mode.
- m2m_wifi_wps(WPS_PBC_TRIGGER, NULL);
-
- while(1)
- {
- m2m_wifi_handle_events(NULL);
- }
- }
- }
- @endcode
- */
-
-
- NMI_API sint8 m2m_wifi_ble_set_gain_table(uint8 table_idx);
- /*!
- @fn \
- NMI_API sint8 m2m_wifi_ble_set_gain_table(uint8 table_idx);
-
- @brief
- Asynchronous API that notifies the WINC with the Gain Table index from Flash that should use to configure the WiFi and BLE gains.
-
- @return
- The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC,
- and a negative value otherwise.
- */
-
- NMI_API sint8 m2m_wifi_wps(uint8 u8TriggerType,const char *pcPinNumber);
-
- /*!
- @fn \
- NMI_API sint8 m2m_wifi_wps_disable(void);
-
- @brief
- Synchronous API that disables Wi-Fi Protected Setup mode in the WINC IC.
-
- @return
- The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC,
- and a negative value otherwise.
- */
- NMI_API sint8 m2m_wifi_wps_disable(void);
-
- /*!
- @fn \
- NMI_API sint8 m2m_wifi_p2p(uint8 u8Channel);
-
- @brief
- Asynchronous API for enabling Wi-Fi Direct (P2P) mode in the WINC IC.
-
- @param [in] u8Channel
- P2P Listen RF channel.
-
- @return
- The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC,
- and a negative value otherwise.
-
- @pre
- - A Wi-Fi notification callback of type @ref tpfAppWifiCb MUST be implemented and registered at
- initialization. Registering the callback
- is done through passing it to the @ref m2m_wifi_init.
- - The events @ref M2M_WIFI_RESP_CON_STATE_CHANGED and @ref M2M_WIFI_REQ_DHCP_CONF
- must be handled in the callback.
- - The @ref m2m_wifi_handle_events MUST be called to receive the responses in the callback.
-
- @warning
- - This function is not available in the WINC 3400
- - This function is not allowed in AP or STA modes.
-
- @see
- tpfAppWifiCb
- m2m_wifi_init
- M2M_WIFI_RESP_CON_STATE_CHANGED
- M2M_WIFI_REQ_DHCP_CONF
- tstrM2mWifiStateChanged
-
- \section WIFIExample4 Example
- The code snippet shows an example of how the p2p mode operates.
- @code
- #include "m2m_wifi.h"
- #include "m2m_types.h"
-
- void wifi_event_cb(uint8 u8WiFiEvent, void * pvMsg)
- {
- switch(u8WiFiEvent)
- {
- case M2M_WIFI_RESP_CON_STATE_CHANGED:
- {
- tstrM2mWifiStateChanged *pstrWifiState = (tstrM2mWifiStateChanged*)pvMsg;
- M2M_INFO("Wifi State :: %s :: ErrCode %d\n", pstrWifiState->u8CurrState? "CONNECTED":"DISCONNECTED",pstrWifiState->u8ErrCode);
-
- // Do something
- }
- break;
-
- case M2M_WIFI_REQ_DHCP_CONF:
- {
- uint8 *pu8IPAddress = (uint8*)pvMsg;
-
- printf("P2P IP Address \"%u.%u.%u.%u\"\n",pu8IPAddress[0],pu8IPAddress[1],pu8IPAddress[2],pu8IPAddress[3]);
- }
- break;
-
- default:
- break;
- }
- }
-
- int main()
- {
- tstrWifiInitParam param;
-
- param.pfAppWifiCb = wifi_event_cb;
- if(!m2m_wifi_init(¶m))
- {
- // Trigger P2P
- m2m_wifi_p2p(M2M_WIFI_CH_1);
-
- while(1)
- {
- m2m_wifi_handle_events(NULL);
- }
- }
- }
-
- @endcode
-
- */
- NMI_API sint8 m2m_wifi_p2p(uint8 u8Channel);
-
- /*!
- @fn \
- NMI_API sint8 m2m_wifi_p2p_disconnect(void);
-
- @brief
- Synchronous API to disable Wi-Fi Direct (P2P) Mode on the WINC IC.
-
- @return
- The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC,
- and a negative value otherwise.
-
- @see
- m2m_wifi_p2p
- */
- NMI_API sint8 m2m_wifi_p2p_disconnect(void);
-
- /*!
- @fn \
- NMI_API sint8 m2m_wifi_enable_ap(CONST tstrM2MAPConfig* pstrM2MAPConfig);
-
- @brief
- Asynchronous API to enable access point (AKA "hot-spot") mode on the WINC IC
-
- @details
- The WINC IC supports the ability to operate as an access point with the limitation that:
- - only 1 station may be associated at any one time
- - open system and WEP are the only security suites supported.
-
- @param [in] pstrM2MAPConfig
- A structure holding the AP configurations.
-
- @return
- The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC,
- and a negative value otherwise.
-
- @warning
- This function is not allowed in P2P or STA modes.
-
- @pre
- - A Wi-Fi notification callback of type @ref tpfAppWifiCb MUST be implemented and registered at initialization. Registering the callback
- is done through passing it to the [m2m_wifi_init](@ref m2m_wifi_init).
- - The event @ref M2M_WIFI_REQ_DHCP_CONF must be handled in the callback.
- - The @ref m2m_wifi_handle_events MUST be called to receive the responses in the callback.
-
- @see
- tpfAppWifiCb
- tenuM2mSecType
- m2m_wifi_init
- M2M_WIFI_REQ_DHCP_CONF
- tstrM2mWifiStateChanged
- tstrM2MAPConfig
-
- \section WIFIExample5 Example
- The code snippet demonstrates how the AP mode is enabled after the driver is initialized in the application's main function and the handling
- of the event @ref M2M_WIFI_REQ_DHCP_CONF, to indicate successful connection.
- @code
- #include "m2m_wifi.h"
- #include "m2m_types.h"
-
- void wifi_event_cb(uint8 u8WiFiEvent, void * pvMsg)
- {
- switch(u8WiFiEvent)
- {
- case M2M_WIFI_REQ_DHCP_CONF:
- {
- uint8 *pu8IPAddress = (uint8*)pvMsg;
-
- printf("Associated STA has IP Address \"%u.%u.%u.%u\"\n",pu8IPAddress[0],pu8IPAddress[1],pu8IPAddress[2],pu8IPAddress[3]);
- }
- break;
-
- default:
- break;
- }
- }
-
- int main()
- {
- tstrWifiInitParam param;
-
- param.pfAppWifiCb = wifi_event_cb;
- if(!m2m_wifi_init(¶m))
- {
- tstrM2MAPConfig apConfig;
-
- strcpy(apConfig.au8SSID, "WINC_SSID");
- apConfig.u8ListenChannel = 1;
- apConfig.u8SecType = M2M_WIFI_SEC_OPEN;
- apConfig.u8SsidHide = 0;
-
- // IP Address
- apConfig.au8DHCPServerIP[0] = 192;
- apConfig.au8DHCPServerIP[1] = 168;
- apConfig.au8DHCPServerIP[2] = 1;
- apConfig.au8DHCPServerIP[0] = 1;
-
- // Trigger AP
- m2m_wifi_enable_ap(&apConfig);
-
- while(1)
- {
- m2m_wifi_handle_events(NULL);
- }
- }
- }
-
- @endcode
-
- */
- NMI_API sint8 m2m_wifi_enable_ap(CONST tstrM2MAPConfig* pstrM2MAPConfig);
-
- /*!
- @fn \
- NMI_API sint8 m2m_wifi_disable_ap(void);
-
- @brief
- Synchronous API to disable access point mode on the WINC IC.
-
- @return
- The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC,
- and a negative value otherwise.
-
- @see
- m2m_wifi_enable_ap
- */
- NMI_API sint8 m2m_wifi_disable_ap(void);
-
- /*!
- @fn \
- NMI_API sint8 m2m_wifi_set_static_ip(tstrM2MIPConfig * pstrStaticIPConf);
-
- @brief
- Synchronous API to manually assign a (static) IP address to the WINC IC.
-
- @details
- Typically an infrastructure access point will be able to provide an IP address to all clients
- after they associate. The WINC will request configuration via DHCP automatically after
- successfully connecting to an access point. This function should only be called in the event
- that the network has no DHCP server and the application knows the specifics of the network.
-
- @param [in] pstrStaticIPConf
- Pointer to a structure holding the static IP Configurations (IP, Gateway, subnet mask and
- DNS address).
-
- @return
- The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC,
- and a negative value otherwise.
-
- @pre
- The application must first call @ref m2m_wifi_enable_dhcp to request that DHCP functionality is
- disabled prior to calling this function.
-
- @warning
- Exercise caution using this function. DHCP is the preferred method for configuring IP addresses.
-
- @see
- tstrM2MIPConfig
- */
- NMI_API sint8 m2m_wifi_set_static_ip(tstrM2MIPConfig * pstrStaticIPConf);
-
- /*!
- @fn \
- NMI_API sint8 m2m_wifi_request_dhcp_client(void);
-
- @brief
- Legacy (deprecated) Asynchronous API for starting a DHCP client on the WINC IC.
-
- @details
- This is a legacy API and is no longer supported. Calls to this API will not result in any
- changes being made to the state of the WINC IC.
-
- @return
- This function always returns @ref M2M_SUCCESS.
-
- @warning
- - This function has been deprecated. DHCP is used automatically when the WINC IC connects.
- */
- NMI_API sint8 m2m_wifi_request_dhcp_client(void);
-
- /*!
- @fn \
- NMI_API sint8 m2m_wifi_request_dhcp_server(uint8* addr);
-
- @brief
- Legacy (deprecated) Asynchronous function to start a DHCP client on the WINC IC.
-
- @details
- This is a legacy API and is no longer supported. Calls to this API will not result in any
- changes being made to the state of the WINC IC.
-
- @param [in] addr The address to issue to a connected client (only one client is supported)
-
- @return
- This function always returns @ref M2M_SUCCESS.
-
- @warning
- - This function has been deprecated. DHCP is used automatically when the WINC IC connects.
- */
- NMI_API sint8 m2m_wifi_request_dhcp_server(uint8* addr);
-
- /*!
- @fn \
- NMI_API sint8 m2m_wifi_enable_dhcp(uint8 u8DhcpEn );
-
- @brief
- Asynchronous function to control the DHCP client functionality within the WINC IC.
-
- @details
- This function allows the application to control the behaviour of the DHCP client function within
- the WINC IC once it has associated with an access point. DHCP client functionality is enabled by
- default.
-
- @param [in] u8DhcpEn
- The state of the DHCP client feature after successful association with an access point:
- - 0: DHCP client will be disabled after connection.
- - 1: DHCP client will be enabled after connection.
-
- @return
- The function SHALL return 0 for success and a negative value otherwise.
-
- @warning
- - DHCP client is enabled by default
- - This Function should be called to disable DHCP client operation before using @ref m2m_wifi_set_static_ip
-
- @see
- m2m_wifi_set_static_ip()
- */
- NMI_API sint8 m2m_wifi_enable_dhcp(uint8 u8DhcpEn );
-
-
- /*!
- @fn \
- sint8 m2m_wifi_set_scan_options(tstrM2MScanOption* ptstrM2MScanOption)
-
- @brief
- Synchronous API for configuring the behaviour of the WINC IC's network scanning functions.
-
- @details
- This function allows the application to tune the scanning behaviour of the WINC IC using the
- parameters described in @ref tstrM2MScanOption.
-
- @param [in] ptstrM2MScanOption;
- Pointer to the structure holding the Scan Parameters.
-
- @return
- The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC,
- and a negative value otherwise.
-
- @see
- tenuM2mScanCh
- m2m_wifi_request_scan
- tstrM2MScanOption
- */
- NMI_API sint8 m2m_wifi_set_scan_options(tstrM2MScanOption* ptstrM2MScanOption);
-
- /*!
- @fn \
- sint8 m2m_wifi_set_scan_region(uint16 ScanRegion)
-
- @brief
- Synchronous API for configuring the regulatory restrictions that may affect the WINC ICs
- scanning behaviour.
-
- @details
- This function sets a property called the scan region, a parameter that affects the range of
- channels that the WINC IC may legally scan given a geographic region.
-
- @param [in] ScanRegion
-
- @return
- The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC,
- and a negative value otherwise.
-
- @see
- tenuM2mScanRegion
- m2m_wifi_request_scan
-
- */
- NMI_API sint8 m2m_wifi_set_scan_region(uint16 ScanRegion);
-
- /*!
- @fn \
- NMI_API sint8 m2m_wifi_request_scan(uint8 ch);
-
- @brief
- Asynchronous API to request the WINC IC perform a scan for networks.
-
- @details
- Scan statuses are delivered to the application via the Wi-Fi event callback (@ref tpfAppWifiCb) in
- three stages. The first step involves the event @ref M2M_WIFI_RESP_SCAN_DONE which, if successful,
- provides the number of detected networks (access points). The application must then read the list
- of access points via multiple calls to the asynchronous @ref m2m_wifi_req_scan_result API. For
- each call to this function, the application will receive (step three) the event
- @ref M2M_WIFI_RESP_SCAN_RESULT.
-
- @param [in] ch
- RF Channel ID for SCAN operation. It should be set according to tenuM2mScanCh, with a
- value of @ref M2M_WIFI_CH_ALL to scan all channels.
-
- @return
- The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC,
- and a negative value otherwise.
-
- @warning
- This API is valid only for STA mode, it may be called regardless of connection state (connected
- or disconnected).
-
- @pre
- - A Wi-Fi notification callback of type @ref tpfAppWifiCb MUST be implemented and registered at
- initialization. Registration of the callback is done via @ref m2m_wifi_init.
- - The events @ref M2M_WIFI_RESP_SCAN_DONE and @ref M2M_WIFI_RESP_SCAN_RESULT must be handled in
- the (tpfAppWifiCb) callback.
- - The @ref m2m_wifi_handle_events function must be called to receive the responses in the
- callback.
-
- @see M2M_WIFI_RESP_SCAN_DONE
- @see M2M_WIFI_RESP_SCAN_RESULT
- @see tpfAppWifiCb
- @see tstrM2mWifiscanResult
- @see tenuM2mScanCh
- @see m2m_wifi_init
- @see m2m_wifi_handle_events
- @see m2m_wifi_req_scan_result
-
- \section WIFIExample6 Example
- The code snippet demonstrates an example of how the scan request is called from the application's main function and the handling of
- the events received in response.
- @code
-
- #include "m2m_wifi.h"
- #include "m2m_types.h"
-
- void wifi_event_cb(uint8 u8WiFiEvent, void * pvMsg)
- {
- static uint8 u8ScanResultIdx = 0;
-
- switch(u8WiFiEvent)
- {
- case M2M_WIFI_RESP_SCAN_DONE:
- {
- tstrM2mScanDone *pstrInfo = (tstrM2mScanDone*)pvMsg;
-
- printf("Num of AP found %d\n",pstrInfo->u8NumofCh);
- if(pstrInfo->s8ScanState == M2M_SUCCESS)
- {
- u8ScanResultIdx = 0;
- if(pstrInfo->u8NumofCh >= 1)
- {
- m2m_wifi_req_scan_result(u8ScanResultIdx);
- u8ScanResultIdx ++;
- }
- else
- {
- printf("No AP Found Rescan\n");
- m2m_wifi_request_scan(M2M_WIFI_CH_ALL);
- }
- }
- else
- {
- printf("(ERR) Scan fail with error <%d>\n",pstrInfo->s8ScanState);
- }
- }
- break;
-
- case M2M_WIFI_RESP_SCAN_RESULT:
- {
- tstrM2mWifiscanResult *pstrScanResult =(tstrM2mWifiscanResult*)pvMsg;
- uint8 u8NumFoundAPs = m2m_wifi_get_num_ap_found();
-
- printf(">>%02d RI %d SEC %s CH %02d BSSID %02X:%02X:%02X:%02X:%02X:%02X SSID %s\n",
- pstrScanResult->u8index,pstrScanResult->s8rssi,
- pstrScanResult->u8AuthType,
- pstrScanResult->u8ch,
- pstrScanResult->au8BSSID[0], pstrScanResult->au8BSSID[1], pstrScanResult->au8BSSID[2],
- pstrScanResult->au8BSSID[3], pstrScanResult->au8BSSID[4], pstrScanResult->au8BSSID[5],
- pstrScanResult->au8SSID);
-
- if(u8ScanResultIdx < u8NumFoundAPs)
- {
- // Read the next scan result
- m2m_wifi_req_scan_result(index);
- u8ScanResultIdx ++;
- }
- }
- break;
- default:
- break;
- }
- }
-
- int main()
- {
- tstrWifiInitParam param;
-
- param.pfAppWifiCb = wifi_event_cb;
- if(!m2m_wifi_init(¶m))
- {
- // Scan all channels
- m2m_wifi_request_scan(M2M_WIFI_CH_ALL);
-
- while(1)
- {
- m2m_wifi_handle_events(NULL);
- }
- }
- }
-
- @endcode
- */
- NMI_API sint8 m2m_wifi_request_scan(uint8 ch);
-
- /*!
- @fn \
- sint8 m2m_wifi_request_scan_passive(uint8 ch);
-
- @param [in] ch
- RF Channel ID for SCAN operation. It should be set according to tenuM2mScanCh, with a
- value of @ref M2M_WIFI_CH_ALL to scan all channels.
-
- @warning
- This function is not allowed in P2P or AP modes. It works only for STA mode (both connected or disconnected states).
-
- @pre
- - A Wi-Fi notification callback of type @ref tpfAppWifiCb MUST be implemented and registered at initialization. Registering the callback
- is done through passing it to the @ref m2m_wifi_init.
- - The events @ref M2M_WIFI_RESP_SCAN_DONE and @ref M2M_WIFI_RESP_SCAN_RESULT.
- must be handled in the callback.
- - The @ref m2m_wifi_handle_events function MUST be called to receive the responses in the callback.
-
- @see m2m_wifi_request_scan
- @see M2M_WIFI_RESP_SCAN_DONE
- @see M2M_WIFI_RESP_SCAN_RESULT
- @see tpfAppWifiCb
- @see tstrM2MScanOption
- @see tstrM2mWifiscanResult
- @see tenuM2mScanCh
- @see m2m_wifi_init
- @see m2m_wifi_handle_events
- @see m2m_wifi_req_scan_result
-
- @return
- The function returns @ref M2M_SUCCESS for successful operations and a negative value otherwise.
- */
- sint8 m2m_wifi_request_scan_passive(uint8 ch);
-
- /*!
- @fn NMI_API uint8 m2m_wifi_get_num_ap_found(void);
-
- @brief
- Synchronous API to retrieve the number of AP's found during the last scan operation.
-
- @details
- This function allows the application to recover the number of access points discovered during
- the most recent scan activity. This is achieved via a global variable in the WINC driver that
- is populated when receiving the M2M_WIFI_RESP_SCAN_DONE event.
-
- @return
- Return the number of AP's found in the last Scan Request.
-
- @see
- m2m_wifi_request_scan
- M2M_WIFI_RESP_SCAN_DONE
- M2M_WIFI_RESP_SCAN_RESULT
-
- @pre
- - m2m_wifi_request_scan must be called first to ensure up to date results are available.
-
- @warning
- - This function must be called only in the wi-fi callback function when the events
- @ref M2M_WIFI_RESP_SCAN_DONE or @ref M2M_WIFI_RESP_SCAN_RESULT are received. Calling this
- function in any other place may result in undefined/outdated numbers.
-
- \section WIFIExample7 Example
- The code snippet demonstrates an example of how the scan request is called from the application's main function and the handling of
- the events received in response.
- @code
- #include "m2m_wifi.h"
- #include "m2m_types.h"
-
- void wifi_event_cb(uint8 u8WiFiEvent, void * pvMsg)
- {
- static uint8 u8ScanResultIdx = 0;
-
- switch(u8WiFiEvent)
- {
- case M2M_WIFI_RESP_SCAN_DONE:
- {
- tstrM2mScanDone *pstrInfo = (tstrM2mScanDone*)pvMsg;
-
- printf("Num of AP found %d\n",pstrInfo->u8NumofCh);
- if(pstrInfo->s8ScanState == M2M_SUCCESS)
- {
- u8ScanResultIdx = 0;
- if(pstrInfo->u8NumofCh >= 1)
- {
- m2m_wifi_req_scan_result(u8ScanResultIdx);
- u8ScanResultIdx ++;
- }
- else
- {
- printf("No AP Found Rescan\n");
- m2m_wifi_request_scan(M2M_WIFI_CH_ALL);
- }
- }
- else
- {
- printf("(ERR) Scan fail with error <%d>\n",pstrInfo->s8ScanState);
- }
- }
- break;
-
- case M2M_WIFI_RESP_SCAN_RESULT:
- {
- tstrM2mWifiscanResult *pstrScanResult =(tstrM2mWifiscanResult*)pvMsg;
- uint8 u8NumFoundAPs = m2m_wifi_get_num_ap_found();
-
- printf(">>%02d RI %d SEC %s CH %02d BSSID %02X:%02X:%02X:%02X:%02X:%02X SSID %s\n",
- pstrScanResult->u8index,pstrScanResult->s8rssi,
- pstrScanResult->u8AuthType,
- pstrScanResult->u8ch,
- pstrScanResult->au8BSSID[0], pstrScanResult->au8BSSID[1], pstrScanResult->au8BSSID[2],
- pstrScanResult->au8BSSID[3], pstrScanResult->au8BSSID[4], pstrScanResult->au8BSSID[5],
- pstrScanResult->au8SSID);
-
- if(u8ScanResultIdx < u8NumFoundAPs)
- {
- // Read the next scan result
- m2m_wifi_req_scan_result(index);
- u8ScanResultIdx ++;
- }
- }
- break;
- default:
- break;
- }
- }
-
- int main()
- {
- tstrWifiInitParam param;
-
- param.pfAppWifiCb = wifi_event_cb;
- if(!m2m_wifi_init(¶m))
- {
- // Scan all channels
- m2m_wifi_request_scan(M2M_WIFI_CH_ALL);
-
- while(1)
- {
- m2m_wifi_handle_events(NULL);
- }
- }
- }
- @endcode
- */
- NMI_API uint8 m2m_wifi_get_num_ap_found(void);
-
- /*!
- @fn NMI_API sint8 m2m_wifi_req_scan_result(uint8 index);
-
- @brief
- Asynchronous API to request the information of an access point discovered via scanning.
-
- @details
- This function allows the information of any discovered access point to be retrieved. When a
- scan is completed, the application is informed of the number of networks (access points)
- discovered. Calling this function with an index, N, will return the information for the Nth
- access point. The information will be returned to the application via a
- @ref M2M_WIFI_RESP_SCAN_RESULT event, and the response data may be obtained through casting
- the pointer (pvMsg) to @ref tstrM2mWifiscanResult.
-
- @param [in] index
- Index for the requested result, the index range start from 0 till number of AP's found
-
- @return
- The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC,
- and a negative value otherwise.
-
- @see
- tstrM2mWifiscanResult
- m2m_wifi_get_num_ap_found
- m2m_wifi_request_scan
-
- @pre
- - @ref m2m_wifi_request_scan must be called first to ensure up to date results are available.
- - A Wi-Fi notification callback of type @ref tpfAppWifiCb must be implemented and registered
- in order to receive scan data after calling this function. Registration of the callback
- is done via the @ref m2m_wifi_init function.
- - The event @ref M2M_WIFI_RESP_SCAN_RESULT must be handled in the callback to receive the
- requested connection information.
-
- @warning
- - This API is valid only for STA mode, it may be called regardless of connection state (connected
- or disconnected).
- - Calling this function without first issuing a scan request may lead to stale data being
- recovered.
- - Application code should refrain from introducing significant delays between issuing the scan
- request and scan result requests.
-
- \section WIFIExample8 Example
- The code snippet demonstrates an example of how the scan request is called from the application's main function and the handling of
- the events received in response.
- @code
- #include "m2m_wifi.h"
- #include "m2m_types.h"
-
- void wifi_event_cb(uint8 u8WiFiEvent, void * pvMsg)
- {
- static uint8 u8ScanResultIdx = 0;
-
- switch(u8WiFiEvent)
- {
- case M2M_WIFI_RESP_SCAN_DONE:
- {
- tstrM2mScanDone *pstrInfo = (tstrM2mScanDone*)pvMsg;
-
- printf("Num of AP found %d\n",pstrInfo->u8NumofCh);
- if(pstrInfo->s8ScanState == M2M_SUCCESS)
- {
- u8ScanResultIdx = 0;
- if(pstrInfo->u8NumofCh >= 1)
- {
- m2m_wifi_req_scan_result(u8ScanResultIdx);
- u8ScanResultIdx ++;
- }
- else
- {
- printf("No AP Found Rescan\n");
- m2m_wifi_request_scan(M2M_WIFI_CH_ALL);
- }
- }
- else
- {
- printf("(ERR) Scan fail with error <%d>\n",pstrInfo->s8ScanState);
- }
- }
- break;
-
- case M2M_WIFI_RESP_SCAN_RESULT:
- {
- tstrM2mWifiscanResult *pstrScanResult =(tstrM2mWifiscanResult*)pvMsg;
- uint8 u8NumFoundAPs = m2m_wifi_get_num_ap_found();
-
- printf(">>%02d RI %d SEC %s CH %02d BSSID %02X:%02X:%02X:%02X:%02X:%02X SSID %s\n",
- pstrScanResult->u8index,pstrScanResult->s8rssi,
- pstrScanResult->u8AuthType,
- pstrScanResult->u8ch,
- pstrScanResult->au8BSSID[0], pstrScanResult->au8BSSID[1], pstrScanResult->au8BSSID[2],
- pstrScanResult->au8BSSID[3], pstrScanResult->au8BSSID[4], pstrScanResult->au8BSSID[5],
- pstrScanResult->au8SSID);
-
- if(u8ScanResultIdx < u8NumFoundAPs)
- {
- // Read the next scan result
- m2m_wifi_req_scan_result(index);
- u8ScanResultIdx ++;
- }
- }
- break;
- default:
- break;
- }
- }
-
- int main()
- {
- tstrWifiInitParam param;
-
- param.pfAppWifiCb = wifi_event_cb;
- if(!m2m_wifi_init(¶m))
- {
- // Scan all channels
- m2m_wifi_request_scan(M2M_WIFI_CH_ALL);
-
- while(1)
- {
- m2m_wifi_handle_events(NULL);
- }
- }
- }
-
- @endcode
- */
- NMI_API sint8 m2m_wifi_req_scan_result(uint8 index);
-
- /*!
- @fn NMI_API sint8 m2m_wifi_req_curr_rssi(void);
-
- @brief
- Asynchronous API to request the current Receive Signal Strength (RSSI) of the current connection.
-
- @details
- This function will result in the application receiving the RSSI via a
- @ref M2M_WIFI_RESP_CURRENT_RSSI event.
-
- @return
- The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC,
- and a negative value otherwise.
-
- @pre
- - A Wi-Fi notification callback of type @ref tpfAppWifiCb MUST be implemented and registered
- during initialization. Registration of the callback is done via the
- [m2m_wifi_init](@ref m2m_wifi_init) API.
- - The event @ref M2M_WIFI_RESP_CURRENT_RSSI must be handled in the callback.
-
- \section WIFIExample9 Example
- The code snippet demonstrates how the RSSI request is called in the application's main function and the handling of event received in the callback.
- @code
- #include "m2m_wifi.h"
- #include "m2m_types.h"
-
- void wifi_event_cb(uint8 u8WiFiEvent, void * pvMsg)
- {
- static uint8 u8ScanResultIdx = 0;
-
- switch(u8WiFiEvent)
- {
- case M2M_WIFI_RESP_CURRENT_RSSI:
- {
- sint8 *rssi = (sint8*)pvMsg;
- M2M_INFO("ch rssi %d\n",*rssi);
- }
- break;
- default:
- break;
- }
- }
-
- int main()
- {
- tstrWifiInitParam param;
-
- param.pfAppWifiCb = wifi_event_cb;
- if(!m2m_wifi_init(¶m))
- {
- // Scan all channels
- m2m_wifi_req_curr_rssi();
-
- while(1)
- {
- m2m_wifi_handle_events(NULL);
- }
- }
- }
-
- @endcode
- */
- NMI_API sint8 m2m_wifi_req_curr_rssi(void);
-
- /*!
- @fn NMI_API sint8 m2m_wifi_req_restrict_ble(void);
-
- @brief
- Asynchronous API to request restricting of BLE functionality by placing the BLE processor in a low power state.
- It is recommended to do this if it is know that BLE functionality will not be used for any significant length of time.
-
- @return
- The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC,
- and a negative value otherwise.
-
- @pre
- - A Wi-Fi notification callback of type @ref tpfAppWifiCb MUST be implemented and registered
- during initialization. Registration of the callback is done via the
- [m2m_wifi_init](@ref m2m_wifi_init) API.
-
- */
- NMI_API sint8 m2m_wifi_req_restrict_ble(void);
-
- /*!
- @fn NMI_API sint8 m2m_wifi_req_unrestrict_ble(void);
-
- @brief
- Asynchronous API to request un-restricting of BLE functionality by reverting the BLE processor to full power mode.
-
- @return
- The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC,
- and a negative value otherwise.
-
- @pre
- - A Wi-Fi notification callback of type @ref tpfAppWifiCb MUST be implemented and registered
- during initialization. Registration of the callback is done via the
- [m2m_wifi_init](@ref m2m_wifi_init) API.
-
- */
- NMI_API sint8 m2m_wifi_req_unrestrict_ble(void);
-
- /*!
- @fn NMI_API sint8 m2m_wifi_get_otp_mac_address(uint8 *pu8MacAddr, uint8 * pu8IsValid);
-
- @brief
- Synchronous API to query the MAC address programmed into the WINC ICs OTP memory
-
- @details
- This function attempts to read the device's MAC address from the One Time Programmable (OTP)
- memory on the IC. The presence (yes or no) of a MAC address in the OTP memory and, in the case
- of it being present, its value are returned via RAM pointed to by the input arguments.
-
- @param [out] pu8MacAddr
- Output MAC address buffer 6 bytes in size. This is valid only if *pu8Valid equals 1.
-
- @param [out] pu8IsValid
- A boolean value set by the callee to indicate the validity of pu8MacAddr in OTP. If no MAC has
- been programmed in the OTP the value of this parameter will be zero; otherwise it will be
- non-zero.
-
- @return
- The function returns @ref M2M_SUCCESS for success and a negative value otherwise.
-
- @see
- m2m_wifi_get_mac_address
-
- */
- NMI_API sint8 m2m_wifi_get_otp_mac_address(uint8 *pu8MacAddr, uint8 * pu8IsValid);
-
- /*!
- @fn NMI_API sint8 m2m_wifi_get_mac_address(uint8 *pu8MacAddr)
-
- @brief
- Synchronous API to retrieve the MAC address currently in use on the device.
-
- @details
- This function obtains the MAC address that is currently in use by the device. If the function
- returns with @ref M2M_SUCCESS then the content of the memory referenced by pu8MacAddr will be
- populated with the 6 byte MAC address; otherwise, that memory will be left unchanged.
-
- @param [out] pu8MacAddr
- Pointer to a buffer in memory containing a 6-byte MAC address (provided function returns
- MEM_SUCCESS)
-
- @return
- The function returns @ref M2M_SUCCESS for successful operation and a negative value otherwise.
-
- @see
- m2m_wifi_get_otp_mac_address
- */
- NMI_API sint8 m2m_wifi_get_mac_address(uint8 *pu8MacAddr);
-
- /*!
- @fn NMI_API sint8 m2m_wifi_set_sleep_mode(uint8 PsTyp, uint8 BcastEn);
-
- @brief
- Synchronous API to set the power-save mode of the WINC IC.
-
- @param [in] PsTyp
- Desired power saving mode. Supported types are defined in @ref tenuPowerSaveModes.
-
- @param [in] BcastEn
- Broadcast reception enable flag.
- - If set to 1, the WINC IC will wake for each DTIM beacon to ensure broadcast traffic can be
- received.
- - If set to 0, the WINC IC will not wakeup at the DTIM beacon, instead it will wake every N
- beacon periods as per the negotiated Listen Interval.
-
- @return
- The function returns @ref M2M_SUCCESS for successful operation and a negative value otherwise.
-
- @see
- tenuPowerSaveModes
- m2m_wifi_get_sleep_mode
- */
- NMI_API sint8 m2m_wifi_set_sleep_mode(uint8 PsTyp, uint8 BcastEn);
-
- /*!
- @fn NMI_API sint8 m2m_wifi_request_sleep(uint32 u32SlpReqTime);
-
- @brief
- Asynchronous API to place the WINC IC into sleep mode for a specified period of time.
-
- @details
- This function allows a WINC IC that is running in M2M_PS_MANUAL mode to be placed into sleep
- state for a specified period of time (measured in milliseconds).
-
- @param [in] u32SlpReqTime
- The time in ms that the WINC IC should sleep for
-
- @return
- The function returns @ref M2M_SUCCESS for successful operation and a negative value otherwise.
-
- @warning
- - This API is currently unsupported on the WINC3400
-
- @see
- tenuPowerSaveModes
- m2m_wifi_set_sleep_mode
- */
- NMI_API sint8 m2m_wifi_request_sleep(uint32 u32SlpReqTime);
-
- /*!
- @fn NMI_API uint8 m2m_wifi_get_sleep_mode(void);
-
- @brief
- Synchronous API to retrieve the current power save mode of the WINC IC.
-
- @return
- The current operating power saving mode. The value will be one of those from the enumerated type
- @ref tenuPowerSaveModes.
-
- @see
- tenuPowerSaveModes
- m2m_wifi_set_sleep_mode
- */
- NMI_API uint8 m2m_wifi_get_sleep_mode(void);
-
- #if 0
- /*
- * These two functions are for a mode in which two WINC ICs communicate with each other
- * via probe request and probe response frames. This mode is not supported in WINC fw.
- */
- NMI_API sint8 m2m_wifi_req_client_ctrl(uint8 cmd);
- NMI_API sint8 m2m_wifi_req_server_init(uint8 ch);
- #endif
-
- /*!
- @fn NMI_API sint8 m2m_wifi_set_device_name(uint8 *pu8DeviceName, uint8 u8DeviceNameLength);
-
- @brief
- Asynchronous API to set the Wi-Fi Direct "Device Name" of the WINC IC
-
- @param [in] pu8DeviceName
- Buffer holding the device name.
-
- @param [in] u8DeviceNameLength
- Length of the device name. Should not exceed the maximum device name's length M2M_DEVICE_NAME_MAX.
-
- @return
- The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC,
- and a negative value otherwise.
- */
- NMI_API sint8 m2m_wifi_set_device_name(uint8 *pu8DeviceName, uint8 u8DeviceNameLength);
-
- /*!
- @fn NMI_API sint8 m2m_wifi_set_lsn_int(tstrM2mLsnInt * pstrM2mLsnInt);
-
- @brief
- Asynchronous API to set Wi-Fi listen interval for power save operation.
-
- @param [in] pstrM2mLsnInt
- Structure holding the listen interval configurations.
-
- @return
- The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC,
- and a negative value otherwise.
-
- @pre
- The function @ref m2m_wifi_set_sleep_mode shall be called first
-
- @see
- - tstrM2mLsnInt
- - m2m_wifi_set_sleep_mode
- */
- NMI_API sint8 m2m_wifi_set_lsn_int(tstrM2mLsnInt *pstrM2mLsnInt);
-
- /*!
- @fn NMI_API sint8 m2m_wifi_enable_monitoring_mode(tstrM2MWifiMonitorModeCtrl *, uint8 *, uint16 , uint16);
-
- @brief
- Asynchronous call to enable Wi-Fi monitoring (promiscuous receive) mode.
-
- @details
- This function places the reciver into a mode where all frames (or those matching a set of filter
- criteria) received on air are passed to the application.
-
- A dedicated callback function, @ref tpfAppMonCb, must be registered to handle frames received in
- promiscuous mode. This is done via an instance of a @ref tstrWifiInitParam structure and a call to
- the @ref m2m_wifi_init function.
-
- @param [in] pstrMtrCtrl
- Pointer to @ref tstrM2MWifiMonitorModeCtrl structure holding the Filtering parameters.
-
- @param [in] pu8PayloadBuffer
- Pointer to a Buffer allocated by the application. The buffer SHALL hold the Data field of
- the WIFI RX Packet (Or a part from it). If it is set to NULL, the WIFI data payload will
- be discarded by the monitoring driver.
-
- @param [in] u16BufferSize
- The total size of the pu8PayloadBuffer in bytes.
-
- @param [in] u16DataOffset
- Starting offset in the DATA FIELD of the received WIFI packet. The application may be interested
- in reading specific information from the received packet. It must assign the offset to the starting
- position of it relative to the DATA payload start.\n
- \e Example, \e if \e the \e SSID \e is \e needed \e to \e be \e read \e from \e a \e PROBE \e REQ
- \e packet, \e the \e u16Offset \e MUST \e be \e set \e to \e 0.
-
- @return
- The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC,
- and a negative value otherwise.
-
- @warning
- This mode available as sniffer ONLY, you can not be connected in any modes (Station, Access Point,
- or P2P).
-
- @see
- - tstrM2MWifiMonitorModeCtrl
- - tstrM2MWifiRxPacketInfo
- - tstrWifiInitParam
- - tenuM2mScanCh
- - m2m_wifi_disable_monitoring_mode
-
- \section WIFIExample10 Example
- The example demonstrates the main function where-by the monitoring enable function is called after
- the initialization of the driver and the packets are handled in the callback function.
-
- @code
- #include "m2m_wifi.h"
- #include "m2m_types.h"
-
- //Declare receive buffer
- uint8 gmgmt[1600];
-
- //Callback functions
- void wifi_cb(uint8 u8WiFiEvent, void * pvMsg)
- {
- ;
- }
-
- void wifi_monitoring_cb(tstrM2MWifiRxPacketInfo *pstrWifiRxPacket, uint8 *pu8Payload, uint16 u16PayloadSize)
- {
- if((NULL != pstrWifiRxPacket) && (0 != u16PayloadSize)) {
- if(MANAGEMENT == pstrWifiRxPacket->u8FrameType) {
- M2M_INFO("***# MGMT PACKET #***\n");
- } else if(DATA_BASICTYPE == pstrWifiRxPacket->u8FrameType) {
- M2M_INFO("***# DATA PACKET #***\n");
- } else if(CONTROL == pstrWifiRxPacket->u8FrameType) {
- M2M_INFO("***# CONTROL PACKET #***\n");
- }
- }
- }
-
- int main()
- {
- //Register wifi_monitoring_cb
- tstrWifiInitParam param;
- param.pfAppWifiCb = wifi_cb;
- param.pfAppMonCb = wifi_monitoring_cb;
-
- nm_bsp_init();
-
- if(!m2m_wifi_init(¶m)) {
- //Enable Monitor Mode with filter to receive all data frames on channel 1
- tstrM2MWifiMonitorModeCtrl strMonitorCtrl = {0};
- strMonitorCtrl.u8ChannelID = M2M_WIFI_CH_1;
- strMonitorCtrl.u8FrameType = DATA_BASICTYPE;
- strMonitorCtrl.u8FrameSubtype = M2M_WIFI_FRAME_SUB_TYPE_ANY; //Receive any subtype of data frame
- m2m_wifi_enable_monitoring_mode(&strMonitorCtrl, gmgmt, sizeof(gmgmt), 0);
-
- while(1) {
- m2m_wifi_handle_events(NULL);
- }
- }
- return 0;
- }
- @endcode
- */
- NMI_API sint8 m2m_wifi_enable_monitoring_mode(tstrM2MWifiMonitorModeCtrl *pstrMtrCtrl, uint8 *pu8PayloadBuffer,
- uint16 u16BufferSize, uint16 u16DataOffset);
-
- /*!
- @fn NMI_API sint8 m2m_wifi_disable_monitoring_mode(void);
-
- @brief
- Asynchronous API to disable Wi-Fi monitoring (promiscuous receive) mode.
-
- @return
- The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC,
- and a negative value otherwise.
-
- @see
- m2m_wifi_enable_monitoring_mode
- */
- NMI_API sint8 m2m_wifi_disable_monitoring_mode(void);
-
- /*!
- @fn NMI_API sint8 m2m_wifi_send_wlan_pkt(uint8 *, uint16, uint16);
-
- @brief
- Asynchronous API to queue a raw Wi-Fi packet for transmission by the WINC IC.
-
- @param [in] pu8WlanPacket
- Pointer to a buffer holding the whole WIFI frame.
-
- @param [in] u16WlanHeaderLength
- The size of the WIFI packet header ONLY.
-
- @param [in] u16WlanPktSize
- The size of the whole bytes in packet.
-
- @return
- The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC,
- and a negative value otherwise.
-
- @see
- - m2m_wifi_enable_monitoring_mode
- - m2m_wifi_disable_monitoring_mode
-
- @warning
- This function is only available in builds supporting monitoring mode.
- */
- NMI_API sint8 m2m_wifi_send_wlan_pkt(uint8 *pu8WlanPacket, uint16 u16WlanHeaderLength, uint16 u16WlanPktSize);
-
- /*!
- @fn NMI_API sint8 m2m_wifi_send_ethernet_pkt(uint8* pu8Packet,uint16 u16PacketSize)
-
- @brief
- Asynchronous API to queue an Ethernet packet for transmission by the WINC IC.
-
- @param [in] pu8Packet
- Pointer to a buffer holding the whole Ethernet frame.
-
- @param [in] u16PacketSize
- The size of the whole bytes in packet.
-
- @return
- The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC,
- and a negative value otherwise.
-
- @see
- - m2m_wifi_enable_monitoring_mode
- - m2m_wifi_disable_monitoring_mode
-
- @warning
- This function is only available in builds supporting monitoring mode.
- */
- NMI_API sint8 m2m_wifi_send_ethernet_pkt(uint8* pu8Packet,uint16 u16PacketSize);
-
- /*!
- @fn NMI_API sint8 m2m_wifi_enable_sntp(uint8);
-
- @brief
- Asynchronous API to enable or disable the SNTP client running on the WINC IC.
-
- @details
- The SNTP client is enabled by default during chip initialisation. This function can be used to
- disable or subsequently re-enable the service.
-
- The service is capable of syncrhonising the WINC's system clock to the UTC time from a well-known
- (and trusted) time server, for example "time.nist.gov". By default the SNTP client will update the
- system time once every 24 hours. The ability to track the time accurately is important for various
- applications such as checking expiry of X509 certificates during TLS session establishment.
-
- It is highly recommended to leave SNTP enabled if there is no alternative source of timing
- information. For systems including an RTC device, SNTP may not be needed and the WINC IC's time
- may be set using the @ref m2m_wifi_set_sytem_time function.
-
- @param [in] bEnable
- Enables or disables the SNTP service
- - '0' : disable SNTP
- - '1' : enable SNTP
-
- @return
- The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC,
- and a negative value otherwise.
-
- @see m2m_wifi_set_sytem_time
- */
- NMI_API sint8 m2m_wifi_enable_sntp(uint8 bEnable);
-
- /*!
- @fn NMI_API sint8 m2m_wifi_set_sytem_time(uint32);
-
- @brief
- Asynchronous function for setting the system time within the WINC IC.
-
- @param [in] u32UTCSeconds
- UTC value in seconds.
-
- @return
- The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC,
- and a negative value otherwise.
-
- @see
- - m2m_wifi_enable_sntp
- - tstrSystemTime
-
- @note
- If there is an RTC on the host MCU, the SNTP may be disabled and the host may set the system
- time within the firmware using the API @ref m2m_wifi_set_sytem_time.
- */
- NMI_API sint8 m2m_wifi_set_sytem_time(uint32 u32UTCSeconds);
-
- /*!
- @fn NMI_API sint8 m2m_wifi_get_sytem_time(void);
-
- @brief
- Asynchronous API to obtain the system time in use by the WINC IC.
-
- @details
- This function will request that the WINC IC send it's current system time to the application. The
- information will arrive at the application via the @ref tpfAppWifiCb and event @ref
- M2M_WIFI_RESP_GET_SYS_TIME.
-
- @return
- The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC,
- and a negative value otherwise.
-
- @pre
- - A Wi-Fi notification callback of type @ref tpfAppWifiCb MUST be implemented and registered
- during initialization. Registration of the callback is done via the
- [m2m_wifi_init](@ref m2m_wifi_init) API.
- - The event @ref M2M_WIFI_RESP_GET_SYS_TIME must be handled in the callback.
-
- @see
- - m2m_wifi_enable_sntp
- - tstrSystemTime
- */
- NMI_API sint8 m2m_wifi_get_sytem_time(void);
-
- /*!
- @fn NMI_API sint8 m2m_wifi_set_cust_InfoElement(uint8*);
-
- @brief
- Asynchronous API to add or remove a user-defined Information Element
-
- @details
- This function allows the application to provide a custom Information Element to the WINC IC that will
- be included in all beacon and probe response frames.
-
- @param [in] pau8M2mCustInfoElement
- Pointer to Buffer containing the IE to be used. If null, this removes any current custom IE. If
- non-null, the pointer must reference data in the following format:
-
- @verbatim
- --------------- ---------- ---------- ------------------- -------- -------- ----------- ----------------------
- | Byte[0] | Byte[1] | Byte[2] | Byte[3:length1+2] | ..... | Byte[n] | Byte[n+1] | Byte[n+2:lengthx+2] |
- |---------------|----------|----------|-------------------|-------- --------|-----------|------------------|
- | #of all Bytes | IE1 ID | Length1 | Data1(Hex Coded) | ..... | IEx ID | Lengthx | Datax(Hex Coded) |
- --------------- ---------- ---------- ------------------- -------- -------- ----------- ----------------------
- @endverbatim
-
- @return
- The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC,
- and a negative value otherwise.
-
- @warning
- - Size of All elements combined must not exceed 255 byte.\n
- - Used in Access Point Mode \n
-
- \section WIFIExample11 Example
- The example demonstrates how the information elements are set using this function.
- @code
- char elementData[21];
- static char state = 0; // To Add, Append, and Delete
- if(0 == state) { //Add 3 IEs
- state = 1;
- //Total Number of Bytes
- elementData[0]=12;
- //First IE
- elementData[1]=200; elementData[2]=1; elementData[3]='A';
- //Second IE
- elementData[4]=201; elementData[5]=2; elementData[6]='B'; elementData[7]='C';
- //Third IE
- elementData[8]=202; elementData[9]=3; elementData[10]='D'; elementData[11]=0; elementData[12]='F';
- } else if(1 == state) {
- //Append 2 IEs to others, Notice that we keep old data in array starting with\n
- //element 13 and total number of bytes increased to 20
- state = 2;
- //Total Number of Bytes
- elementData[0]=20;
- //Fourth IE
- elementData[13]=203; elementData[14]=1; elementData[15]='G';
- //Fifth IE
- elementData[16]=204; elementData[17]=3; elementData[18]='X'; elementData[19]=5; elementData[20]='Z';
- } else if(2 == state) { //Delete All IEs
- state = 0;
- //Total Number of Bytes
- elementData[0]=0;
- }
- m2m_wifi_set_cust_InfoElement(elementData);
- @endcode
- */
- NMI_API sint8 m2m_wifi_set_cust_InfoElement(uint8* pau8M2mCustInfoElement);
-
- /*!
- @fn NMI_API sint8 m2m_wifi_set_power_profile(uint8 u8PwrMode);
-
- @brief Change the power profile mode
-
- @param [in] u8PwrMode
- Change the WINC power profile to one of the modes: PWR_LOW1, PWR_LOW2, PWR_HIGH, PWR_AUTO.
-
- @return
- The function SHALL return @ref M2M_SUCCESS for success and a negative value otherwise.
-
- @see
- tenuM2mPwrMode
-
- @warning
- May only be called after initialization, before any connection request, and may not be used to change
- the power mode thereafter.
- */
- sint8 m2m_wifi_set_power_profile(uint8 u8PwrMode);
-
- /*!
- @fn NMI_API sint8 m2m_wifi_set_tx_power(uint8 u8TxPwrLevel);
-
- @brief set the TX power tenuM2mTxPwrLevel
-
- @param [in] u8TxPwrLevel
- change the TX power tenuM2mTxPwrLevel
-
- @return
- The function SHALL return @ref M2M_SUCCESS for success and a negative value otherwise.
-
- @sa tenuM2mTxPwrLevel
- */
- sint8 m2m_wifi_set_tx_power(uint8 u8TxPwrLevel);
-
- /*!
- @fn NMI_API sint8 m2m_wifi_enable_firmware_logs(uint8 u8Enable);
-
- @brief
- Enable or Disable logs in run time (Disable Firmware logs will enhance the firmware start-up time
- and performance)
-
- @param [in] u8Enable
- Set 1 to enable the logs 0 for disable
-
- @return
- The function SHALL return @ref M2M_SUCCESS for success and a negative value otherwise.
-
- @see
- __DISABLE_FIRMWARE_LOGS__ (build option to disable logs from initializations)
- */
- sint8 m2m_wifi_enable_firmware_logs(uint8 u8Enable);
- /*!
- @fn NMI_API sint8 m2m_wifi_set_battery_voltage(uint8 u8BattVolt)
-
- @brief
- Set the battery voltage to update the firmware calculations
-
- @param [in] dbBattVolt
- Battery Voltage
-
- @return
- The function SHALL return @ref M2M_SUCCESS for success and a negative value otherwise.
- */
- sint8 m2m_wifi_set_battery_voltage(uint16 u16BattVoltx100);
-
- /*!
- @fn NMI_API sint8 m2m_wifi_ble_api_send(const uint8* const msg, const uint32 len);
-
- @brief
- Asynchronous API to send an encapsulated Atmel BLE message over the Wifi Host Interface
-
- @param [in] msg
- Pointer to the start of the BLE message to transfer down to the WINC
-
- @param [in] len
- The length of the message in octets
-
- @return
- The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC,
- and a negative value otherwise.
- */
- NMI_API sint8 m2m_wifi_ble_api_send(uint8* msg, uint32 len);
-
-
- /*!
- @fn NMI_API sint8 m2m_wifi_enable_mac_mcast(uint8 *, uint8);
-
- @brief
- Asynchronous API to add or remove MAC addresses in the multicast filter
-
- @details
- This function allows the application to configure the capability of the WINC IC to receive multicast
- packets when operating in bypass mode.
-
- @param [in] pu8MulticastMacAddress
- Pointer to MAC address
-
- @param [in] u8AddRemove
- A flag to add or remove the MAC ADDRESS, based on the following values:
- - 0 : remove MAC address
- - 1 : add MAC address
-
- @return
- The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC,
- and a negative value otherwise.
-
- @note
- Maximum number of MAC addresses that could be added is 8.
-
- @warning
- This functionality is not supported by current WINC firmware.
- */
- NMI_API sint8 m2m_wifi_enable_mac_mcast(uint8* pu8MulticastMacAddress, uint8 u8AddRemove);
-
- /*!
- @fn NMI_API sint8 m2m_wifi_set_receive_buffer(void *, uint16);
-
- @brief
- Asynchronous API to set or change the size of the WINC IC's receive buffer
-
- @param [in] pvBuffer
- Pointer to Buffer to receive data. A NULL pointer causes a negative error @ref M2M_ERR_FAIL.
-
- @param [in] u16BufferLen
- Length of data to be received. Maximum length of data should not exceed the size defined by TCP/IP
- defined as @ref SOCKET_BUFFER_MAX_LENGTH
-
- @return
- The function returns @ref M2M_SUCCESS if the command has been successfully queued to the WINC,
- and a negative value otherwise.
-
- @warning
- This functionality is not supported by current WINC firmware.
- */
- NMI_API sint8 m2m_wifi_set_receive_buffer(void* pvBuffer,uint16 u16BufferLen);
-
- /**@}*/
-
- /**@defgroup VERSIONAPI Functions
- @ingroup VERSION
- */
- /**@{*/
-
-
- /*!
- @fn uint32 m2m_wifi_get_chipId(void)
-
- @brief
- Synchronous API to obtain the firmware WINC chip ID
-
- @return
- The function SHALL return chipID > 0 or 0 for failure.
- */
- uint32 m2m_wifi_get_chipId(void);
- /*!
- @fn sint8 m2m_wifi_check_ota_rb(void);
-
- @brief
- Synchronous API to check presence and compatibility of the WINC image that is stored in the inactive flash partition.
- This is the image that would run on the WINC IC if @ref m2m_ota_switch_firmware or @ref m2m_ota_rollback were called,
- followed by a reset of the WINC IC.
-
- @return
- The function SHALL return @ref M2M_SUCCESS for compatible image and a negative value otherwise.
- */
- sint8 m2m_wifi_check_ota_rb(void);
- /*!
- @fn sint8 m2m_wifi_get_firmware_version(tstrM2mRev* pstrRev)
-
- @brief
- Synchronous API to obtain the firmware version currently running on the WINC IC
-
- @param [out] pstrRev
- pointer holds address of structure "tstrM2mRev" that contains the firmware version parameters
-
- @return
- The function SHALL return @ref M2M_SUCCESS for success and a negative value otherwise.
- */
- sint8 m2m_wifi_get_firmware_version(tstrM2mRev *pstrRev);
-
- /*!
- @fn \
- NMI_API sint8 m2m_ota_get_firmware_version(tstrM2mRev *pstrRev);
-
- @brief
- Synchronous API to obtain the firmware version of the WINC image that is stored in the inactive flash partition.
- This is the image that would run on the WINC IC if @ref m2m_ota_switch_firmware or @ref m2m_ota_rollback were called,
- followed by a reset of the WINC IC.
-
- @param [out] pstrRev
- pointer holds address of structure "tstrM2mRev" that contains the ota fw version parameters
-
- @return
- The function SHALL return @ref M2M_SUCCESS for success and a negative value otherwise.
- */
- NMI_API sint8 m2m_ota_get_firmware_version(tstrM2mRev *pstrRev);
-
- /**@}*/
-
- /*!
- * @fn sint8 m2m_wifi_prng_get_random_bytes(uint8 * pu8PRNGBuff,uint16 u16PRNGSize)
- * @param [in] pu8PrngBuff
- * Pointer to Buffer to receive data.
- * Size greater than the maximum specified (@ref M2M_BUFFER_MAX_SIZE - sizeof(tstrPrng))
- * causes a negative error @ref M2M_ERR_FAIL.
- * @param [in] u16PrngSize
- request size in bytes
- * @return The function returns @ref M2M_SUCCESS for successful operations and a negative value otherwise.
- */
- sint8 m2m_wifi_prng_get_random_bytes(uint8 * pu8PrngBuff,uint16 u16PrngSize);
-
- #ifdef __cplusplus
- }
- #endif
- #endif /* __M2M_WIFI_H__ */
|