Document Si4684 driver, TunerService, and tuner HTTP API (0.4.0).

Adds ch-si4684 and updates API/class reference chapters for slice 4.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-06 16:10:52 +02:00
co-authored by Cursor
parent 0b087a262a
commit 0e25c4cc1a
5 changed files with 431 additions and 24 deletions
+25 -10
View File
@@ -125,16 +125,9 @@ verified against reference values in host tests.
At power-up the driver follows the documented boot sequence: power on,
load the patch/bootloader, load the firmware image (FM or DAB), then
boot. Firmware images are large and are streamed to the chip in bounded
chunks from flash rather than buffered whole in RAM.
\begin{drref}[Datasheet]
The exact power-up, patch, image-load, and boot command sequence follows
the Si468x programming guide (AN649). Each step in the driver cites the
relevant section; no command byte is issued without a documented source.
\end{drref} The public
interface is intent-level (\texttt{powerUp}, \texttt{loadImage},
\texttt{tuneTo}, \texttt{readRsq}); register-level detail is private to
the driver.
chunks from flash rather than buffered whole in RAM. See
Chapter~\ref{ch:si4684} for blob sources, uGreen extraction, and the full
\texttt{Si4684Driver} API (tuning, RSQ, DAB service list).
\paragraph{ADAU1701 (DSP).}
The board carries no self-boot EEPROM. Instead, the ESP32 writes the
@@ -184,6 +177,28 @@ values cannot be logged or implicitly converted to a string; buffers are
cleared on destruction. Production builds should enable NVS encryption
at rest (see Chapter~\ref{sec:api-storage}).
\section{Companion-chip boot at power-up}
\label{sec:fw-chip-boot}
The ESP32-S3 loads both audio companion chips from assets under
\texttt{Software/Firmware/} during \texttt{app\_main}, before network
bring-up:
\begin{enumerate}
\item \textbf{Si4684} (SPI): ROM patch \texttt{rom\_patch\_016.bin}, then either
DAB image \texttt{dab\_firmware.bin} or FM image \texttt{fm\_firmware.bin},
following AN649 (Chapter~\ref{ch:si4684}). DAB blob default from PE5PVB; FM
from eval pack or uGreen \texttt{radio\_cli}. Blobs are local-only
(\texttt{.gitignore}); embedded via ESP-IDF \texttt{EMBED\_FILES}.
\item \textbf{ADAU1701} (I\textsuperscript{2}C): SigmaStudio export
(\texttt{DigiRadio\_IC\_1.h}) replayed through
\texttt{SIGMA\_WRITE\_REGISTER\_BLOCK} after hardware reset. The DSP
program lives in RAM only; download runs on every boot.
\end{enumerate}
If either driver returns an error, the firmware logs the failure and stops
before starting Wi-Fi (fail-closed bring-up).
\section{Error-handling model}
\label{sec:fw-errors}