Files
DigiRadio/Software/Firmware/ADAU1701-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
..

ADAU1701 SigmaStudio export

SigmaStudio project DigiRadio, IC1 = ADAU1701. Shipped with DigiRadio firmware 0.8.3.

Key files

File Role
DigiRadio_IC_1.h Program/param RAM data + default_download_IC_1()
DigiRadio_IC_1_REG.h Control register map (safeload trigger)
DigiRadio_IC_1_PARAM.h Parameter cell indices (ADDR_*)
DigiRadio_NetList.xml Schematic netlist (reference)
SigmaStudioFW.h Safeload / I2C glue API

Runtime (fw 0.8.3)

  • Boot: ESP32 replays the active DspProgram over I2C via adau1701::Adau1701Driver on every power-up. Source order: valid blob in the dsp flash partition, else the embedded export from this folder (EmbeddedDspProgramSource).
  • Program update: POST /api/dsp/program with a DRAD v1 blob (see Software/tools/pack_dsp_program.py). Device reboots and loads the new script on next boot.
  • Live control: six-band PEQ, input mixer, master volume, stereo/bass enhancement overlays — safeload via audio::AudioService and REST /api/audio/*; profile persisted in encrypted NVS.
  • Web UI: Audio tab — 6 EQ sliders + mixer/enhance controls.

I2C address: 7-bit 0x34 (ADDR0=ADDR1=GND). Sample rate: 48 kHz.

Safeload implementation: components/drivers/adau1701/src/SigmaStudioFW.c. Parameter map: components/drivers/adau1701/include/adau1701/Adau1701ParamMap.hpp.

After re-exporting from SigmaStudio

  1. Action → Export System Files into this folder (overwrite headers).
  2. Reconcile new ADDR_* symbols in Adau1701ParamMap.hpp if block names moved.
  3. Rebuild and flash firmware (idf.py build).
  4. Update manual: docs/manual/ch-sigmastudio.tex, docs/manual/ch-adau1701.tex.

Do not use SigmaStudio Link Compile Download on DigiRadio — export only; the ESP32 programs the DSP at every power-up.

DRAD v1 blob (flash / HTTP upload)

Layout: magic DRAD, version u16 (=1), write count u16, CRC32 (IEEE over writes section), then for each write: address u16, length u16, data bytes. Pack from JSON with Software/tools/pack_dsp_program.py or use core::serializeDspProgramBlob() in host tests.

Documentation

  • Design: docs/manual/ch-sigmastudio.tex
  • Driver & API: docs/manual/ch-adau1701.tex
  • HTTP: docs/manual/ch-api.tex (/api/audio/*)