- event_recorder.c: add SET DRAWBOXENABLE 0/1 BLE command (runtime toggle,
INI-persistent); expose g_dwDrawBoxEnable extern
- kdp2_host_stream.c: guard draw-box and seg-overlay rendering behind
g_dwDrawBoxEnable so SET DRAWBOXENABLE 0 cleanly suppresses both
- handshake.c: derive key from runtime VMF_NNM_Get_Kn_Number() instead of
compile-time constant; each board gets a unique handshake key
- kp_firmware.c: remove startup handshake key print (key is now per-board,
fixed expected value is no longer meaningful)
- move base64.h / sha256.h / handshake.h from src/host_stream/ to
include/host_stream/ (proper include path for shared headers)
- Change upload URL path: golf.cgi -> golf-golface.cgi
- Add upload_dev INI key (1=dev, appends &dev=1 to URL)
- Change query params: ?filename= -> ?did={device_id}&vid={event_id}
- Add event_recorder_init params: device_id, dev_mode, speed_normal/alert/stop
- Make CAN speed limits configurable via [can] speed_normal/alert/stop in INI
(replaces hardcoded SPEED_LIMIT_* macros with runtime static vars)
- Fix build_targz: use tar -C + mkdir -p for BusyBox compat;
use open()+lseek() instead of stat() (struct stat ABI mismatch on target)
- Extend TEST_UPLOAD snapshot poll timeout: 5s -> 15s; same lseek fix
- Add BLE SET command: persist_ini_int() for runtime INI parameter update
- Fix app_header_init: elapsed_us long -> long long (overflow guard)
- Remove verbose debug printf from mcp2515 reset/send paths
- can_bus: wrap CTL log printf in #if 1 for easy toggle
Add TEST_ENTER/TEST_EXIT commands via BLE to enter/exit test mode.
In test mode, inference results are suppressed; testers can directly
trigger BLE JSON (TEST_BLE *), CAN+Buzzer actions (TEST_CAN *),
or run sequenced full-coverage tests (TEST_BLE_ALL, TEST_CAN_ALL,
TEST_ALL). Auto-exits after 60s idle. Routes unrecognised BLE
commands through new bt_uart_set_extra_cmd_cb() hook.
New buzzer.h/buzzer.c: background pthread drives gpio64 with three
patterns (GRASS 500/500ms, ALERT 300/200ms, COLLISION 100/100ms).
Integrated into fire_collision_warning(), fire_alert(), and grass
state machine in event_recorder.c; buzzer_init() called after
can_bus_init() in kp_firmware.c.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>