Wraps ESP-IDF's official wifi_provisioning manager (BLE transport, protocomm Security1, NimBLE host) so a phone can join the device to Wi-Fi over the ESP32-S3's own onboard BLE radio, without first connecting to the 192.168.4.1 SoftAP. Chosen over a custom GATT service specifically so the existing generic "ESP BLE Provisioning" iOS/Android apps work today, before the dedicated DigiRadio app exists — same standard protocol either app would speak. net::ble_provisioning::start() is additive, not a replacement: it runs next to the current SoftAP + POST /api/wifi HTTP route inside NetBootstrap's startSetupMode(), and failing to start it is non-fatal (same pattern already used there for the SigmaStudio TCP bridge) — SoftAP setup keeps working either way. Proof-of-possession is the device's own serial number (same source as the SoftAP SSID), so pairing requires reading it off the unit rather than being wide open. On WIFI_PROV_CRED_SUCCESS the received wifi_sta_config_t is converted to the same core::WifiCredentials type the HTTP handler uses and saved through the same ISecureStore, then the device reboots into STA mode — one persistence path regardless of which transport provisioned it. BT1035 is unaffected: it's a separate UART-attached classic Bluetooth module for A2DP output. This uses the ESP32-S3's independent internal BLE controller, switched to NimBLE (smaller footprint than Bluedroid, the only host stack needed for a single peripheral-role GATT service). App binary still has 33% free flash after pulling in wifi_provisioning/protocomm/NimBLE. Verified: idf.py build, doxygen (0 warnings), check-manual-sync, check_si4684_blobs, ctest (19/19) all green. Not yet tested with a real BLE provisioning app or on hardware — board is disconnected this session. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0178rASQ6ZETPMUamvpoR2KR
17 lines
599 B
CMake
17 lines
599 B
CMake
idf_component_register(
|
|
SRCS
|
|
"src/SoftApConfig.cpp"
|
|
"src/SoftApHost.cpp"
|
|
"src/StaClient.cpp"
|
|
"src/SetupWebServer.cpp"
|
|
"src/SigmaStudioTcpServer.cpp"
|
|
"src/WifiScanner.cpp"
|
|
"src/NetBootstrap.cpp"
|
|
"src/BleProvisioning.cpp"
|
|
INCLUDE_DIRS "include"
|
|
EMBED_FILES "www/index.html.gz"
|
|
REQUIRES core esp_wifi esp_netif esp_event nvs_flash esp_http_server mdns lwip secure_store tuner audio bluetooth station integration ota bt1035 adau1701 webradio wifi_provisioning
|
|
)
|
|
|
|
target_compile_features(${COMPONENT_LIB} PUBLIC cxx_std_23)
|