ra8-firmware 0.1.0
Bare-metal firmware for the Renesas RA8 family (RA8D2 / RA8P1)
Loading...
Searching...
No Matches
ra8_wifi.h
Go to the documentation of this file.
1
58
59#pragma once
60
61#ifdef __cplusplus
62extern "C" {
63#endif
64
65#include <stdint.h>
66
67#include "ra8_err.h"
68
90typedef enum : uint8_t {
94
121typedef enum : uint16_t {
127
159
182typedef enum : uint8_t {
186
212
233typedef struct ra8_wifi_lease {
234 uint32_t ip;
235 uint32_t mask;
236 uint32_t gateway;
237 uint32_t dhcp_server;
238 bool bound;
240
271
302
324typedef ra8_err_t (*ra8_wifi_ip_bind_fn)(void* ip_ctx,
325 const ra8_wifi_mac_t* mac,
326 ra8_wifi_lease_t* out);
327
343
375
410
451[[nodiscard]] ra8_err_t ra8_wifi_init(ra8_wifi_t* wifi, const ra8_wifi_cfg_t* cfg);
452
483[[nodiscard]] ra8_err_t ra8_wifi_deinit(ra8_wifi_t* wifi);
484
541[[nodiscard]] ra8_err_t ra8_wifi_connect(ra8_wifi_t* wifi, const char* ssid, const char* psk);
542
576[[nodiscard]] ra8_err_t ra8_wifi_disconnect(ra8_wifi_t* wifi);
577
617[[nodiscard]] ra8_err_t ra8_wifi_wait_ip(ra8_wifi_t* wifi, ra8_wifi_lease_t* out);
618
652[[nodiscard]] ra8_err_t ra8_wifi_get_ip(const ra8_wifi_t* wifi, ra8_wifi_lease_t* out);
653
687[[nodiscard]] ra8_err_t ra8_wifi_status(const ra8_wifi_t* wifi, ra8_wifi_status_t* out);
688
730[[nodiscard]] ra8_err_t ra8_wifi_poll(ra8_wifi_t* wifi, ra8_wifi_link_t* out);
731
774[[nodiscard]] ra8_err_t ra8_wifi_get_mac(ra8_wifi_t* wifi, ra8_wifi_mac_t* out);
775
812[[nodiscard]] ra8_err_t ra8_wifi_get_ap(ra8_wifi_t* wifi, ra8_wifi_ap_t* out);
813
814#ifdef __cplusplus
815}
816#endif
Error Code Definitions for ra8-firmware.
ra8_err_codes_t ra8_err_t
Canonical error-return type used by every ra8-firmware API.
Definition ra8_err.h:546
ra8_err_t ra8_wifi_deinit(ra8_wifi_t *wifi)
Release a handle and power its radio down.
Definition ra8_wifi.c:195
ra8_wifi_state_t
Where a handle is on the path from powered-off to holding an IP.
Definition ra8_wifi.h:153
@ k_ra8_wifi_state_ip_bound
A DHCP lease is held.
Definition ra8_wifi.h:157
@ k_ra8_wifi_state_associating
A join has been asked for.
Definition ra8_wifi.h:155
@ k_ra8_wifi_state_associated
Station is joined; no IP yet.
Definition ra8_wifi.h:156
@ k_ra8_wifi_state_down
Not associated; radio may be off.
Definition ra8_wifi.h:154
ra8_err_t ra8_wifi_init(ra8_wifi_t *wifi, const ra8_wifi_cfg_t *cfg)
Bring the radio and its link up and make a handle usable.
Definition ra8_wifi.c:166
ra8_wifi_limits_t
Fixed field capacities this facade works to.
Definition ra8_wifi.h:90
@ k_ra8_wifi_mac_bytes
Octets in an IEEE 802 address.
Definition ra8_wifi.h:91
@ k_ra8_wifi_ssid_max
Octets in the longest 802.11 SSID.
Definition ra8_wifi.h:92
struct ra8_wifi_backend ra8_wifi_backend_t
One radio's implementation of the operations this facade dispatches.
Definition ra8_wifi.h:342
struct ra8_wifi_ap ra8_wifi_ap_t
ra8_err_t ra8_wifi_get_mac(ra8_wifi_t *wifi, ra8_wifi_mac_t *out)
Read the station's own MAC address.
Definition ra8_wifi.c:434
struct ra8_wifi_mac ra8_wifi_mac_t
struct ra8_wifi_lease ra8_wifi_lease_t
ra8_err_t ra8_wifi_get_ap(ra8_wifi_t *wifi, ra8_wifi_ap_t *out)
Read what the backend knows about the associated AP.
Definition ra8_wifi.c:462
struct ra8_wifi ra8_wifi_t
ra8_err_t ra8_wifi_get_ip(const ra8_wifi_t *wifi, ra8_wifi_lease_t *out)
Read the cached DHCP lease without touching the wire.
Definition ra8_wifi.c:383
ra8_err_t(* ra8_wifi_ip_bind_fn)(void *ip_ctx, const ra8_wifi_mac_t *mac, ra8_wifi_lease_t *out)
Caller-supplied hook that turns an associated station into a lease.
Definition ra8_wifi.h:324
ra8_err_t ra8_wifi_wait_ip(ra8_wifi_t *wifi, ra8_wifi_lease_t *out)
Obtain an IP address for the associated station, blocking until bound.
Definition ra8_wifi.c:353
ra8_wifi_link_t
The instantaneous association state a backend reports.
Definition ra8_wifi.h:182
@ k_ra8_wifi_link_up
Station is associated with an AP.
Definition ra8_wifi.h:184
@ k_ra8_wifi_link_down
Station is not associated.
Definition ra8_wifi.h:183
ra8_err_t ra8_wifi_status(const ra8_wifi_t *wifi, ra8_wifi_status_t *out)
Read a handle's cached status without touching the wire.
Definition ra8_wifi.c:394
ra8_err_t ra8_wifi_disconnect(ra8_wifi_t *wifi)
Disassociate the station and power the radio down.
Definition ra8_wifi.c:338
struct ra8_wifi_status ra8_wifi_status_t
struct ra8_wifi_cfg ra8_wifi_cfg_t
ra8_wifi_budget_t
Bounds that turn "never associated" into a returned timeout.
Definition ra8_wifi.h:121
@ k_ra8_wifi_join_polls
Times ra8_wifi_connect services the link while waiting for the join to complete.
Definition ra8_wifi.h:122
@ k_ra8_wifi_poll_gap_ms
Milliseconds the facade idles between two association attempts.
Definition ra8_wifi.h:124
ra8_err_t ra8_wifi_connect(ra8_wifi_t *wifi, const char *ssid, const char *psk)
Join a network by SSID and passphrase, blocking until associated.
Definition ra8_wifi.c:311
ra8_err_t ra8_wifi_poll(ra8_wifi_t *wifi, ra8_wifi_link_t *out)
Service the link once and refresh the cached association state.
Definition ra8_wifi.c:411
What the backend knows about the AP the station is on.
Definition ra8_wifi.h:263
int32_t authmode
Backend authentication-mode code.
Definition ra8_wifi.h:269
char ssid[k_ra8_wifi_ssid_max+1U]
Its SSID, NUL-terminated.
Definition ra8_wifi.h:265
ra8_wifi_mac_t bssid
Address of the associated AP.
Definition ra8_wifi.h:264
int8_t rssi
Signal level in dBm.
Definition ra8_wifi.h:268
uint8_t ssid_len
Octets of ssid.
Definition ra8_wifi.h:266
uint8_t channel
Primary channel in use.
Definition ra8_wifi.h:267
One vtable per radio.
Everything ra8_wifi_init needs that the facade cannot discover.
Definition ra8_wifi.h:369
const ra8_wifi_backend_t * backend
Radio operations; every row set.
Definition ra8_wifi.h:370
void * backend_ctx
Opaque state handed to the backend.
Definition ra8_wifi.h:371
ra8_wifi_ip_bind_fn ip_bind
IP-stack hook for ra8_wifi_wait_ip.
Definition ra8_wifi.h:372
void * ip_ctx
Opaque context handed to ip_bind.
Definition ra8_wifi.h:373
The IPv4 configuration an ra8_wifi_ip_bind_fn obtained.
Definition ra8_wifi.h:233
uint32_t dhcp_server
Address of the DHCP server that answered.
Definition ra8_wifi.h:237
uint32_t gateway
Default gateway from the lease.
Definition ra8_wifi.h:236
uint32_t mask
Subnet mask from the lease.
Definition ra8_wifi.h:235
bool bound
A usable lease is held.
Definition ra8_wifi.h:238
uint32_t ip
Leased station address, or zero if unbound.
Definition ra8_wifi.h:234
One IEEE 802 address, by value.
Definition ra8_wifi.h:209
uint8_t octet[k_ra8_wifi_mac_bytes]
Address octets, first on the wire first.
Definition ra8_wifi.h:210
A single snapshot of where a handle is, without touching the wire.
Definition ra8_wifi.h:295
ra8_wifi_state_t state
Lifecycle position.
Definition ra8_wifi.h:296
bool associated
The station is joined.
Definition ra8_wifi.h:297
bool ip_bound
A DHCP lease is held.
Definition ra8_wifi.h:298
int8_t rssi
Last known signal level in dBm, or zero.
Definition ra8_wifi.h:299
ra8_wifi_lease_t ip
The current lease, valid when ip_bound.
Definition ra8_wifi.h:300
Caller-allocated Wi-Fi handle.
Definition ra8_wifi.h:397
ra8_wifi_ip_bind_fn ip_bind
Bound IP-stack hook.
Definition ra8_wifi.h:400
const ra8_wifi_backend_t * backend
Bound radio operations.
Definition ra8_wifi.h:398
void * backend_ctx
Backend's opaque state.
Definition ra8_wifi.h:399
void * ip_ctx
Context for ip_bind.
Definition ra8_wifi.h:401
ra8_wifi_mac_t mac
Cached station address.
Definition ra8_wifi.h:402
bool mac_valid
mac has been read.
Definition ra8_wifi.h:408
bool radio_on
The radio has been started.
Definition ra8_wifi.h:407
ra8_wifi_state_t state
Lifecycle position.
Definition ra8_wifi.h:404
bool open
The handle is initialised.
Definition ra8_wifi.h:406
ra8_wifi_lease_t lease
Cached DHCP lease.
Definition ra8_wifi.h:403
int8_t rssi
Last signal reading, dBm.
Definition ra8_wifi.h:405