fix: remove special case chunk counter, all chunks use chunk_num * 0x0400
This commit is contained in:
@@ -109,6 +109,22 @@ S3→BW (response):
|
||||
Both differences confirmed by reproducing Blastware's exact wire bytes from the 1-2-26
|
||||
BW TX capture. All 10 frames verified.
|
||||
|
||||
### SUB 5A — chunk counter is monotonic (CORRECTED 2026-04-06)
|
||||
|
||||
**Chunk counters are `chunk_num * 0x0400` for ALL chunks including chunk 1.**
|
||||
|
||||
The 4-2-26 BW TX capture showed `counter=0x1004` for chunk 1 of event key `01110000`, which
|
||||
led to `_CHUNK1_COUNTER = 0x1004` being hardcoded as a special case. This was a Blastware
|
||||
artifact, not a protocol requirement. Empirical test 2026-04-06: with `counter=0x1004` for
|
||||
chunk 1 the device times out (120 s); with `counter=0x0400` (= `1 * 0x0400`) it responds
|
||||
immediately and streams all frames correctly.
|
||||
|
||||
The 4-3-26 capture confirms the pattern for a second event (key `0111245a`):
|
||||
chunk 1 = `0x245A`, chunk 2 = `0x285A`, chunk 3 = `0x2C5A` (each +0x0400). Blastware's
|
||||
true formula is `key4[2:4] + n * 0x0400` — but since `key4[2:4]` of the first event is
|
||||
`0x0000`, `n * 0x0400` produces the right result. The device does not strictly validate the
|
||||
counter and streams data for any valid 5A request; using `chunk_num * 0x0400` is correct.
|
||||
|
||||
### SUB 5A — params are 11 bytes for chunk frames, 10 for termination
|
||||
|
||||
`bulk_waveform_params()` returns 11 bytes (extra trailing `0x00`). The 11th byte was
|
||||
|
||||
Reference in New Issue
Block a user