Files
DigiRadio/Software
micheleandCursor 1c38ac6f08 Refresh root and Software README for fw 0.8.1 progress.
Document firmware capabilities, version milestones, CI, API summary, and updated project structure after integration service and metadata work.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-07 00:26:34 +02:00
..
2026-07-06 01:12:37 +02:00
2026-07-06 15:15:38 +00:00
2026-07-06 07:22:56 +02:00
2026-07-06 01:12:37 +02:00
2026-07-06 01:12:37 +02:00

DigiRadio Firmware

Open-source Hi-Fi DAB+/FM receiver firmware for the ESP32-S3.

Status: fw 0.8.1IntegrationService (boot preset recall, tune + audio profile); RDS/DLS now-playing metadata; 13 host tests; CI on main. See docs/TODO.md for the agent task list.

Quick start

Open this directory (Software/) as the Cursor project so AGENTS.md and .cursor/rules/ load automatically.

idf.py set-target esp32s3
idf.py build
idf.py -p <port> flash monitor

Host unit tests (pure core, no hardware):

cmake -S components/core/test -B build-host \
      -DCMAKE_CXX_COMPILER="$(brew --prefix llvm)/bin/clang++"
cmake --build build-host
ctest --test-dir build-host --output-on-failure

Documentation gates (must exit 0 before merging; also enforced in CI):

doxygen Doxyfile
python3 tools/check-manual-sync.py

Manual PDF (design + HTTP API + class reference):

cd docs/manual && latexmk -lualatex manual.tex

HTTP API (fw 0.8.1)

Method Path Purpose
GET /api/health Status, firmware version, companion-chip flags
POST /api/wifi Provision STA credentials; reboot on success
GET /api/tuner/status Tuner snapshot (DAB/FM, RDS/DLS metadata)
GET /api/tuner/services DAB service list for current ensemble
POST /api/tuner/tune Tune DAB ensemble or FM frequency
POST /api/tuner/play Start DAB service playback
POST /api/tuner/seek FM seek up
GET/PUT /api/audio/profile Read/apply ADAU1701 mixer + EQ profile
POST /api/audio/reset Factory-flat audio profile
POST /api/audio/stereo-enhance Stereo depth overlay (0100)
POST /api/audio/bass-enhance Bass enhance overlay (0100)
GET /api/bluetooth/status BT1035 boot, pairing, A2DP state
POST /api/bluetooth/pair Enter discoverable mode
POST /api/bluetooth/pair/stop Leave discoverable mode
POST /api/bluetooth/disconnect Release A2DP session
GET /api/stations List saved presets
POST /api/stations Add preset
POST /api/stations/remove Remove preset by index
POST /api/stations/reorder Move preset (from/to indices)
POST /api/stations/tune Recall preset (tuner + audio profile + NVS)

Full schemas, error tokens, and boot flow: docs/manual/ch-api.tex. C++ signatures: doxygen Doxyfiledocs/api/html/index.html.

Layout

Path Role
Firmware/ Si4684 .bin blobs (DAB+FM) + ADAU1701 SigmaStudio export
components/core/ Pure domain (host-tested)
components/drivers/ Si4684, ADAU1701, BT1035 drivers
components/services/ Tuner, audio, Bluetooth, station, integration services
components/net/ Wi-Fi, HTTP server, gzipped web UI
docs/manual/ LaTeX technical manual (canonical)
docs/TODO.md Agent task list (prioritised backlog)

See AGENTS.md §12 and instructions.md for coding rules and slice roadmap.

Licence

Apache-2.0 — see LICENSE.