diff --git a/Software/docs/manual/ch-adau1701.tex b/Software/docs/manual/ch-adau1701.tex index e6b8a73..e6cc629 100644 --- a/Software/docs/manual/ch-adau1701.tex +++ b/Software/docs/manual/ch-adau1701.tex @@ -114,17 +114,17 @@ the DSP program and writes it into RAM after each reset. \begin{figure}[htbp] \centering \begin{tikzpicture}[ - step/.style={draw, rounded corners, minimum width=9.5cm, + drstep/.style={draw, rounded corners, minimum width=9.5cm, minimum height=0.9cm, align=center, font=\small}, >={Latex}, node distance=3mm] - \node[step, fill=black!6] (rst) {Assert RESET\# (10\,ms), release}; - \node[step, fill=black!6, below=of rst] (i2c) + \node[drstep, fill=black!6] (rst) {Assert RESET\# (10\,ms), release}; + \node[drstep, fill=black!6, below=of rst] (i2c) {Create I\textsuperscript{2}C master @ 100\,kHz, address 0x34}; - \node[step, fill=black!8, below=of i2c] (dl) + \node[drstep, fill=black!8, below=of i2c] (dl) {Replay \texttt{DspProgram} from flash or embedded export}; - \node[step, fill=black!6, below=of dl] (ready) + \node[drstep, fill=black!6, below=of dl] (ready) {\texttt{Adau1701Driver::isBooted()} = true}; - \node[step, fill=black!10, below=of ready] (prof) + \node[drstep, fill=black!10, below=of ready] (prof) {\texttt{AudioService::loadAndApply()} --- safeload user profile}; \foreach \a/\b in {rst/i2c, i2c/dl, dl/ready, ready/prof} { \draw[->] (\a) -- (\b); diff --git a/Software/docs/manual/ch-api.tex b/Software/docs/manual/ch-api.tex index b84dcaa..3922b41 100644 --- a/Software/docs/manual/ch-api.tex +++ b/Software/docs/manual/ch-api.tex @@ -190,8 +190,8 @@ seek failure. \begin{drcode}[JSON] {"direction":"up"} \end{drcode} -Use \texttt{"down"} for downward seek. Omit the body or send \texttt{{}} -for upward seek (backward compatible). +Use \texttt{"down"} for downward seek. Omit the body or send an empty JSON +object (\texttt{\{\}}) for upward seek (backward compatible). \end{drnote} \subsection{\texttt{GET /api/audio/profile}} diff --git a/Software/docs/manual/ch-bt1035.tex b/Software/docs/manual/ch-bt1035.tex index 5258794..0d83fa5 100644 --- a/Software/docs/manual/ch-bt1035.tex +++ b/Software/docs/manual/ch-bt1035.tex @@ -90,17 +90,17 @@ Line-In path is ready before Wi-Fi starts. \begin{figure}[htbp] \centering \begin{tikzpicture}[ - step/.style={draw, rounded corners, minimum width=9.5cm, + drstep/.style={draw, rounded corners, minimum width=9.5cm, minimum height=0.9cm, align=center, font=\small}, >={Latex}, node distance=3mm] - \node[step, fill=black!6] (sys) {SYS\_CTL high, RESET\# pulse}; - \node[step, fill=black!6, below=of sys] (uart) + \node[drstep, fill=black!6] (sys) {SYS\_CTL high, RESET\# pulse}; + \node[drstep, fill=black!6, below=of sys] (uart) {Install UART2 @ 115200, RTS/CTS}; - \node[step, fill=black!8, below=of uart] (at) + \node[drstep, fill=black!8, below=of uart] (at) {Send \texttt{AT} --- expect OK}; - \node[step, fill=black!10, below=of at] (aux) + \node[drstep, fill=black!10, below=of at] (aux) {Send \texttt{AT+AUXCFG=1} --- expect OK (Line-In)}; - \node[step, fill=black!6, below=of aux] (done) + \node[drstep, fill=black!6, below=of aux] (done) {\texttt{Bt1035Driver::isBooted()} = true}; \foreach \a/\b in {sys/uart, uart/at, at/aux, aux/done} { \draw[->] (\a) -- (\b); diff --git a/Software/docs/manual/ch-firmware.tex b/Software/docs/manual/ch-firmware.tex index 44456da..6dda091 100644 --- a/Software/docs/manual/ch-firmware.tex +++ b/Software/docs/manual/ch-firmware.tex @@ -12,6 +12,7 @@ % ============================================================ \chapter{Firmware Architecture} +\label{ch:firmware} \label{sec:firmware-architecture} The DigiRadio firmware runs on the ESP32-S3 and orchestrates three diff --git a/Software/docs/manual/ch-intro.tex b/Software/docs/manual/ch-intro.tex index 8023d0c..338076c 100644 --- a/Software/docs/manual/ch-intro.tex +++ b/Software/docs/manual/ch-intro.tex @@ -4,7 +4,7 @@ DigiRadio is an open-source, high-fidelity digital radio receiver. It receives DAB+ and FM broadcasts, processes the audio through a dedicated signal processor, and streams the result over Bluetooth using a -high-resolution codec. Firmware~0.8.3 on \texttt{main} provides encrypted +high-resolution codec. Firmware~0.8.4 on \texttt{main} provides encrypted storage, a tabbed configuration web UI, and the full REST API documented in Chapter~\ref{ch:api}. The whole project --- hardware and firmware --- is released as open source for the maker and audio community to study, diff --git a/Software/docs/manual/ch-si4684.tex b/Software/docs/manual/ch-si4684.tex index e83fd39..b600aea 100644 --- a/Software/docs/manual/ch-si4684.tex +++ b/Software/docs/manual/ch-si4684.tex @@ -114,21 +114,21 @@ the \texttt{FLASH\_LOAD} path used by boards with a pre-programmed SST25V. \begin{figure}[htbp] \centering \begin{tikzpicture}[ - step/.style={draw, rounded corners, minimum width=9cm, + drstep/.style={draw, rounded corners, minimum width=9cm, minimum height=0.9cm, align=center, font=\small}, >={Latex}, node distance=3mm] - \node[step, fill=black!6] (rst) {Hardware reset (RST\#)}; - \node[step, fill=black!6, below=of rst] (pu) + \node[drstep, fill=black!6] (rst) {Hardware reset (RST\#)}; + \node[drstep, fill=black!6, below=of rst] (pu) {POWER\_UP (crystal / clock args)}; - \node[step, fill=black!6, below=of pu] (li1) {LOAD\_INIT}; - \node[step, fill=black!8, below=of li1] (patch) + \node[drstep, fill=black!6, below=of pu] (li1) {LOAD\_INIT}; + \node[drstep, fill=black!8, below=of li1] (patch) {HOST\_LOAD \texttt{rom\_patch\_016.bin} (124 B chunks)}; - \node[step, fill=black!6, below=of patch] (li2) {LOAD\_INIT}; - \node[step, fill=black!8, below=of li2] (img) + \node[drstep, fill=black!6, below=of patch] (li2) {LOAD\_INIT}; + \node[drstep, fill=black!8, below=of li2] (img) {HOST\_LOAD \texttt{dab\_} or \texttt{fm\_firmware.bin} (2044 B chunks)}; - \node[step, fill=black!6, below=of img] (boot) {BOOT}; - \node[step, fill=black!10, below=of boot] (cfg) + \node[drstep, fill=black!6, below=of img] (boot) {BOOT}; + \node[drstep, fill=black!10, below=of boot] (cfg) {Properties: I\textsuperscript{2}S 44.1 kHz, RDS/DAB FE, volume}; \foreach \a/\b in {rst/pu, pu/li1, li1/patch, patch/li2, li2/img, img/boot, boot/cfg} { diff --git a/Software/docs/manual/digiradio-manual.sty b/Software/docs/manual/digiradio-manual.sty index ae35a01..1e4bd14 100644 --- a/Software/docs/manual/digiradio-manual.sty +++ b/Software/docs/manual/digiradio-manual.sty @@ -35,11 +35,20 @@ \renewcommand{\familydefault}{\sfdefault} % Biolinum as body (Optima-like) \else \RequirePackage{fontspec} - % Real Optima on macOS; change the name if yours differs. + \defaultfontfeatures{Ligatures=TeX} + % Real Optima on macOS; TeX Gyre Heros ships with TeX Live as fallback. \IfFontExistsTF{Optima}{% \setmainfont{Optima}% }{% - \setmainfont{Linux Biolinum O}% fallback if Optima not installed + \IfFontExistsTF{TeX Gyre Heros}{% + \setmainfont{TeX Gyre Heros}% + }{% + \IfFontExistsTF{TeXGyreHeros}{% + \setmainfont{TeXGyreHeros}% + }{% + \setmainfont{Latin Modern Sans}% + }% + }% } \fi diff --git a/Software/docs/manual/manual.pdf b/Software/docs/manual/manual.pdf index 14d4db2..5465099 100644 Binary files a/Software/docs/manual/manual.pdf and b/Software/docs/manual/manual.pdf differ