Fix Si4684 DAB response-parsing bugs found in firmware review
readDabServiceData(): 6 of 7 response fields (dataSrc, serviceId, componentId, byteCount, segmentIndex, segmentCount) read one byte too early, using the old raw[4]=RESP4 convention instead of the correct raw[5]=RESP4 (established elsewhere in this driver by getPartInfo() and readDabDigRadStatus()'s own ficQuality/cnrDb fields). dataSrc landing on the wrong byte meant the DAB dynamic label (PAD/now-playing text) check (dataSrc == 2) could essentially never match — it has likely never worked. Header buffer grown 24->25 bytes to fit the correctly-positioned last field. fetchDabServiceList(): didn't match AN649 Table 14's "DAB/DMB Digital Service List" layout at all — serviceCount read from the wrong byte, every per-service field misaligned, componentId assumed 4 bytes wide (actually 2 per the spec), and only the first of a service's possibly-several components was ever skipped past (desyncing every later entry). Rewrote against the actual Table 14 field layout. Confirmed live yesterday this was producing garbled service_id/component_id/label output (component_id values decoding as literal ASCII spaces). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0178rASQ6ZETPMUamvpoR2KR
This commit is contained in:
@@ -615,3 +615,20 @@ yet identified; unrelated to the Si4684 investigation (separate chip), but
|
||||
treat BT1035 boot failure as non-fatal rather than halting the whole device,
|
||||
so the rest of the system (Si4684 tuning, web UI, Wi-Fi) remains usable
|
||||
while this is investigated separately.
|
||||
|
||||
## TODO (next session)
|
||||
|
||||
- **Antenna/front-end calibration, now meaningful.** Before this session's
|
||||
fixes, any ANTCAP sweep or front-end network experiment was untrustworthy
|
||||
— a bad result could have been the software bug, not the antenna. Now
|
||||
that the receiver chain is verified correct end to end (real FM lock,
|
||||
real DAB lock, real audio), redo the ANTCAP sweep and compare the actual
|
||||
front-end network (§ "Front-end network component mismatch" above)
|
||||
against AN851 properly, with results that can actually be trusted.
|
||||
- Fix `fetchDabServiceList()` entry parsing (garbled service_id/component_id/
|
||||
label) against AN649 §7 "Digital Services User's Guide" (~page 418).
|
||||
- Confirm actual DAB audio playback end to end (blocked on the item above).
|
||||
- Try a proper FM antenna to see if the residual noise under the music
|
||||
clears up (suspected antenna quality, not yet confirmed).
|
||||
- BT1035 boot-failure root cause still open (see section above) — non-fatal
|
||||
now, so it's no longer blocking, but still unexplained.
|
||||
|
||||
Reference in New Issue
Block a user