# Phase 5: Cable Test Integration - Context **Gathered:** 2026-04-10 **Status:** Ready for planning **Mode:** Auto-generated (autonomous mode) ## Phase Boundary Any cable can be tested, its results written to NetBox, and a label printed in a rapid test-verify-print workflow without leaving the Cable Test Station view. This phase delivers Treedix USB/DP/HDMI tester drivers, FNIRSI FNB58 power meter integration, cable test workflow UI, and auto-NetBox-record creation from test data. ## Implementation Decisions ### Hardware Status - Treedix USB/DP/HDMI testers + FNIRSI FNB58 arrive 2026-04-13 - Build code-complete with mock testers - Real protocol reverse-engineering deferred to operator - FNIRSI FNB58 has working community library: github.com/baryluk/fnirsi-usb-power-data-logger ### Tester Driver Architecture - TesterDriver interface: Connect(), Read() (TestResult), Disconnect() - Per-tester implementations: TreedixUSBDriver, TreedixDPDriver, TreedixHDMIDriver, FNB58Driver - Auto-detect by VID/PID using existing USB Manager - TestResult struct holds all common fields (continuity, version, speed, etc.) ### Cable Test Station UI - New /test route with three panels: tester readout, label preview, recent tests - Live SSE updates from tester - "Print & Next" button: creates NetBox cable record + prints label + clears for next - Mobile-friendly for bench use ### NetBox Integration - Cable record created via netbox client (CreateCable method needed if absent) - test_data custom field stores structured JSON - catalog_status auto-set to "complete" after test ### Backend Endpoints - POST /api/test/cable — receives test result, creates cable record in NetBox - GET /api/test/events — SSE for live tester data - GET /api/test/recent — last N test results ## Existing Code Insights ### Reusable Assets - internal/usb/manager.go — for tester USB device management - internal/printer/ — auto-print labels - internal/labels/cable.go — cable label renderer (Phase 4) - internal/netbox/client.go — needs CreateCable method - internal/netbox/types.go — Device type (cables are netbox cables, slightly different) ### Integration Points - Add internal/tester/ package - Add internal/api/handlers/test.go - Add web/src/pages/CableTestPage.tsx - Wire route /test in router.tsx ## Specific Ideas - TreedixUSBDriver mock returns deterministic test data for unit tests - FNB58Driver uses raw HID protocol (per baryluk reference) - Test result includes: cable_type, version, speed_gbps, max_power_w, pin_continuity, eMarker, resistance_ohm - Auto-print uses cable label template from Phase 4 ## Deferred Ideas - Real Treedix protocol implementation (hardware required) - Real FNIRSI FNB58 protocol (community lib reference, hardware required) - Network discovery / DUT identification