a2nr
1d3a48940e
fix(firmware+frontend): remove binary_parser_reset() re-deploy wipes CRC + tighten INIT poll
...
Firmware (state_machine.c):
- Remove binary_parser_reset() from SERIAL_BRIDGE→RECEIVING handler
- Remove binary_parser_reset() from ERROR→RECEIVING handler
- Parser's INIT handler already resets itself; calling reset AFTER
INIT payload processing wipes expected_total_crc to 0 → CRC fail
Frontend (ble-deployer.ts):
- Tighten INIT readValue poll: state===1 (RECEIVING) only
Previously accepted state >= 1 && <= 4 which could false-positive
on FLASHING(3) or SERIAL_BRIDGE(4) stale states
Cache v9 → v10
2026-06-30 19:21:35 +07:00
a2nr
6ccbb88678
bump(frontend): cache v8→v9 for clean SW refresh
2026-06-30 18:32:05 +07:00
a2nr
9918aafe41
fix: Phase B — readValue() state poll fallback for END ACK
...
Firmware:
- Add BLE_GATT_CHR_F_READ to flashing characteristic
- Read callback returns state_machine_get_current() as 1 byte
(4=SERIAL_BRIDGE=success, 5/6=ERROR)
Frontend:
- Replace ineffective pendingAcks poll with readValue() poll
- CCCD refresh fire-and-forget (non-blocking)
- Race ackPromise (notify) vs readPoll (readValue)
- Clean up ackPromise resolver on readPoll win
- Cache v7 → v8
2026-06-30 17:35:23 +07:00
a2nr
9dda8fe3e6
fix: event-driven poll loop for END ACK to work around Android BLE notification delivery issue on Qualcomm chipsets
...
- Race ackPromise against a polling loop that yields to the event loop
every 200ms (vs a single blocking await that can miss notifications)
- bump SW cache v5→v6
2026-06-30 13:12:55 +07:00
a2nr
e4ec3f1ded
feat: custom evaluation config
2026-06-17 20:34:36 +07:00