feat: mapped record_mode protocol

This commit is contained in:
2026-04-20 15:49:31 -04:00
parent f10c5c1b86
commit e04114fd6c
4 changed files with 119 additions and 11 deletions
+15 -2
View File
@@ -360,6 +360,7 @@ Do NOT use fixed absolute offsets for sample_rate or record_time.
| Field | How to find it |
|---|---|
| **recording_mode** | **uint8 at anchor 3 (write payload) / anchor 4 (read response)** ✅ confirmed 2026-04-20 |
| sample_rate | uint16 BE at anchor 2 |
| record_time | float32 BE at anchor + 10 |
| trigger_level_geo | float32 BE, located in channel block |
@@ -371,6 +372,18 @@ Do NOT use fixed absolute offsets for sample_rate or record_time.
Anchor: `b'\x01\x2c\x00\x00\xbe\x80\x00\x00\x00\x00'`, search `cfg[0:150]`
**recording_mode enum** (confirmed 2026-04-20 from 4-20-26 captures):
| Value | Mode |
|---|---|
| `0x00` | Single Shot |
| `0x01` | Continuous |
| `0x02` | ❓ not observed |
| `0x03` | Histogram |
| `0x04` | Histogram + Continuous |
**Offset note:** The write payload (SUB 71 cfg) has recording_mode 3 bytes before the anchor (`anchor_pos 3`). The E5 read response has it 4 bytes before (`anchor_pos 4`), with an extra `0x10` byte sitting between recording_mode and sample_rate in the read format. Use `anchor_pos 3` when encoding writes; use `anchor_pos 4` when decoding reads.
### SUB 0C — Waveform Record (210 bytes = data[11:11+0xD2])
**sub_code=0x10 (Waveform single-shot) — 9-byte timestamp header:**
@@ -704,8 +717,8 @@ Fields visible in the Blastware Compliance Setup dialog — most are NOT YET dec
offsets in the raw 1A/E5 payload. Only fields with `✅` have confirmed offsets in the code.
**Recording Setup tab:**
- Recording Mode: Continuous / Single Shot / Histogram (enum)
- Record Stop Mode: Fixed Record Time / Auto / Manual Stop (enum)
- Recording Mode: Continuous / Single Shot / Histogram / Histogram+Continuous ✅ (uint8 at anchor3 in write, anchor4 in read; 0x00=Single Shot, 0x01=Continuous, 0x03=Histogram, 0x04=Histogram+Continuous) — confirmed 2026-04-20
- Record Stop Mode: Fixed Record Time / Auto / Manual Stop (enum) ❓ (byte near recording_mode; data[40] in E5 sf1 changed 0x01→0x00 alongside Continuous→Single Shot — may be this field)
- Sample Rate: Standard 1024 / Fast 2048 / Faster 4096 sps ✅ (anchor2)
- Record Time: float, seconds ✅ (anchor+10)
- Histogram Interval: 5 / 15 / 30 / 60 minutes (enum, mode-gated)