Skip to main content

esp_idf_improv_wifi/
lib.rs

1//! `ImprovWiFi` serial provisioning protocol for `esp-idf-svc`.
2//!
3//! This crate implements the [Improv WiFi](https://www.improv-wifi.com/) serial
4//! provisioning protocol, allowing devices to receive Wi-Fi credentials over
5//! a serial (UART) connection from a browser or provisioning tool.
6//!
7//! # Architecture
8//!
9//! The core protocol logic is transport-agnostic — it operates on any
10//! `std::io::Read + Write` stream. An optional `esp-idf-svc` feature flag
11//! provides a UART transport adapter for ESP32.
12
13pub mod packet;
14mod protocol;
15mod types;
16
17#[cfg(feature = "esp-idf-svc")]
18pub mod esp_idf;
19
20// Re-export public API
21pub use packet::ParseError;
22pub use protocol::{ImprovWifi, ImprovWifiBuilder};
23pub use types::{
24    Command, DeviceInfo, ImprovError, ImprovState, PacketType, WifiCredentials, WifiNetwork,
25};
26
27/// Improv serial protocol version.
28pub const PROTOCOL_VERSION: u8 = 1;
29
30/// Packet header bytes: "IMPROV".
31pub const HEADER: [u8; 6] = [0x49, 0x4D, 0x50, 0x52, 0x4F, 0x56];
32
33/// Default UART baud rate for Improv serial.
34pub const DEFAULT_BAUD_RATE: u32 = 115_200;
35
36/// Maximum packet data length (1-byte length field).
37pub const MAX_DATA_LENGTH: usize = 255;