Fix LaTeX manual build errors for LuaLaTeX.
Rename conflicting TikZ step style to drstep, add missing ch:firmware label, and use TeX Gyre Heros font fallback instead of Linux Biolinum O. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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}}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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} {
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user