# Hardware Validation Checklist Use this checklist with a real YRobot motor and USB Dongle before marking the project fully complete. ## Environment - Windows 10+ machine. - Built executable: `target/x86_64-pc-windows-gnu/release/yrobot-motor-control-panel.exe`. - One YRobot BLE motor. - One USB Dongle and matching serial driver, if USB mode is being validated. Record: - App version/build time: - Windows version: - Motor identifier: - USB Dongle port: - Tester: - Date/time: ## BLE Direct Mode 1. Start the app and select `BLE`. 2. Select `Left`, `Right`, or `Neutral`. 3. Click `Scan / Refresh`. 4. Confirm target device appears with name/ref/RSSI and preferred marker when applicable. 5. Click `Stop Scan` and confirm discovery stops. 6. Select the device and click `Connect BLE`. 7. Confirm status becomes `Connected` only after BLE notify is ready. 8. Keep the session open for at least 30 seconds and confirm no heartbeat error appears. 9. Send: - Query Current - Query Mode - Set Params - Enable Realtime - Disable Realtime 10. Confirm TX events and RX events appear in the event log. 11. Confirm realtime samples appear in chart/status when debug stream is enabled. 12. Click `Disconnect` and confirm connection closes and heartbeat stops. Pass criteria: - No app crash. - No stale scanning after stop/disconnect. - Commands are logged. - Realtime data parses without blocking valid fields. - Latest error is empty or explains any hardware/protocol issue. ## USB Dongle Mode 1. Start the app and select `USB Dongle`. 2. Refresh ports and select the Dongle serial port. 3. Click `Open USB`. 4. Confirm status becomes `Connected` with `115200 8N1`. 5. Keep the session open for at least 30 seconds and confirm heartbeat starts only after serial open. 6. Send: - Query Current - Query Mode - Set Params - Enable Realtime - Disable Realtime 7. Confirm USB RX events include `DEV`, `LEN`, `seq_id`, and `dt_ms`. 8. Confirm USB statistics show: - seq gaps - out-of-order count - USB dt avg/max - host interval avg/max 9. Disconnect and confirm serial resources are released. Pass criteria: - No app crash. - Serial open failure is shown as a recoverable error. - Downlink uses `DEV=0x31`. - Uplink strips `seq_id`/`dt_ms` before motor parser. - USB metadata is visible in event log/status/CSV. ## CSV Recording 1. Connect through BLE or USB. 2. Set a writable CSV path. 3. Start recording. 4. Enable realtime debug and collect at least 100 samples. 5. Stop recording. 6. Open the CSV and confirm it contains: - timestamp - connection mode - target id - side - raw debug string - parsed current/velocity/position/voltage/temperature - USB `seq_id`/`dt_ms` for USB mode 7. Repeat with recording active, then disconnect. Confirm CSV is flushed and readable. Pass criteria: - CSV is not created before recording starts. - CSV write errors are shown and recording stops. - Session end closes the file cleanly. ## Stability Run one session for at least 1 hour before release, and 8 hours for final acceptance. Record every 15 minutes: - sample count - app memory usage - latest error - drop rate - USB seq gaps/out-of-order, if USB mode Pass criteria: - UI remains responsive. - Control, display, CSV, and statistics work concurrently. - No obvious memory growth above 100 MB over the acceptance run. - Disconnect closes scan/session/CSV resources. ## Result - BLE Direct: Pass / Fail - USB Dongle: Pass / Fail - CSV Recording: Pass / Fail - Stability: Pass / Fail Notes: