30 lines
1.3 KiB
Markdown
30 lines
1.3 KiB
Markdown
# Logtool Debug Notes — 16 MAR 2026
|
||
|
||
## Problem
|
||
`storage-16MAR2026-1728.bin` not parsing correctly.
|
||
|
||
## Root Cause (SOLVED)
|
||
Two issues in `parser.py`:
|
||
|
||
### 1. Unrecognized file format
|
||
The file format is `[4B tail BE][4B head BE][raw log data]` — no JSON header.
|
||
- `head - tail == file_size - 8` (the raw log data is exactly the flash region from tail to head)
|
||
- The old HTTP format was: `[4B json_len BE][json][4B tail BE][4B head BE][raw log data]`
|
||
- The parser's autodetect only recognized the old HTTP format (and required json_len < 8192)
|
||
- **Fix:** Added detection for bare tail+head format in `autodetect_and_parse()`
|
||
|
||
### 2. Type-first vs type-last detection failure
|
||
The log entries use **type-first** format: `[len][type][payload]`
|
||
But `_try_detect_type_first()` returned False because:
|
||
- First entry had type=0x00 at both positions (ambiguous)
|
||
- Timestamp was near-zero (RTC not yet set), so timestamp sanity check failed
|
||
- Function gave up after only 1 entry (`break` at end of loop)
|
||
- **Fix:** Loop over multiple entries (up to 200), added voltage sanity check (0.5-60V)
|
||
|
||
## Verification
|
||
- 54,831 entries parsed successfully
|
||
- FSM states: IDLE (51169), JACK_UP (1078), DRIVE (994), etc.
|
||
- Voltages: 3.3V–13.3V (reasonable for 3S LiPo system)
|
||
- Timestamps: Jan 13 – Feb 6, 2026 (after RTC set)
|
||
- Old HTTP-format .bin files still parse correctly
|