gf_ai_box/GF_AI_Box_Test_Guide.md
miketsai cd96e33c62 feat: BLE plain-text cmd, AT probe fix, INI sed persist, log buffering
bt_uart.c:
- Reader thread: accept plain-text (non-JSON) lines from BLE app;
  routes directly to extra_cmd_cb — test commands no longer need
  JSON wrapping
- bt_uart_probe_and_upgrade(): fix AT+BAUD7 sequence — reopen fd at
  115200 before sending AT+NAME/AT+RESET (was sending on stale 9600 fd)
- bt_uart_send_json(): replace blocking mutex_lock with 200 ms trylock
  retry to avoid deadlock if writer thread dies holding the queue mutex
- Reader select timeout 500 ms → 200 ms for faster plain-text flush

buzzer.c:
- buzzer_set_pattern(): write s_pattern directly then trylock+signal,
  so callers never block on the buzzer thread's mutex

can_bus.c:
- Add debug printf in can_bus_send_control_cmd() (temporary)

event_recorder.c:
- TEST_MODE_TIMEOUT_SEC 60 → 300 (5 min, enough for full test run)

kp_firmware.c:
- Persist INI keys via sed in-place instead of iniparser_dump_ini,
  preserving comments and original file structure
- setvbuf stdout/stderr to line-buffered so tee log appears immediately

Add GF_AI_Box_Test_Guide (.md/.docx/.pdf) and uclibc_compat.c
2026-06-14 15:41:30 +08:00

9.7 KiB
Raw Permalink Blame History

GF AI Box — 測試人員操作指南

文件版本v2.0 適用韌體gf_ai_box_v4 更新日期2026-06-14


一、測試環境準備

所需工具

  • 藍芽串口工具iOSLightBlue / Serial Bluetooth TerminalAndroidSerial Bluetooth Terminal
  • CAN bus 分析儀(選配,用於驗證 CAN 訊號)
  • 油門踏板CAN 測試時需要)

連線方式

  1. 開啟藍芽工具,掃描並連線到 AI Box 的 BLE 裝置
  2. 完成握手後即可送出指令
  3. 指令為純文字,大小寫不分,直接輸入後送出

重要說明

  • 硬體 Reset 後預設為正常模式,必須先送 test_enter 才能執行測試指令
  • 進入測試模式後AI Box 的 AI 推論結果暫停處理NPU 繼續運算但不派發事件)
  • 測試模式下如果 60 秒無任何指令,系統會自動退出測試模式並恢復正常
  • 若 TEST_ALL 系列正在執行,請勿重複送出測試指令

二、基本控制指令

指令 說明 預期回覆
test_enter 進入測試模式 TEST_ACK ENTER
test_exit 退出測試模式,恢復正常 TEST_EXIT_OK

三、大項一BLE JSON 測試

測試目的:驗證各警示事件觸發時,藍芽送出的 JSON 格式與內容正確。 注意:只送出 BLE JSON不觸發 CAN bus 指令與 Buzzer。

3.1 單項測試指令

Violation草地違規

指令 說明 預期 BLE 回傳 JSON
test_ble violation 1 觸發 violation level=1 {"response_type":"violation","content":{"id":"...","date":"...","type":"lane","level":1}}
test_ble violation 0 解除 violation {"response_type":"violation","content":{"id":"...","date":"...","type":"lane","level":0}}

Collision碰撞警示

指令 說明 預期 BLE 回傳 JSON
test_ble collision 1 觸發 collision level=1type=vehicle {"response_type":"collision_warning","content":{"level":1,"type":"vehicle"}}
test_ble collision 0 解除 collision {"response_type":"collision_warning","content":{"level":0,"type":null}}

Alert方向警示

指令 說明 預期 BLE 回傳 JSON
test_ble alert 1 tree 0 null 左側 tree 警示,右側無 {"response_type":"alert","content":{"left":{"level":1,"type":"tree"},"right":{"level":0,"type":null}}}
test_ble alert 0 null 1 person 左側無,右側 person {"response_type":"alert","content":{"left":{"level":0,"type":null},"right":{"level":1,"type":"person"}}}
test_ble alert 1 tree 1 vehicle 左右都有警示 {"response_type":"alert","content":{"left":{"level":1,"type":"tree"},"right":{"level":1,"type":"vehicle"}}}
test_ble alert 0 null 0 null 解除所有 alert {"response_type":"alert","content":{"left":{"level":0,"type":null},"right":{"level":0,"type":null}}}

Alert 指令格式test_ble alert <左level> <左type> <右level> <右type> type 可以是:tree / person / vehicle / null

3.2 BLE 全項自動測試

指令 說明
test_ble_all 自動跑完所有 BLE 測項(約 20 秒)

TEST_BLE_ALL 執行順序:

[00s] violation level=1            → 等 3 秒
[03s] violation level=0            → 等 2 秒
[05s] collision level=1            → 等 3 秒
[08s] collision level=0            → 等 2 秒
[10s] alert left=tree, right=無    → 等 3 秒
[13s] alert clear                  → 等 2 秒
[15s] alert left=tree, right=vehicle → 等 3 秒
[18s] alert clear                  → 等 2 秒
[20s] TEST_BLE_ALL_DONE自動退出測試模式

四、大項二CAN bus 測試

測試目的驗證各警示事件觸發時CAN bus 送出正確速度指令。 注意:只觸發 CAN bus 速度指令,不送出 BLE JSON不啟動 Buzzer。

速度對照表

事件 CAN 速度值
正常行駛 240
Violation / Alert 35
Collision 10

4.1 單項測試指令

Violation CAN 測試

指令 CAN 速度 預期回覆
test_can violation 1 35 TEST_ACK CAN VIOLATION 1 speed=35
test_can violation 0 240 TEST_ACK CAN VIOLATION 0 speed=240

Collision CAN 測試

指令 CAN 速度 預期回覆
test_can collision 1 10 TEST_ACK CAN COLLISION 1 speed=10
test_can collision 0 240 TEST_ACK CAN COLLISION 0 speed=240

Alert CAN 測試

指令 CAN 速度 預期回覆
test_can alert 1 35 TEST_ACK CAN ALERT 1 speed=35
test_can alert 0 240 TEST_ACK CAN ALERT 0 speed=240

4.2 CAN 全項自動測試

指令 說明
test_can_all 自動跑完所有 CAN 測項(預設觀察 10 秒,約 39 秒)
test_can_all 15 每個測項觀察時間改為 15 秒

TEST_CAN_ALL 執行順序(預設觀察 10 秒):

[00s]  violation level=1 → speed=35
          ↓ 觀察 10 秒(踩油門,確認轉速被限制)
[10s]  violation level=0 → speed=240
          ↓ 等 3 秒(確認恢復正常)
[13s]  collision level=1 → speed=10
          ↓ 觀察 10 秒(踩油門,確認轉速被限制到最低)
[23s]  collision level=0 → speed=240
          ↓ 等 3 秒
[26s]  alert level=1     → speed=35
          ↓ 觀察 10 秒
[36s]  alert level=0     → speed=240
          ↓ 等 3 秒
[39s]  TEST_CAN_ALL_DONE自動退出測試模式

五、大項三Buzzer 測試

測試目的驗證各警示事件觸發時Buzzer 發出正確嗶聲節奏。 注意:只觸發 Buzzer不送出 BLE JSON不發 CAN bus 指令。

Buzzer Pattern 對照表

Pattern 節奏
OFF靜音 無聲
GRASSViolation 草地) 慢速500ms 響 / 500ms 停
ALERTAlert 方向警示) 中速300ms 響 / 200ms 停
COLLISION碰撞 急促100ms 響 / 100ms 停

5.1 單項測試指令

指令 Buzzer 動作 預期回覆
test_buzzer grass 慢速嗶500ms 響 / 500ms 停) TEST_ACK BUZZER GRASS OK
test_buzzer alert 中速嗶300ms 響 / 200ms 停) TEST_ACK BUZZER ALERT OK
test_buzzer collision 急促嗶100ms 響 / 100ms 停) TEST_ACK BUZZER COLLISION OK
test_buzzer off 靜音 TEST_ACK BUZZER OFF OK

Buzzer 指令送出後立即生效,持續到下一個指令為止。

5.2 Buzzer 全項自動測試

指令 說明
test_buzzer_all 自動跑完所有 Buzzer 測項(約 12 秒)

TEST_BUZZER_ALL 執行順序:

[00s] GRASS 慢速嗶     → 等 4 秒
[04s] ALERT 中速嗶     → 等 4 秒
[08s] COLLISION 急促嗶 → 等 4 秒
[12s] OFF 靜音
[12s] TEST_BUZZER_ALL_DONE自動退出測試模式

六、全功能自動測試

指令 說明
test_all 依序執行 BLE → CAN → Buzzer 三大群組(預設觀察 10 秒,約 77 秒)
test_all 15 CAN 觀察時間改為 15 秒(約 92 秒)

執行順序(預設觀察 10 秒):

  1. BLE 群組(約 20 秒)— 驗證 BLE JSON
  2. 休息 3 秒
  3. CAN 群組(約 39 秒)— 驗證 CAN bus 速度指令
  4. 休息 3 秒
  5. Buzzer 群組(約 12 秒)— 驗證 Buzzer 嗶聲節奏
  6. 送出 TEST_ALL_DONE,自動退出測試模式

進度訊息:

回傳訊息 說明
TEST_ALL_START 全功能測試開始
TEST_ALL_BLE_GROUP_START BLE 群組開始
TEST_ALL_BLE_GROUP_DONE BLE 群組完成
TEST_ALL_CAN_GROUP_START CAN 群組開始
TEST_ALL_CAN_GROUP_DONE CAN 群組完成
TEST_ALL_BUZZER_GROUP_START Buzzer 群組開始
TEST_ALL_BUZZER_GROUP_DONE Buzzer 群組完成
TEST_ALL_DONE 全部完成

七、錯誤回覆說明

回傳訊息 說明
TEST_ERR NOT_IN_TEST_MODE 尚未執行 test_enter
TEST_ERR ALL_ALREADY_RUNNING TEST_ALL 系列仍在執行中,請等待完成
TEST_ERR UNKNOWN_CMD 指令不正確,請確認格式
TEST_ACK ALREADY_IN_TEST 已在測試模式,不需重複 test_enter
TEST_TIMEOUT_EXIT 60 秒逾時,自動退出測試模式

八、快速測試流程範例

範例 A只測試藍芽 JSON

test_enter
test_ble collision 1
(確認收到 collision_warning JSON
test_ble collision 0
test_exit

範例 B只測試 CAN 限速

test_enter
test_can collision 1
(踩油門 → 確認轉速被限制 + 確認 ACK speed=10
test_can collision 0
(確認轉速恢復正常)
test_exit

範例 C只測試 Buzzer

test_enter
test_buzzer collision
(聽到急促嗶聲)
test_buzzer off
(靜音)
test_exit

範例 D全自動測試觀察 15 秒)

test_enter
test_all 15
(等待約 92 秒,觀察各測項)
(收到 TEST_ALL_DONE 後自動退出測試模式)

附錄:指令速查表

test_enter
test_exit

test_ble violation <level>                         level = 0 或 1
test_ble collision <level>                         level = 0 或 1
test_ble alert <左level> <左type> <右level> <右type>
test_ble_all

test_can violation <level>                         level = 0 或 1
test_can collision <level>                         level = 0 或 1
test_can alert <level>                             level = 0 或 1
test_can_all [觀察秒數]                            預設 10 秒

test_buzzer grass
test_buzzer alert
test_buzzer collision
test_buzzer off
test_buzzer_all

te