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>
1.0 KiB
1.0 KiB
APP_ARCHITECTURE — igiRadio
Stack
SwiftUI Views
↓ @Observable ViewModels
DigiRadioService (protocol)
↓
RealDigiRadioService ──→ HTTPDigiRadioClient (URLSession)
MockDigiRadioService ──→ dati in-memory
BLEProvisioningService (solo setup Wi‑Fi)
↓ CoreBluetooth + protocomm (ESP Security1)
Principi
- Le View non chiamano URLSession o CoreBluetooth direttamente.
- Un solo
DigiRadioStateosservabile aggiornato dal service. - Errori tipizzati (
DigiRadioError). - Dependency injection via
AppEnvironmentinigiRadioApp.
Connessione
| Fase | Meccanismo |
|---|---|
| Prima configurazione | BLE provisioning oppure join SoftAP + POST /api/wifi |
| Uso normale | mDNS digiradio-xxxxxx.local o IP manuale |
| Base URL | http://{host}/api/... |
Polling vs push
- Nessuna notifica BLE documentata per stato tuner.
TunerViewModelpuò pollareGET /api/tuner/statusa intervallo configurabile quando la schermata radio è attiva.