Add internet radio streaming with runtime API, modernize web UI, remove auto-tune/beep at boot
Streaming (main feature this session): - New WebRadioConfig/WebRadioJson core types, ISecureStore-backed persistence - New webradio::WebRadioService (thread-safe live config) + GET/POST /api/streaming - web_radio_stream task now runtime-toggleable (no reboot), no hardcoded URL - Content-Type diagnostic: warns clearly when a URL is a webpage, not an audio stream Boot cleanup: - Removed boot-time auto FM/DAB tune, auto-beep, and the (now-concluded) Si4684 crystal IBIAS/CTUN empirical sweep from main.cpp — tuning/beep are on-demand via the existing REST API only Web UI: - Modernized styling (cards, gradients, toggle switches, light/dark theme) - New Stream tab wired to /api/streaming Fixes found via real idf.py build (not just clangd): - Restored wrongly-removed si4684/Si4684Tuner.hpp include in main.cpp - Fixed MP3Decode() argument types in web_radio_stream.cpp (unsigned char**/int*) Quality-gate fixes: - Host-test stub headers (esp_log.h, freertos/*) so TunerService.cpp's scanForStation logging/pacing compiles for station_service_test / integration_service_test instead of running stale binaries - Added WifiScanner and WebRadioService manual sections; filled in missing Doxygen docs on BluetoothService, i2s_sdata_probe, test_firmware, Bt1035At - Ignore clangd's .cache/ index directory Also includes prior uncommitted work carried in the tree: Wi-Fi/Bluetooth device scan REST API and UI (WifiScanner, BT scan), SigmaStudio TCP bridge, and the current ADAU1701 SigmaStudio DSP program export. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
+13
@@ -0,0 +1,13 @@
|
||||
# Manuale di Integrazione Hardware FSC-BT1035
|
||||
|
||||
## 1. Architettura di Connessione
|
||||
Il modulo FSC-BT1035 deve essere integrato seguendo rigorosamente le indicazioni di Feasycom per evitare degrado del segnale RF:
|
||||
- **Pin 34 (SYS_CTRL)**: Richiede un segnale di accensione (>20ms). È consigliato un circuito di controllo tramite il controller DigiRadio.
|
||||
- **Pin 16 (BT_RTS/PIO2)**: Utilizzato nativamente per il MUTE degli stadi di potenza. Integrare questa funzione nel sistema di amplificazione del DigiRadio.
|
||||
- **Audio I/O**: Le uscite `SPK_P/N` sono differenziali. Per il collegamento al DSP ADAU1701:
|
||||
- Utilizzare uno stadio di ingresso con op-amp (es. AD8608 come da datasheet ADAU1701) per convertire il segnale differenziale in singolo (o mantenere il bilanciamento se l'ingresso DSP lo permette).
|
||||
- Impedenza: Assicurarsi di rispettare i filtri RC per il passaggio basso (corner 50kHz) per eliminare il noise del codec Bluetooth.
|
||||
|
||||
## 2. Note di Layout (Critiche)
|
||||
- **Clearance Antenna**: Rispettare rigorosamente l'area di "Keep Out" (5mm clearance) attorno all'antenna PCB integrata, come indicato nel documento `FSC-BT1035 Datasheet` (sezione 9).
|
||||
- **Grounding**: Utilizzare una via stitching densa attorno al modulo per connettere i piani di massa e prevenire leakage RF nel PCB del DigiRadio.
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
# Guida alla Configurazione Firmware
|
||||
|
||||
## 1. Analisi file DigiRadio.params
|
||||
Il file `DigiRadio.params` analizzato suggerisce parametri di inizializzazione specifici per l'interfacciamento del modulo. Durante il boot, il controller DigiRadio deve:
|
||||
1. Inviare `AT+VER` per identificare la versione del modulo (es. V2.6.1).
|
||||
2. Caricare i profili: `AT+PROFILE=341` (combinazione SPP, GATT Server, GATT Client, A2DP Source, ecc.).
|
||||
3. Configurare la modalità I2S se il flusso audio è digitale (`AT+I2SCFG`):
|
||||
- Impostare `Param=67` per I2S Slave, 48kHz, 32-bit (o come richiesto dall'ADAU1701).
|
||||
|
||||
## 2. Gestione Profili
|
||||
Il modulo supporta le topologie miste. È possibile mantenere simultaneamente una connessione A2DP (Audio Source) e una GATT (Data).
|
||||
- Nota: Per il passaggio tra le modalità, interrogare sempre lo stato tramite `AT+STAT` prima di tentare nuove connessioni.
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
# Deep Dive Comandi AT e Gestione Eventi
|
||||
|
||||
## 1. Protocollo Comunicazione
|
||||
Il modulo risponde in formato ASCII. Ogni stringa inizia con `
|
||||
` (0x0D 0x0A).
|
||||
- Esempio Parsing:
|
||||
Se il controller riceve `+SPPDATA=10,ABCDEFGHIJ`, il parser deve estrarre il valore `10` come lunghezza e gestire il buffer dei successivi 10 caratteri.
|
||||
|
||||
## 2. Throughput Mode (TPMODE)
|
||||
Per applicazioni ad alto volume dati (es. aggiornamento firmware del DigiRadio via Bluetooth):
|
||||
1. Inviare `AT+TPMODE=1`.
|
||||
2. A questo punto, il modulo cessa di interpretare i comandi AT e inoltra ogni byte ricevuto sulla UART direttamente nel link radio (SPP/GATT).
|
||||
3. Per tornare in modalità comando, è necessario inviare una sequenza di escape definita nel firmware o resettare il modulo.
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
# Integrazione DSP ADAU1701
|
||||
|
||||
Il collegamento BT1035 -> ADAU1701 può avvenire in due modi:
|
||||
1. **Digitale (I2S)**:
|
||||
- BT1035 (Master/Slave) -> SDATA_IN0 (ADAU1701).
|
||||
- Configurazione ADAU: Impostare `MP4/MP5` come ingressi I2S (LRCLK/BCLK).
|
||||
- Assicurarsi che il sample rate del modulo Bluetooth (`AT+I2SCFG`) corrisponda al clock configurato nell'ADAU tramite il software SigmaStudio.
|
||||
|
||||
2. **Analogico**:
|
||||
- Uscite differenziali BT1035 (`SPK_P/N`) -> ingressi ADC `ADC0/1`.
|
||||
- Utilizzare il filtro passivo di ricostruzione consigliato dal datasheet dell'ADAU1701 (50kHz corner) per evitare aliasing dovuto al campionamento del DAC interno del Bluetooth.
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
# Mapping Risorse DigiRadio
|
||||
|
||||
Analisi dei file del progetto DigiRadio:
|
||||
- `DigiRadio_IC_1.h`: Mappatura dei registri del controller per il modulo IC.
|
||||
- `DigiRadio_IC_1_REG.h`: Definizione dei registri di configurazione (probabilmente relativi alla configurazione I2C del modulo Bluetooth).
|
||||
- `DigiRadio.xml`: Descriptor di sistema utilizzato dal software di configurazione/test del progetto DigiRadio.
|
||||
|
||||
Il modulo BT1035 deve essere mappato nell'indirizzo di registro 0x68 (default I2C) se il controller agisce come master I2C sul bus del modulo. Verificare che il pin `ADDRO` sia configurato correttamente in base alla netlist fornita.
|
||||
Reference in New Issue
Block a user