Skip to main content

improv_wifi/
lib.rs

1//! An implementation of the [Improv Wi-Fi] BLE peripheral protocol for Linux.
2//!
3//! This crate provides the device side of the Improv Wi-Fi configuration protocol via BlueZ's
4//! D-Bus API. It is intended for embedded Linux devices that need to be provisioned onto a Wi-Fi
5//! network without a display or input peripherals.
6//!
7//! [Improv Wi-Fi]: https://www.improv-wifi.com
8#![cfg(target_os = "linux")]
9
10use uuid::Uuid;
11
12mod backend;
13mod bluez;
14mod error;
15pub mod rpc;
16mod service;
17mod state;
18
19#[cfg(feature = "networkmanager")]
20pub mod networkmanager;
21
22pub use backend::{DeviceInfo, Network, WifiConfigurator};
23pub use error::Error;
24pub use service::{
25	AuthHandle, AuthorizeMode, ImprovWifi, ImprovWifiConfig, find_adapter, power_on_adapter,
26};
27pub use state::{Capabilities, Status};
28pub use zbus::{Connection, zvariant::OwnedObjectPath};
29
30pub const SERVICE_UUID: Uuid = Uuid::from_u128(0x00467768_6228_2272_4663_277478268000);
31pub const CHARACTERISTIC_UUID_CAPABILITIES: Uuid =
32	Uuid::from_u128(0x00467768_6228_2272_4663_277478268005);
33pub const CHARACTERISTIC_UUID_CURRENT_STATE: Uuid =
34	Uuid::from_u128(0x00467768_6228_2272_4663_277478268001);
35pub const CHARACTERISTIC_UUID_ERROR_STATE: Uuid =
36	Uuid::from_u128(0x00467768_6228_2272_4663_277478268002);
37pub const CHARACTERISTIC_UUID_RPC_COMMAND: Uuid =
38	Uuid::from_u128(0x00467768_6228_2272_4663_277478268003);
39pub const CHARACTERISTIC_UUID_RPC_RESULT: Uuid =
40	Uuid::from_u128(0x00467768_6228_2272_4663_277478268004);
41
42/// 16-bit Service Data UUID used in BLE advertisements (`0x4677`).
43pub const ADVERTISEMENT_SERVICE_DATA_UUID: Uuid =
44	Uuid::from_u128(0x00004677_0000_1000_8000_00805f9b34fb);