1 unstable release

0.0.0 Mar 7, 2023

#8 in #archived

MIT/Apache

1KB

ARCHIVED - moved into the main Embassy repo https://github.com/embassy-rs/embassy

cyw43

WIP driver for the CYW43439 wifi chip, used in the Raspberry Pi Pico W. Implementation based on Infineon/wifi-host-driver.

Current status

Working:

  • Station mode (joining an AP).
  • AP mode (creating an AP)
  • Scanning
  • Sending and receiving Ethernet frames.
  • Using the default MAC address.
  • embassy-net integration.
  • RP2040 PIO driver for the nonstandard half-duplex SPI used in the Pico W.
  • Using IRQ for device events
  • GPIO support (for LED on the Pico W)

TODO:

  • Setting a custom MAC address.
  • Bus sleep (unclear what the benefit is. Is it needed for IRQs? or is it just power consumption optimization?)

Running the examples

  • cargo install probe-rs-cli
  • cd examples/rpi-pico-w

Example 1: Scan the wifi stations

  • cargo run --release --bin wifi_scan

Example 2: Create an access point (IP and credentials in the code)

  • cargo run --release --bin tcp_server_ap

Example 3: Connect to an existing network and create a server

  • WIFI_NETWORK=MyWifiNetwork WIFI_PASSWORD=MyWifiPassword cargo run --release

After a few seconds, you should see that DHCP picks up an IP address like this

11.944489 DEBUG Acquired IP configuration:
11.944517 DEBUG    IP address:      192.168.0.250/24
11.944620 DEBUG    Default gateway: 192.168.0.33
11.944722 DEBUG    DNS server 0:    192.168.0.33

This example implements a TCP echo server on port 1234. You can try connecting to it with:

nc 192.168.0.250 1234

Send it some data, you should see it echoed back and printed in the firmware's logs.

License

This work is licensed under either of

at your option.

No runtime deps