All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Add raw bindings for
sdio_slave.h
for all targets that support it and addonewire_bus.h
(#322) - Add raw bindings for
onewire_device.h
- Add raw bindings for
esp_netif_ppp.h
- Add raw bindings for
esp_efuse_table.h
,esp_https_ota.h
- Add raw bindings for OpenThread (#339)
- Add raw bindings to the internal DNS resolver API. (#340)
- Add raw bindings for
esp_littlefs.h
- Add raw bindings for
esp_netif_br_glue.h
- Add raw bindings to the
mbedtls
API - Use clang from ESP-IDF when possible
- Fix rust-analyzer by not using rust libtest harness
- Fix a typo in
BUILD-OPTIONS.md
- Bugfix: date and time were swapped in the generated esp_app_desc_t
- Update to the latest-released cmake-rs fixing build issues on MacOS
- Raise recommended ESP IDF to 5.2.3; always print recommended build versions; exclude master and release branches from the recommendation
- Fix the build against ESP-IDF master by installing the ROM ELFs
- Support for building on nix (ESP-IDF no longer needs to be a GIT repo) (#353, #356)
ESP-IDF v4.4 Please start upgrading to ESP-IDF v5.
- removed: ESP-IDF v4.3 support - including code and patches. (#305)
- removed: Unused esp8266 rtos sdk (#305)
- EspError now implements
Debug
and provides a human readable error code. (#294) bindgen
dependancy updated to the latest release version. (#304)
- Include new dac_oneshot and dac_continous headers in default bindings.h. (#289)
- Include new i2c headers in default bindings.h. (#290)
- Include new rmt headers in default bindings.h.
- Include usb-serial-jtag header. (#317)
- Building against esp-idf >= v5.3 by adding additional conditions on the esp_lcd headers. Note that "esp_lcd_panel_rgb.h" was removed upstream since idf 5.3. (#303)
- Fix clippy duplicate imports warnings with latest 1.78 nightly
- First
esp-idf-sys
examples:std_basics
: "Hello world" withprintln!
and other types available in the Rust Standard Library like threads, atomics, local storage, collections, etc.unsafe_call
: Calling an ESP IDF custom API using the unsafe bindings generated byesp-idf-sys
- All FreeRTOS headers are now included, so user should get unsafe bindings for all FreeRTOS APIs which are not macros
- Changes to how native vs PlatformIO build is selected, that are supposed to increase the ergonomics of using the crate:
- Perform PlatformIO build only when the
pio
feature IS specified, and thenative
feature is NOT specified - In case neither the
native
nor thepio
feature is specified, perform a native build (this setup used to fail the build) - In case both the
native
andpio
features are specified, perform a native build as well (this setup used to perform a PlatformIO build)
- Perform PlatformIO build only when the
- When both
binstart
andlibstart
features are selected,binstart
takes precedence overlibstart
- #264 - Copy the bootloader and partition table binaries to the target folder
- #262 - Bindings for the
esp_lcd
driver component - #259 - Bindings for the temperature sensor driver
- #261 - Build time optimization - do not download Rust crates not needed for the host platform
- #257 - Make builds utilizing the
esp_app_desc
component reproducible - (Bugfix) Re-expose raw bindings for the
esp_flash
component on ESP IDF 5+
- Workaround for esp-rs/esp-idf-svc#312
- Include gptimer headers (#255)
- Export esp_netif_sntp APIs from esp-idf 5.1
- Fix compile error for esp32c6 with NimBLE
- Support for the symlink to xtensa Clang library installed by latest
espup
(esp-idf-svc issue 319)
- Support for latest ESP IDF 5.2 dev (master)
- The
MCU
environment variable was failing thepio
build if the MCU was not uppercased - Better error message for the
native
build in case the MCU was not recognized
- Support for ESP IDF Component Manager - check the documentation in BUILD-OPTIONS.md
- ESP32H2 and ESP32C5 now properly assigned to the
riscv32imac-esp-espidf
- All ESP IDF WPA supplicant APIs exposed
- Build is now checking for the presence of certain environment variables (e.g. CXXFLAGS) that might fail the ESP IDF C build and removing those
- Build is now checking if the project path might fail the ESP IDF C build (i.e. too long on Windows or containing spaces on Unix) and failing if so
- Band-aid solution that fixes the build with recent Rust nightlies and ESP IDF < 5.1 (esp-rs/esp-idf-template#149)
- Raw bindings for the continuous ADC driver (ESP IDF >= 5.0)
- Raw bindings for bootloader random functions
- Raw bindings for all available classic BT APIs
- Raw bindings for esp_freertos_hooks.h
- Raw bindings for the I2S driver
- Raw bindings for CRC ROM functions
- (In theory) no API breakage, yet the minor version is raised just in case
- Support for new chips: esp32c2, esp32h2, esp32c6 and future proofed for esp32c5 and esp32p4
- Support for ESP IDF 5.0, 5.1 and 5.2 (master)
- New raw bindings: esp-transport, himem, psram, esp-dpp, i2s, a2dp, wpa2
- Fix an erroneous cast to
u32
inEsp32Alloc
, causingno_std
builds using the allocator to fail (#158) - Apply Niche optimization to
EspError
(NonZeroI32
), addfrom_infallible
associated function, (#159)
- Remove the custom
c_types
module in favor ofcore::ffi
- Switch to
embuild
0.31 andbindgen
0.63. Since 0.61,bindgen
has the--size_t-is-usize
flag is enabled by default. This removes a lot of unnecessary casting fromusize
tou32
and makes theesp-idf-sys
bindings more ergonomic