fix(ios): scan for both Base and Alt BLE service UUIDs - #26
Conversation
The firmware publishes two distinct 128-bit service UUIDs depending on which mode is active: - e2e5e5e0-1234-5678-1234-56789abcdef0 (Base) Used by startBleServer() for runtime control (motion, avatar, RGB...) - e2e5e5ff-1234-5678-1234-56789abcdef0 (Alt) Used by startAppConfigServer() for Wi-Fi provisioning / pairing iOS scanForPeripherals(withServices:) only returns devices whose adv payload contains the requested UUIDs, so scanning only the Base UUID means the app is blind to the device whenever it is in Setup/pairing mode - which is exactly when the app needs to connect to it. Add both UUIDs to targetServiceUUIDs so the scan succeeds in either mode. Observed behaviour before: BLE scan silently matched nothing, user stays on "device offline" screen forever after scanning the QR.
|
Hi 👋 — closing this PR as fixed-by-replacement. The upstream merged commit I've preserved the Swift-based patches on a dedicated branch Happy to re-open or re-submit against the Flutter codebase if useful. Thanks for the review on the merged firmware PRs (#20/#21/#24) 🙏 |
The firmware publishes two distinct 128-bit service UUIDs depending on
which mode is active:
e2e5e5e0-1234-5678-1234-56789abcdef0 (Base)
Used by startBleServer() for runtime control (motion, avatar, RGB...)
e2e5e5ff-1234-5678-1234-56789abcdef0 (Alt)
Used by startAppConfigServer() for Wi-Fi provisioning / pairing
iOS scanForPeripherals(withServices:) only returns devices whose adv
payload contains the requested UUIDs, so scanning only the Base UUID
means the app is blind to the device whenever it is in Setup/pairing
mode - which is exactly when the app needs to connect to it.
Add both UUIDs to targetServiceUUIDs so the scan succeeds in either
mode. Observed behaviour before: BLE scan silently matched nothing,
user stays on "device offline" screen forever after scanning the QR.