34 #ifndef CYW43_INCLUDED_CYW43_H 35 #define CYW43_INCLUDED_CYW43_H 37 #include "cyw43_config.h" 40 #include "lwip/netif.h" 41 #include "lwip/dhcp.h" 45 #include "shared/netutils/dhcpserver.h" 64 #define CYW43_TRACE_ASYNC_EV (0x0001) 66 #define CYW43_TRACE_ETH_TX (0x0002) 67 #define CYW43_TRACE_ETH_RX (0x0004) 68 #define CYW43_TRACE_ETH_FULL (0x0008) 69 #define CYW43_TRACE_MAC (0x0010) 79 #define CYW43_LINK_DOWN (0) 81 #define CYW43_LINK_JOIN (1) 82 #define CYW43_LINK_NOIP (2) 83 #define CYW43_LINK_UP (3) 84 #define CYW43_LINK_FAIL (-1) 85 #define CYW43_LINK_NONET (-2) 86 #define CYW43_LINK_BADAUTH (-3) 96 volatile uint32_t wifi_scan_state;
97 uint32_t wifi_join_state;
105 bool pend_rejoin_wpa;
117 struct netif netif[2];
119 struct dhcp dhcp_client;
124 dhcp_server_t dhcp_server;
130 #if CYW43_ENABLE_BLUETOOTH 136 extern void (*cyw43_poll)(void);
137 extern uint32_t cyw43_sleep;
169 int cyw43_ioctl(
cyw43_t *
self, uint32_t cmd,
size_t len, uint8_t *buf, uint32_t iface);
308 return self->wifi_scan_state == 1;
330 int cyw43_wifi_join(
cyw43_t *
self,
size_t ssid_len,
const uint8_t *ssid,
size_t key_len,
const uint8_t *key, uint32_t auth_type,
const uint8_t *bssid, uint32_t channel);
374 *len =
self->ap_ssid_len;
375 *buf =
self->ap_ssid;
387 return self->ap_auth;
399 self->ap_channel = (uint8_t) channel;
412 self->ap_ssid_len = (uint8_t)
MIN(len,
sizeof(self->ap_ssid));
413 memcpy(self->ap_ssid, buf, self->ap_ssid_len);
426 self->ap_key_len = (uint8_t)
MIN(len,
sizeof(self->ap_key));
427 memcpy(self->ap_key, buf, self->ap_key_len);
446 self->ap_auth = auth;
483 return self->initted;
565 int cyw43_gpio_set(
cyw43_t *
self,
int gpio,
bool val);
578 int cyw43_gpio_get(
cyw43_t *
self,
int gpio,
bool *val);
603 static inline uint32_t
cyw43_pm_value(uint8_t pm_mode, uint16_t pm2_sleep_ret_ms, uint8_t li_beacon_period, uint8_t li_dtim_period, uint8_t li_assoc) {
604 return li_assoc << 20 |
605 li_dtim_period << 16 |
606 li_beacon_period << 12 |
607 (pm2_sleep_ret_ms / 10) << 4 |
614 #define CYW43_DEFAULT_PM cyw43_pm_value(CYW43_PM2_POWERSAVE_MODE, 200, 1, 1, 10) 619 #define CYW43_AGGRESSIVE_PM cyw43_pm_value(CYW43_PM2_POWERSAVE_MODE, 2000, 1, 1, 10) 624 #define CYW43_PERFORMANCE_PM cyw43_pm_value(CYW43_PM2_POWERSAVE_MODE, 20, 1, 1, 1) 626 #if CYW43_ENABLE_BLUETOOTH 632 int cyw43_bluetooth_hci_init(
void);
642 int cyw43_bluetooth_hci_read(uint8_t *buf, uint32_t max_size, uint32_t *len);
651 int cyw43_bluetooth_hci_write(uint8_t *buf,
size_t len);
656 void cyw43_bluetooth_hci_process(
void);
661 #endif // CYW43_INCLUDED_CYW43_H int cyw43_tcpip_link_status(cyw43_t *self, int itf)
Get the link status.
Definition: cyw43_lwip.c:283
int cyw43_wifi_join(cyw43_t *self, size_t ssid_len, const uint8_t *ssid, size_t key_len, const uint8_t *key, uint32_t auth_type, const uint8_t *bssid, uint32_t channel)
Connect or join a wifi network.
Definition: cyw43_ctrl.c:620
wifi scan options passed to cyw43_wifi_scan
Definition: cyw43_ll.h:243
static void cyw43_wifi_ap_set_auth(cyw43_t *self, uint32_t auth)
Set the security authorisation used in AP mode.
Definition: cyw43.h:445
static uint32_t cyw43_wifi_ap_get_auth(cyw43_t *self)
Get the security authorisation used in AP mode.
Definition: cyw43.h:386
static void cyw43_wifi_ap_get_ssid(cyw43_t *self, size_t *len, const uint8_t **buf)
Get the ssid for the access point.
Definition: cyw43.h:373
Definition: cyw43_ll.h:261
void cyw43_init(cyw43_t *self)
Initialize the driver.
Definition: cyw43_ctrl.c:91
void cyw43_cb_tcpip_set_link_up(cyw43_t *self, int itf)
Notify the IP stack that the link is up.
Definition: cyw43_lwip.c:275
Low Level CYW43 driver interface.
static bool cyw43_is_initialized(cyw43_t *self)
Determines if the cyw43 driver been initialised.
Definition: cyw43.h:482
Structure to return wifi scan results.
Definition: cyw43_ll.h:211
void cyw43_cb_tcpip_init(cyw43_t *self, int itf)
Initialise the IP stack.
Definition: cyw43_lwip.c:169
static void cyw43_wifi_ap_set_channel(cyw43_t *self, uint32_t channel)
Set the the channel for the access point.
Definition: cyw43.h:398
static void cyw43_wifi_ap_set_password(cyw43_t *self, size_t len, const uint8_t *buf)
Set the password for the wifi access point.
Definition: cyw43.h:425
int cyw43_send_ethernet(cyw43_t *self, int itf, size_t len, const void *buf, bool is_pbuf)
Send a raw ethernet packet.
Definition: cyw43_ctrl.c:450
int cyw43_wifi_scan(cyw43_t *self, cyw43_wifi_scan_options_t *opts, void *env, int(*result_cb)(void *, const cyw43_ev_scan_result_t *))
Perform a wifi scan for wifi networks.
Definition: cyw43_ctrl.c:572
void cyw43_cb_tcpip_deinit(cyw43_t *self, int itf)
Deinitialise the IP stack.
Definition: cyw43_lwip.c:233
void cyw43_wifi_set_up(cyw43_t *self, int itf, bool up, uint32_t country)
Set up and initialise wifi.
Definition: cyw43_ctrl.c:545
static void cyw43_wifi_ap_set_ssid(cyw43_t *self, size_t len, const uint8_t *buf)
Set the ssid for the access point.
Definition: cyw43.h:411
int cyw43_ioctl(cyw43_t *self, uint32_t cmd, size_t len, uint8_t *buf, uint32_t iface)
Send an ioctl command to cyw43.
Definition: cyw43_ctrl.c:436
void cyw43_deinit(cyw43_t *self)
Shut the driver down.
Definition: cyw43_ctrl.c:122
int cyw43_wifi_pm(cyw43_t *self, uint32_t pm)
Set the wifi power management mode.
Definition: cyw43_ctrl.c:486
int cyw43_wifi_get_mac(cyw43_t *self, int itf, uint8_t mac[6])
Get the mac address of the device.
Definition: cyw43_ctrl.c:531
void cyw43_wifi_ap_get_stas(cyw43_t *self, int *num_stas, uint8_t *macs)
Get the number of devices (STAs) associated with the wifi access point.
Definition: cyw43_ctrl.c:702
int cyw43_wifi_leave(cyw43_t *self, int itf)
Dissassociate from a wifi network.
Definition: cyw43_ctrl.c:651
static bool cyw43_wifi_scan_active(cyw43_t *self)
Determine if a wifi scan is in progress.
Definition: cyw43.h:307
void cyw43_cb_tcpip_set_link_down(cyw43_t *self, int itf)
Notify the IP stack that the link is down.
Definition: cyw43_lwip.c:279
static uint32_t cyw43_pm_value(uint8_t pm_mode, uint16_t pm2_sleep_ret_ms, uint8_t li_beacon_period, uint8_t li_dtim_period, uint8_t li_assoc)
Return a power management value to pass to cyw43_wifi_pm.
Definition: cyw43.h:603
void cyw43_wifi_ap_get_max_stas(cyw43_t *self, int *max_stas)
Get the maximum number of devices (STAs) that can be associated with the wifi access point...
Definition: cyw43_ctrl.c:698
int cyw43_wifi_get_rssi(cyw43_t *self, int32_t *rssi)
Get the signal strength (RSSI) of the wifi network.
Definition: cyw43_ctrl.c:657
int cyw43_wifi_link_status(cyw43_t *self, int itf)
Get the wifi link status.
Definition: cyw43_ctrl.c:598
int cyw43_wifi_get_bssid(cyw43_t *self, uint8_t bssid[6])
Get the BSSID of the connected wifi network.
Definition: cyw43_ctrl.c:664
int cyw43_wifi_get_pm(cyw43_t *self, uint32_t *pm)
Get the wifi power management mode.
Definition: cyw43_ctrl.c:507
int cyw43_wifi_update_multicast_filter(cyw43_t *self, uint8_t *addr, bool add)
Add/remove multicast group address.
Definition: cyw43_ctrl.c:538