From 29737d735ad39c8c8407f67ee410726da3fa8f7e Mon Sep 17 00:00:00 2001 From: Peter Woolery Date: Tue, 14 Apr 2026 06:44:06 -0700 Subject: [PATCH] feat: WiFiManager captive portal provisioning Co-Authored-By: Claude Sonnet 4.6 --- firmware/src/provisioning.cpp | 24 ++++++++++++++++++++++++ firmware/src/provisioning.h | 7 +++++++ 2 files changed, 31 insertions(+) create mode 100644 firmware/src/provisioning.cpp create mode 100644 firmware/src/provisioning.h diff --git a/firmware/src/provisioning.cpp b/firmware/src/provisioning.cpp new file mode 100644 index 0000000..8e8d4c6 --- /dev/null +++ b/firmware/src/provisioning.cpp @@ -0,0 +1,24 @@ +// firmware/src/provisioning.cpp +#include "provisioning.h" +#include "config.h" +#include + +bool provisioning_run(uint32_t timeout_ms) { + WiFiManager wm; + wm.setConfigPortalTimeout(timeout_ms / 1000); + wm.setTitle("DoorCounter Setup"); + wm.setCustomHeadElement( + "" + ); + + bool connected = wm.startConfigPortal("DoorCounter-Setup"); + + if (connected) { + config_save_wifi(wm.getWiFiSSID(), wm.getWiFiPass()); + } + return connected; +} diff --git a/firmware/src/provisioning.h b/firmware/src/provisioning.h new file mode 100644 index 0000000..b20628c --- /dev/null +++ b/firmware/src/provisioning.h @@ -0,0 +1,7 @@ +// firmware/src/provisioning.h +#pragma once +#include + +// Start WiFi captive portal AP and block until user submits credentials +// or timeout_ms elapses. Returns true if WiFi credentials were saved. +bool provisioning_run(uint32_t timeout_ms = 5 * 60 * 1000);