picofuse

wifi.h
Go to the documentation of this file.
1 
47 #pragma once
48 #include <picofuse/net/types.h>
49 #include <stdbool.h>
50 #include <stdint.h>
51 
53 // CONSTANTS
54 
59 #ifndef HW_WIFI_SSID_MAX_LENGTH
60 #define HW_WIFI_SSID_MAX_LENGTH 32
61 #endif
62 
64 // TYPES
65 
73 typedef enum {
74  hw_wifi_auth_open = (1 << 0),
75  hw_wifi_auth_wep = (1 << 1),
76  hw_wifi_auth_wpa_tkip = (1 << 2),
77  hw_wifi_auth_wpa_aes = (1 << 3),
79  hw_wifi_auth_wpa2_aes = (1 << 5),
80  hw_wifi_auth_wpa3_sae = (1 << 6),
83 
88 typedef enum {
89  hw_wifi_event_scan = (1 << 0),
90  hw_wifi_event_joining = (1 << 1),
93  hw_wifi_event_badauth = (1 << 4),
94  hw_wifi_event_notfound = (1 << 5),
96  hw_wifi_event_error = (1 << 6),
97  hw_wifi_event_status = (1 << 7),
105 
121 typedef struct {
122  char ssid[HW_WIFI_SSID_MAX_LENGTH +
123  1];
124  uint8_t bssid[6];
126  uint8_t channel;
127  int16_t rssi;
129 
135 typedef struct hw_wifi_t hw_wifi_t;
136 
152 typedef void (*hw_wifi_callback_t)(hw_wifi_t *wifi, hw_wifi_event_t event,
153  const hw_wifi_network_t *network,
154  void *userdata);
155 
157 // LIFECYCLE
158 
174 hw_wifi_t *hw_wifi_init_client(const char *country_code);
175 
205 hw_wifi_t *hw_wifi_init_accesspoint(const char *country_code,
206  const char *ssid, const char *password,
207  hw_wifi_auth_t auth);
208 
231 hw_wifi_t *hw_wifi_init_device(const char *device);
232 
249  void *userdata);
250 
264 void hw_wifi_deinit(hw_wifi_t *wifi);
265 
268 // METHODS
270 
291 bool hw_wifi_scan(hw_wifi_t *wifi);
292 
316 bool hw_wifi_connect(hw_wifi_t *wifi, const hw_wifi_network_t *network,
317  const char *password);
318 
340 bool hw_wifi_disconnect(hw_wifi_t *wifi);
341 
358  net_addr_t *addr);
359 
Open (no authentication)
Definition: wifi.h:74
Joining a network.
Definition: wifi.h:90
WPA3-SAE.
Definition: wifi.h:80
net_addr_family_t
Address family for a net_addr_t.
Definition: types.h:39
WPA-PSK CCMP/AES.
Definition: wifi.h:77
WEP (legacy)
Definition: wifi.h:75
WPA2-PSK CCMP/AES.
Definition: wifi.h:79
Network not found.
Definition: wifi.h:95
hw_wifi_auth_t
Authentication and cipher modes for Wi-Fi networks.
Definition: wifi.h:73
uint8_t channel
Primary channel number.
Definition: wifi.h:126
struct hw_wifi_t hw_wifi_t
Opaque Wi-Fi handle.
Definition: wifi.h:135
bool hw_wifi_connect(hw_wifi_t *wifi, const hw_wifi_network_t *network, const char *password)
Begin an asynchronous connection to a Wi-Fi network.
WPA-PSK TKIP.
Definition: wifi.h:76
Bad authentication during connection attempt.
Definition: wifi.h:93
Disconnected.
Definition: wifi.h:92
802.1X Enterprise (EAP)
Definition: wifi.h:81
bool hw_wifi_get_address(hw_wifi_t *wifi, net_addr_family_t family, net_addr_t *addr)
Return the address currently bound to the Wi-Fi interface.
Describes a discovered Wi-Fi network (scan result).
Definition: wifi.h:121
hw_wifi_t * hw_wifi_init_client(const char *country_code)
Initialize Wi-Fi as a client.
hw_wifi_auth_t auth
Authentication/cipher info (see hw_wifi_auth_t)
Definition: wifi.h:125
WPA2-PSK TKIP.
Definition: wifi.h:78
Other error occurred.
Definition: wifi.h:96
Successfully connected.
Definition: wifi.h:91
bool hw_wifi_disconnect(hw_wifi_t *wifi)
Disconnect from a previously-connected Wi-Fi network.
void(* hw_wifi_callback_t)(hw_wifi_t *wifi, hw_wifi_event_t event, const hw_wifi_network_t *network, void *userdata)
Callback invoked for Wi-Fi operation notifications.
Definition: wifi.h:152
hw_wifi_t * hw_wifi_init_accesspoint(const char *country_code, const char *ssid, const char *password, hw_wifi_auth_t auth)
Initialize Wi-Fi as an access point.
hw_wifi_event_t
Wi-Fi callback event flags.
Definition: wifi.h:88
void hw_wifi_deinit(hw_wifi_t *wifi)
Deinitialize and release a Wi-Fi handle.
An IPv4 or IPv6 address.
Definition: types.h:48
int16_t rssi
Received signal strength (dBm)
Definition: wifi.h:127
Scan result available.
Definition: wifi.h:89
hw_wifi_t * hw_wifi_init_device(const char *device)
Initialize Wi-Fi from a WPA supplicant device.
void hw_wifi_set_callback(hw_wifi_t *wifi, hw_wifi_callback_t callback, void *userdata)
Attach or replace the callback notified of Wi-Fi status updates.
Periodic status refresh while already connected (updated RSSI, channel, BSSID) - not a new connection...
Definition: wifi.h:97
#define HW_WIFI_SSID_MAX_LENGTH
Maximum SSID length in bytes, excluding the NULL terminator.
Definition: wifi.h:60
bool hw_wifi_scan(hw_wifi_t *wifi)
Begin an asynchronous scan for nearby Wi-Fi networks.