| CMSIS-Driver Peripheral Interface for Middleware and Application Code |

Loading...
Searching...
No Matches
Content | Data Structures
WiFi Interface

Driver API for WiFi (Driver_WiFi.h) More...

## Content
| WiFi Control
| Control functions for the WiFi module.
| WiFi Management
| Configure and manage the connection to a WiFi access point (AP) or configure and manage the access point (AP).
| WiFi Bypass Mode
| Transfer Ethernet frames by WiFi module.
| WiFi Socket
| Socket interface to IP stack running on WiFi module.

## Data Structures
struct | ARM_DRIVER_WIFI
| Access structure of the WiFi Driver. More...

## Description

Driver API for WiFi (Driver_WiFi.h)

Wi-Fi is technology for radio wireless local area networking of devices. Wi-Fi compatible devices typically connect to the Internet via a WLAN and a wireless access point (AP) also called hotspot.

Wikipedia offers more information about the WiFi.

Driver Block Diagram

Block Diagram of the WiFi interface

WiFi API

The following header files define the Application Programming Interface (API) for the WiFi interface:

- Driver_WiFi.h : Driver API for WiFi

The CMSIS-Driver WiFi provides access to the following interfaces:

- Control interface: setup and control the WiFi module.
- Management interface: allows you to configure and manage the connection to the WiFi access point (AP) or configure and manage the access point (AP).
- Socket interface: provides the interface to an IP stack that is running on the WiFi module. This IP stack handles data communication.
- Bypass interface: is an optional interface and enables the transmission of Ethernet frames with the WiFi module. Using this interface requires the IP stack running on the microcontroller.
  Note
    Often, WiFi chips and modules have their own networking stack incorporated. This means that payload data is sent via a serial interface (SPI or USART) to the WiFi chip/module and the Ethernet frames are assembled inside. If you intend to use a separate TCP/IP stack on the microcontroller, make sure that the WiFi driver has a WiFi Bypass Mode. This allows to send the Ethernet frames assembled by the TCP/IP component transparently through the WiFi chip/module.
  The WiFi interface usually requires CMSIS-RTOS features (i.e. mutex) and is often implemented with a peripheral device that is connected to the system using the SPI or UART interface. However, there are also some microcontroller devices with WiFi interface on the chip.

The implementation of the WiFi CMSIS-Driver is therefore generally provided as a separate software pack. It is often implemented as wrapper to the SDK (Software Development Kit) of the WiFi chipset.

Driver Functions

The driver functions are published in the access struct as explained in Common Driver Functions

- ARM_DRIVER_WIFI : access struct for WiFi driver functions

## Data Structure Documentation

## ◆ ARM_DRIVER_WIFI

struct ARM_DRIVER_WIFI

Access structure of the WiFi Driver.

The functions of the WiFi driver are accessed by function pointers exposed by this structure. Refer to Common Driver Functions for overview information.

Each instance of a WiFi interface provides such an access structure. The instance is identified by a postfix number in the symbol name of the access structure, for example:

- Driver_WiFi0 is the name of the access struct of the first instance (no. 0).
- Driver_WiFi1 is the name of the access struct of the second instance (no. 1).

A middleware configuration setting allows connecting the middleware to a specific driver instance Driver_WiFin. The default is 0, which connects a middleware to the first instance of a driver.

### Data Fields
ARM_DRIVER_VERSION(* | GetVersion )(void)
ARM_WIFI_CAPABILITIES(* | GetCapabilities )(void)
int32_t(* | Initialize )(ARM_WIFI_SignalEvent_t cb_event)
int32_t(* | Uninitialize )(void)
int32_t(* | PowerControl )(ARM_POWER_STATE state)
int32_t(* | GetModuleInfo )(char *module_info, uint32_t max_len)
int32_t(* | SetOption )(uint32_t interface, uint32_t option, const void *data, uint32_t len)
int32_t(* | GetOption )(uint32_t interface, uint32_t option, void *data, uint32_t *len)
int32_t(* | Scan )(ARM_WIFI_SCAN_INFO_t scan_info[], uint32_t max_num)
int32_t(* | Activate )(uint32_t interface, const ARM_WIFI_CONFIG_t *config)
int32_t(* | Deactivate )(uint32_t interface)
uint32_t(* | IsConnected )(void)
int32_t(* | GetNetInfo )(ARM_WIFI_NET_INFO_t *net_info)
int32_t(* | BypassControl )(uint32_t interface, uint32_t mode)
int32_t(* | EthSendFrame )(uint32_t interface, const uint8_t *frame, uint32_t len)
int32_t(* | EthReadFrame )(uint32_t interface, uint8_t *frame, uint32_t len)
uint32_t(* | EthGetRxFrameSize )(uint32_t interface)
int32_t(* | SocketCreate )(int32_t af, int32_t type, int32_t protocol)
int32_t(* | SocketBind )(int32_t socket, const uint8_t *ip, uint32_t ip_len, uint16_t port)
int32_t(* | SocketListen )(int32_t socket, int32_t backlog)
int32_t(* | SocketAccept )(int32_t socket, uint8_t *ip, uint32_t *ip_len, uint16_t *port)
int32_t(* | SocketConnect )(int32_t socket, const uint8_t *ip, uint32_t ip_len, uint16_t port)
int32_t(* | SocketRecv )(int32_t socket, void *buf, uint32_t len)
int32_t(* | SocketRecvFrom )(int32_t socket, void *buf, uint32_t len, uint8_t *ip, uint32_t *ip_len, uint16_t *port)
int32_t(* | SocketSend )(int32_t socket, const void *buf, uint32_t len)
int32_t(* | SocketSendTo )(int32_t socket, const void *buf, uint32_t len, const uint8_t *ip, uint32_t ip_len, uint16_t port)
int32_t(* | SocketGetSockName )(int32_t socket, uint8_t *ip, uint32_t *ip_len, uint16_t *port)
int32_t(* | SocketGetPeerName )(int32_t socket, uint8_t *ip, uint32_t *ip_len, uint16_t *port)
int32_t(* | SocketGetOpt )(int32_t socket, int32_t opt_id, void *opt_val, uint32_t *opt_len)
int32_t(* | SocketSetOpt )(int32_t socket, int32_t opt_id, const void *opt_val, uint32_t opt_len)
int32_t(* | SocketClose )(int32_t socket)
int32_t(* | SocketGetHostByName )(const char *name, int32_t af, uint8_t *ip, uint32_t *ip_len)
int32_t(* | Ping )(const uint8_t *ip, uint32_t ip_len)

#### Field Documentation

## ◆ GetVersion

ARM_DRIVER_VERSION(* GetVersion) (void)

## ◆ GetCapabilities

ARM_WIFI_CAPABILITIES(* GetCapabilities) (void)

## ◆ Initialize

int32_t(* Initialize) (ARM_WIFI_SignalEvent_t cb_event)

## ◆ Uninitialize

int32_t(* Uninitialize) (void)

## ◆ PowerControl

int32_t(* PowerControl) (ARM_POWER_STATE state)

## ◆ GetModuleInfo

int32_t(* GetModuleInfo) (char *module_info, uint32_t max_len)

## ◆ SetOption

int32_t(* SetOption) (uint32_t interface, uint32_t option, const void *data, uint32_t len)

## ◆ GetOption

int32_t(* GetOption) (uint32_t interface, uint32_t option, void *data, uint32_t *len)

## ◆ Scan

int32_t(* Scan) (ARM_WIFI_SCAN_INFO_t scan_info[], uint32_t max_num)

## ◆ Activate

int32_t(* Activate) (uint32_t interface, const ARM_WIFI_CONFIG_t *config)

## ◆ Deactivate

int32_t(* Deactivate) (uint32_t interface)

## ◆ IsConnected

uint32_t(* IsConnected) (void)

## ◆ GetNetInfo

int32_t(* GetNetInfo) (ARM_WIFI_NET_INFO_t *net_info)

## ◆ BypassControl

int32_t(* BypassControl) (uint32_t interface, uint32_t mode)

## ◆ EthSendFrame

int32_t(* EthSendFrame) (uint32_t interface, const uint8_t *frame, uint32_t len)

## ◆ EthReadFrame

int32_t(* EthReadFrame) (uint32_t interface, uint8_t *frame, uint32_t len)

## ◆ EthGetRxFrameSize

uint32_t(* EthGetRxFrameSize) (uint32_t interface)

## ◆ SocketCreate

int32_t(* SocketCreate) (int32_t af, int32_t type, int32_t protocol)

## ◆ SocketBind

int32_t(* SocketBind) (int32_t socket, const uint8_t *ip, uint32_t ip_len, uint16_t port)

## ◆ SocketListen

int32_t(* SocketListen) (int32_t socket, int32_t backlog)

## ◆ SocketAccept

int32_t(* SocketAccept) (int32_t socket, uint8_t *ip, uint32_t *ip_len, uint16_t *port)

## ◆ SocketConnect

int32_t(* SocketConnect) (int32_t socket, const uint8_t *ip, uint32_t ip_len, uint16_t port)

## ◆ SocketRecv

int32_t(* SocketRecv) (int32_t socket, void *buf, uint32_t len)

## ◆ SocketRecvFrom

int32_t(* SocketRecvFrom) (int32_t socket, void *buf, uint32_t len, uint8_t *ip, uint32_t *ip_len, uint16_t *port)

## ◆ SocketSend

int32_t(* SocketSend) (int32_t socket, const void *buf, uint32_t len)

## ◆ SocketSendTo

int32_t(* SocketSendTo) (int32_t socket, const void *buf, uint32_t len, const uint8_t *ip, uint32_t ip_len, uint16_t port)

## ◆ SocketGetSockName

int32_t(* SocketGetSockName) (int32_t socket, uint8_t *ip, uint32_t *ip_len, uint16_t *port)

## ◆ SocketGetPeerName

int32_t(* SocketGetPeerName) (int32_t socket, uint8_t *ip, uint32_t *ip_len, uint16_t *port)

## ◆ SocketGetOpt

int32_t(* SocketGetOpt) (int32_t socket, int32_t opt_id, void *opt_val, uint32_t *opt_len)

## ◆ SocketSetOpt

int32_t(* SocketSetOpt) (int32_t socket, int32_t opt_id, const void *opt_val, uint32_t opt_len)

## ◆ SocketClose

int32_t(* SocketClose) (int32_t socket)

## ◆ SocketGetHostByName

int32_t(* SocketGetHostByName) (const char *name, int32_t af, uint8_t *ip, uint32_t *ip_len)

## ◆ Ping

int32_t(* Ping) (const uint8_t *ip, uint32_t ip_len)