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,58 @@
# DEVELOPMENT — igiRadio
## Requisiti
- macOS con **Xcode 15+** (testato Xcode 26.6)
- iOS 17+ deployment target
- Dispositivo DigiRadio su stessa rete WiFi (STA) o in setup SoftAP
## Aprire il progetto
```bash
open /Users/michelebigi/Documents/Develop/DigiRadio/Software/APP/igiRadio/igiRadio.xcodeproj
```
Rigenerare il progetto (se necessario):
```bash
cd Software/APP/igiRadio
python3 Scripts/generate_xcodeproj.py
```
## Build e test da terminale
```bash
cd Software/APP/igiRadio
xcodebuild -scheme igiRadio -destination 'platform=iOS Simulator,name=iPhone 17' build test
```
## Scheme
- **igiRadio** — app principale
- **igiRadioTests** — unit test protocollo e state
## Mock vs reale
In **DEBUG**, `AppEnvironment` avvia in modalità mock (`MockDigiRadioService`).
Disattivare in **Connessione → Modalità demo (Mock)** e inserire l'host HTTP reale.
## Test su hardware
1. Provisioning WiFi (BLE discovery in-app, o app ESP BLE Provisioning; oppure SoftAP `http://192.168.4.1`)
2. In app: Impostazioni → Connessione → host `http://digiradio-<suffix>.local`
3. Verificare `GET /api/health`
## Documentazione firmware
`/Users/michelebigi/Documents/Develop/DigiRadio/Software/docs/manual/ch-api.tex`
## Architettura runtime
```
SwiftUI → ViewModel → DigiRadioService
├── RealDigiRadioService → HTTPDigiRadioClient (REST JSON)
└── MockDigiRadioService
BLEProvisioningService (CoreBluetooth, solo discovery setup)
```
Il controllo tuner/audio **non** usa GATT proprietario — vedi `BLE_PROTOCOL.md`.