Add igiRadio iOS/iPadOS app for DigiRadio control.

Introduces a new SwiftUI app with HTTP REST device control, mock mode for UI development, BLE-based discovery, and documented architecture aligned with the firmware API.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-18 15:45:55 +02:00
co-authored by Cursor
parent 3244b9f084
commit 6087bb5297
35 changed files with 4067 additions and 0 deletions
@@ -0,0 +1,45 @@
# BLE_PROTOCOL — igiRadio
## Riepilogo
**DigiRadio non espone un protocollo BLE GATT documentato per il controllo radio/audio.**
Il BLE dell'ESP32-S3 è usato **solo** per il provisioning WiFi (setup iniziale).
---
## BLE WiFi Provisioning (documentato)
| Parametro | Valore |
|-----------|--------|
| Stack | ESP-IDF `wifi_provisioning` + `scheme_ble` |
| Sicurezza | protocomm **Security1** |
| Proof of possession | **Serial number** dispositivo (EUI-48 da EEPROM) |
| Nome advertising | `DigiRadio-<suffix>` (es. `DigiRadio-CC4DB4`) |
| Riferimento firmware | `components/net/src/BleProvisioning.cpp` |
| Riferimento manuale | `ch-api.tex` §BLE provisioning |
### Flusso
1. Dispositivo in setup mode (no credenziali WiFi salvate)
2. Advertise BLE con nome = SoftAP SSID
3. App iOS invia credenziali WiFi via protocomm (Security1 + PoP)
4. Firmware valida, salva in NVS, reboot in STA
5. App passa a controllo via **HTTP** su LAN
### Implementazione igiRadio
- Usare **CoreBluetooth** solo per questa fase
- Compatibile con app generiche "ESP BLE Provisioning" (stesso protocollo Espressif)
- PoP richiesto dall'utente: serial da etichetta o da schermata setup SoftAP
### UNKNOWN
- UUID servizio/caratteristica custom DigiRadio per controllo: **non documentati**
- Notifiche BLE stato tuner: **non documentate**
---
## Controllo dispositivo (post-provisioning)
Vedi `APP_ARCHITECTURE.md` — trasporto **HTTP REST** porta 80.