Files
DigiRadio/Software/APP/igiRadio/Documentation/APP_ARCHITECTURE.md
T
micheleandCursor 6087bb5297 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>
2026-08-18 15:45:55 +02:00

36 lines
1.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# APP_ARCHITECTURE — igiRadio
## Stack
```
SwiftUI Views
↓ @Observable ViewModels
DigiRadioService (protocol)
RealDigiRadioService ──→ HTTPDigiRadioClient (URLSession)
MockDigiRadioService ──→ dati in-memory
BLEProvisioningService (solo setup WiFi)
↓ CoreBluetooth + protocomm (ESP Security1)
```
## Principi
1. Le View **non** chiamano URLSession o CoreBluetooth direttamente.
2. Un solo `DigiRadioState` osservabile aggiornato dal service.
3. Errori tipizzati (`DigiRadioError`).
4. Dependency injection via `AppEnvironment` in `igiRadioApp`.
## 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.
- `TunerViewModel` può pollare `GET /api/tuner/status` a intervallo configurabile quando la schermata radio è attiva.