Fix agent (Cursor) rules

This commit is contained in:
2026-07-06 01:12:37 +02:00
parent 93b081d518
commit 0ff803b4c3
16 changed files with 1199 additions and 72 deletions
+34
View File
@@ -0,0 +1,34 @@
---
description: Chip driver rules (Si4684, ADAU1701, FSC-BT1035)
globs: **/*Driver.*, **/drivers/**, **/*Adau*, **/*Si4684*, **/*Bt1035*
alwaysApply: false
---
# Chip drivers
Full spec: @AGENTS.md §7.17.3.
## Si4684 (DAB+/FM tuner)
- Boot flow POWER_UP -> load patch -> load image -> BOOT must follow the
AN649 sequence exactly; cite the section per step in a comment.
- Stream firmware images in bounded chunks from flash via an injected
`IFirmwareSource`; never load a whole image into a heap buffer.
- Opcodes/property IDs are `enum class`; validate the CTS/STATUS byte
before trusting any payload. Public API is intent-level; registers
are private. One driver owns one SPI/I2C handle via RAII.
## ADAU1701 (SigmaDSP, RAM boot, no EEPROM)
- ESP32 writes the SigmaStudio export to DSP RAM at every boot. Model the
export as an ordered list of RegisterWrite{address, bytes} parsed in
the pure core, replayed by the shell over I2C.
- EQ and mixer runtime changes use safeload (click-free). A raw param
write while audio runs is a bug.
- Typed control surfaces: setEqBand(EqBandIndex, GainDb, FrequencyHz, Q);
setInputMix(MixSource, GainDb) with enum class MixSource {Si4684,Esp32}.
- Biquad/gain math lives in the pure core with host tests vs reference.
## FSC-BT1035 (QCC3056, AT over UART)
- Typed command builder; explicit OK/ERROR/timeout parsing.
- AT+AUXCFG=1 (Line-In) is mandatory in the init sequence and covered by
a test on the command string. Unknown responses are an error, not
ignored.