
* feat: (WIP) add CSI api * feat: Enable G_CONFIG.csi_enable and update example * fix: Allow user to set the dessired cb method * fix: Clippy warnings * fix: Add missing doccomments * feat: Add csi_enable config * refactor: Update CsiConfiguration c6 struct * feat: Create set_csi WifiController and EspNowManager methods * docs: Update changelog * refactor: Rename CsiConfig struct * docs: Document c6 version of CsiConfig * feat: impl From<CsiConfig> for crate::include::wifi_csi_config_t * style: Rustfmt * docs: Fix comment Co-authored-by: Dániel Buga <bugadani@gmail.com> * docs: Fix typo Co-authored-by: Juraj Sadel <jurajsadel@gmail.com> * feat: Enable CSI on examples by default * feat: Handle errors * style: Rustfmt * feat: Update error * feat: Panic if csi config is not enabled * feat: Cfg CSI stuff when CSI is disabled instead of panicing * fix: Clippy lints * feat: Fix signed bitfields * feat: Pass the cb via ctx * feat: Update CSI callback to use closures * refactor: Rename promiscuous_csi_rx_cb to csi_rx_cb * feat: Move extra boxing inside set_receive_cb * feat: Refactor CSI callback to use generic types * refactor: Remove Sized bound from CsiCallback trait * feat: Add csi_enable field to EspWifiConfig and update CsiCallback trait for conditional compilation * feat: Remove unnecessary boxes * feat: Update callback type in set_csi to require Send trait Co-authored-by: Dominic Fischer <14130965+Dominaezzz@users.noreply.github.com> --------- Co-authored-by: Dániel Buga <bugadani@gmail.com> Co-authored-by: Juraj Sadel <jurajsadel@gmail.com> Co-authored-by: Dominic Fischer <14130965+Dominaezzz@users.noreply.github.com>
esp-wifi
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 switchingsrc/preemt/
: a bare minimum RISCV and Xtensa round-robin task schedulersrc/compat/
: code needed to emulate enough of an (RT)OS to use the drivercommon.rs
: basics like semaphores and recursive mutexestimer_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:
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
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.