Skip to main content

esp_idf_svc/
lib.rs

1//! This crate contains wrappers which are mostly implementations of the
2//! abstractions defined in the [embedded-svc](../embedded_svc/index.html)
3//! project. It has features such as wifi, networking, httpd, logging.
4//!
5//! ## Features
6//!
7//! This crate specifies a few cargo features, including:
8//!
9//! - `std`: Enable the use of std. Enabled by default.
10//! - `experimental`: Enable the use of experimental features.
11//! - `embassy-time-driver`: Implement an embassy time driver.
12#![no_std]
13#![allow(async_fn_in_trait)]
14#![allow(unknown_lints)]
15#![allow(renamed_and_removed_lints)]
16#![allow(unexpected_cfgs)]
17#![warn(clippy::large_futures)]
18
19#[cfg(feature = "std")]
20#[allow(unused_imports)]
21#[macro_use]
22extern crate std;
23
24#[cfg(feature = "alloc")]
25#[allow(unused_imports)]
26#[macro_use]
27extern crate alloc;
28
29#[cfg(all(
30    not(any(esp32s2, esp32p4)),
31    esp_idf_bt_enabled,
32    esp_idf_bt_nimble_enabled,
33    feature = "alloc",
34))]
35pub mod ble;
36#[cfg(all(
37    not(any(esp32s2, esp32p4)),
38    esp_idf_bt_enabled,
39    esp_idf_bt_bluedroid_enabled,
40    feature = "alloc",
41))]
42pub mod bt;
43#[cfg(all(
44    feature = "alloc",
45    any(
46        all(not(any(esp32h2, esp32h4, esp32p4)), esp_idf_comp_esp_wifi_enabled),
47        esp_idf_comp_espressif__esp_wifi_remote_enabled
48    ),
49    esp_idf_comp_esp_event_enabled,
50))]
51pub mod espnow;
52#[cfg(all(
53    feature = "alloc",
54    esp_idf_comp_esp_eth_enabled,
55    esp_idf_comp_esp_event_enabled,
56))]
57#[cfg(any(
58    // On-chip EMAC (ESP32); RMII PHYs such as lan87xx are used only with EMAC
59    all(esp32, esp_idf_eth_use_esp32_emac),
60    any(
61        esp_idf_eth_spi_ethernet_dm9051,
62        esp_idf_eth_spi_ethernet_w5500,
63        esp_idf_eth_spi_ethernet_ksz8851snl,
64        // ESP-IDF 6.0+ ships SPI Ethernet PHYs as managed components
65        esp_idf_comp_espressif__dm9051_enabled,
66        esp_idf_comp_espressif__w5500_enabled,
67        esp_idf_comp_espressif__ksz8851snl_enabled,
68    ),
69    esp_idf_eth_use_openeth,
70))]
71pub mod eth;
72#[cfg(all(feature = "alloc", esp_idf_comp_esp_event_enabled))]
73pub mod eventloop;
74pub mod fs;
75pub mod hal;
76pub mod handle;
77#[cfg(feature = "alloc")]
78pub mod http;
79pub mod io;
80pub mod ipv4;
81#[cfg(feature = "alloc")]
82pub mod log;
83#[cfg(all(
84    feature = "alloc",
85    any(esp_idf_comp_mdns_enabled, esp_idf_comp_espressif__mdns_enabled)
86))]
87pub mod mdns;
88#[cfg(all(
89    feature = "alloc",
90    any(esp_idf_comp_mqtt_enabled, esp_idf_comp_espressif__mqtt_enabled),
91    esp_idf_comp_esp_event_enabled
92))]
93pub mod mqtt;
94#[cfg(esp_idf_lwip_ipv4_napt)]
95pub mod napt;
96#[cfg(all(feature = "alloc", esp_idf_comp_esp_netif_enabled))]
97pub mod netif;
98#[cfg(all(feature = "alloc", esp_idf_comp_nvs_flash_enabled))]
99pub mod nvs;
100#[cfg(all(
101    esp_idf_comp_app_update_enabled,
102    any(esp_idf_comp_spi_flash_enabled, esp_idf_comp_esp_partition_enabled)
103))]
104pub mod ota;
105#[cfg(any(esp_idf_comp_spi_flash_enabled, esp_idf_comp_esp_partition_enabled))]
106pub mod partition;
107#[cfg(esp_idf_comp_esp_netif_enabled)]
108pub mod ping;
109#[cfg(all(feature = "alloc", esp_idf_comp_esp_netif_enabled))]
110pub mod sntp;
111pub mod sys;
112pub mod systime;
113#[cfg(all(
114    feature = "alloc",
115    esp_idf_comp_openthread_enabled,
116    esp_idf_openthread_enabled,
117    esp_idf_comp_esp_event_enabled,
118    esp_idf_comp_nvs_flash_enabled,
119    esp_idf_comp_vfs_enabled,
120))]
121pub mod thread;
122#[cfg(all(feature = "alloc", esp_idf_comp_esp_timer_enabled))]
123pub mod timer;
124pub mod tls;
125#[cfg(all(
126    feature = "alloc",
127    any(
128        all(not(any(esp32h2, esp32h4, esp32p4)), esp_idf_comp_esp_wifi_enabled),
129        esp_idf_comp_espressif__esp_wifi_remote_enabled
130    ),
131    esp_idf_comp_esp_event_enabled,
132))]
133pub mod wifi;
134pub mod ws;
135
136mod private;