#wifi #bluetooth #esp #esp-hal #abstraction-layer #no-std

no-std esp-wifi

A WiFi, Bluetooth and ESP-NOW driver for use with Espressif chips and bare-metal Rust

15 releases (breaking)

new 0.11.0 Nov 20, 2024
0.9.1 Sep 3, 2024
0.7.1 Jul 17, 2024
0.4.0 Mar 12, 2024
0.1.1 Nov 27, 2023

#60 in Embedded development

Download history 247/week @ 2024-08-04 339/week @ 2024-08-11 383/week @ 2024-08-18 767/week @ 2024-08-25 934/week @ 2024-09-01 546/week @ 2024-09-08 725/week @ 2024-09-15 769/week @ 2024-09-22 592/week @ 2024-09-29 825/week @ 2024-10-06 590/week @ 2024-10-13 737/week @ 2024-10-20 868/week @ 2024-10-27 829/week @ 2024-11-03 558/week @ 2024-11-10 1479/week @ 2024-11-17

3,768 downloads per month
Used in martos

MIT/Apache

3.5MB
73K SLoC

esp-wifi

Crates.io docs.rs MSRV Crates.io Matrix

A WiFi, BLE and ESP-NOW driver for Espressif microcontrollers.

Current support

If a cell contains an em dash (—) this means that the particular feature is not present for a chip. A check mark (✓) means that some driver implementation exists. A Tilde (˜) means it is implemented but buggy. An empty cell means that the feature is present in the chip but not implemented yet.

Wifi BLE Coex ESP-NOW
ESP32
ESP32-C2
ESP32-C3
ESP32-C6
ESP32-H2
ESP32-S2
ESP32-S3

Minimum supported Rust compiler version: 1.79.0

Missing / To be done

  • Support for non-open SoftAP

Directory Structure

  • src/timer/: systimer code used for timing and task switching
  • src/preemt/: a bare minimum RISCV and Xtensa round-robin task scheduler
  • src/compat/: code needed to emulate enough of an (RT)OS to use the driver
    • common.rs: basics like semaphores and recursive mutexes
    • timer_compat.rs: code to emulate timer related functionality
  • examples/*.rs: examples

Driver version

This uses the WiFi drivers from https://github.com/esp-rs/esp-wireless-drivers-3rdparty

v5.1.2-602-gdb1e54a0c5-dirty commit db1e54a0c537d8b2cc2bd109ee88b50e1ca0ea80

https://github.com/esp-rs/esp-wireless-drivers-3rdparty/ (commit ca2809144cf6d2f89d413f1d415f1c4454ee6249)

License

Licensed under either of:

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~89MB
~362K SLoC