Files
DigiRadio/Software/Firmware
micheleandClaude Sonnet 5 6f7b6dd12c 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>
2026-08-08 21:15:22 +02:00
..

DigiRadio — companion-chip firmware assets

Binary and SigmaStudio exports loaded by the ESP32 at every boot (fw 0.8.3).

Directory Chip In git? Loaded by
ADAU1701-Firmware/ ADAU1701 SigmaDSP Yes (headers) Adau1701Driver — RAM program every boot
Si4684-Firmware/ Si4684 DAB+/FM README only Si4684Driver — HOST_LOAD embedded blobs

Before first device build

Si4684 application images are proprietary and gitignored. Populate locally:

cd Software
python3 tools/fetch_si4684_firmware.py --dab-only
python3 tools/fetch_si4684_firmware.py --si46xx-dir /path/to/si46xx_firmware
python3 tools/check_si4684_blobs.py
ls Firmware/Si4684-Firmware/*.bin   # expect 3 files

Without blobs, idf.py build fails at embed/link time.

Full procurement and legal notes: Si4684-Firmware/README.md.

Si4684 blobs

File Role
rom_patch_016.bin ROM patch (HOST_LOAD before main image)
dab_firmware.bin DAB+ application (PE5PVB / Skyworks)
fm_firmware.bin FM application (Skyworks eval or community source)

Boot sequence: AN649 — POWER_UP → LOAD_INIT → HOST_LOAD(patch) → LOAD_INIT → HOST_LOAD(image) → BOOT.

ADAU1701 export

SigmaStudio project DigiRadio — exported headers replayed over I2C on every boot (no self-boot EEPROM). Runtime EQ/mixer/enhancements via safeload and the Web UI Audio tab (/api/audio/*).

Details: ADAU1701-Firmware/README.md · manual: docs/manual/ch-adau1701.tex, docs/manual/ch-sigmastudio.tex.

Security note

User settings (Wi-Fi, presets, audio profiles) live in encrypted NVS, not in this folder. See docs/security-flash-nvs.md.