Skip to content

Commit f976d7e

Browse files
committed
Compatibility with ESP-IDF 5.4.x, 5.5.x and master
1 parent c668fcb commit f976d7e

8 files changed

Lines changed: 34 additions & 28 deletions

File tree

.cargo/config.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ rustflags = ["--cfg", "espidf_time64"]
2525

2626
[env]
2727
ESP_IDF_SDKCONFIG_DEFAULTS = ".github/configs/sdkconfig.defaults"
28-
ESP_IDF_VERSION = "v5.3.2"
28+
ESP_IDF_VERSION = "v5.4.2"
2929
#ESP_IDF_VERSION = "release/v5.3" Necessary for `Thread::stop`
3030

3131
[unstable]

.github/workflows/ci-esp-idf-next.yml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,6 @@ jobs:
2525
- xtensa-esp32s2-espidf
2626
- xtensa-esp32s3-espidf
2727
idf-version:
28-
- release/v5.3
29-
- release/v5.4
30-
- release/v5.5
3128
- master
3229
steps:
3330
- name: Setup | Checkout

.github/workflows/ci.yml

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,11 @@ jobs:
2727
- xtensa-esp32s2-espidf
2828
- xtensa-esp32s3-espidf
2929
idf-version:
30-
- v4.4.8
31-
- v5.1.2
32-
- v5.2.3
33-
- v5.3.2
30+
- release/v5.1
31+
- release/v5.2
32+
- release/v5.3
33+
- release/v5.4
34+
- release/v5.5
3435
steps:
3536
- name: Setup | Checkout
3637
uses: actions/checkout@v3

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
3030
- Thread support is no longer behind the `experimental` feature
3131

3232
### Added
33+
- Compatibility with ESP-IDF V5.4.x and V5.5.x
3334
- Logging configuration enhanced with a simpler setup where Rust logs can be configured to have a verbosity which is
3435
disconnected from the verbosity of the ESP-IDF native C logging (#593)
3536
- OTA: New method - `EspFirmwareInfoLoad::fetch_native` - returning the full native ESP-IDF image descriptor structures

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ rust-version = "1.82"
1717

1818
[patch.crates-io]
1919
esp-idf-sys = { git = "https://github.com/esp-rs/esp-idf-sys" }
20-
esp-idf-hal = { git = "https://github.com/esp-rs/esp-idf-hal" }
20+
esp-idf-hal = { git = "https://github.com/esp-rs/esp-idf-hal", branch = "new-esp-idf-vers-compat" }
2121

2222
[lib]
2323
harness = false

src/espnow.rs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -218,8 +218,16 @@ impl<'a> EspNow<'a> {
218218
Ok(())
219219
}
220220

221-
extern "C" fn send_callback(mac_addr: *const u8, status: esp_now_send_status_t) {
222-
let c_mac = unsafe { core::slice::from_raw_parts(mac_addr, 6usize) };
221+
extern "C" fn send_callback(
222+
#[cfg(esp_idf_version_at_least_5_5_0)] tx_info: *const esp_now_send_info_t,
223+
#[cfg(not(esp_idf_version_at_least_5_5_0))] dst_addr: *const u8,
224+
status: esp_now_send_status_t,
225+
) {
226+
#[cfg(esp_idf_version_at_least_5_5_0)]
227+
let c_mac = unsafe { core::slice::from_raw_parts((*tx_info).des_addr, 6usize) };
228+
229+
#[cfg(not(esp_idf_version_at_least_5_5_0))]
230+
let c_mac = unsafe { core::slice::from_raw_parts(dst_addr, 6usize) };
223231

224232
if let Some(ref mut callback) = *SEND_CALLBACK.lock() {
225233
callback(c_mac, status.into())

src/http/client.rs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,16 @@ impl EspHttpConnection {
141141
if let (Some(cert), Some(private_key)) =
142142
(configuration.client_certificate, configuration.private_key)
143143
{
144-
native_config.client_cert_pem = cert.as_esp_idf_raw_ptr() as _;
144+
#[cfg(esp_idf_version_at_least_5_5_0)]
145+
{
146+
native_config.__bindgen_anon_2.client_cert_pem = cert.as_esp_idf_raw_ptr() as _;
147+
}
148+
149+
#[cfg(not(esp_idf_version_at_least_5_5_0))]
150+
{
151+
native_config.client_cert_pem = cert.as_esp_idf_raw_ptr() as _;
152+
}
153+
145154
native_config.client_cert_len = cert.as_esp_idf_raw_len();
146155

147156
native_config.client_key_pem = private_key.as_esp_idf_raw_ptr() as _;

src/thread.rs

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1192,25 +1192,15 @@ where
11921192
}
11931193

11941194
#[allow(unused_mut)]
1195+
#[allow(unused_assignments)]
11951196
let mut stop_supported = false;
11961197

11971198
#[cfg(any(
1198-
not(any(esp_idf_version_major = "4", esp_idf_version_major = "5")),
1199-
all(
1200-
esp_idf_version_major = "5",
1201-
not(any(
1202-
esp_idf_version = "5.0",
1203-
esp_idf_version = "5.1",
1204-
esp_idf_version = "5.2",
1205-
esp_idf_version_full = "5.3.0",
1206-
esp_idf_version_full = "5.3.1",
1207-
esp_idf_version_full = "5.3.2",
1208-
esp_idf_version_full = "5.3.3",
1209-
esp_idf_version_full = "5.4.0",
1210-
esp_idf_version_full = "5.4.1",
1211-
esp_idf_version_full = "5.4.2",
1212-
))
1213-
)
1199+
esp_idf_version_at_least_5_5_0,
1200+
all(esp_idf_version = "5.1", esp_idf_version_at_least_5_1_7),
1201+
all(esp_idf_version = "5.2", esp_idf_version_at_least_5_2_6),
1202+
all(esp_idf_version = "5.3", esp_idf_version_at_least_5_3_4),
1203+
all(esp_idf_version = "5.4", esp_idf_version_at_least_5_4_3)
12141204
))]
12151205
{
12161206
unsafe {

0 commit comments

Comments
 (0)