summaryrefslogtreecommitdiff
path: root/examples/device/usbtest/README.md
AgeCommit message (Collapse)Author
2026-07-07usbtest: document what each battery case does in the READMEhathach
Per-case table: direction convention, what the host verifies, and which device/DCD path each case stresses (EP0 storms, sg queue pressure, unlink, halt/toggle semantics, iso frame deadlines, throughput). Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01HeF2gZ1M7GWkz6Av4BpKPg
2026-07-02example(usbtest): tier 4 - isochronous source/sink (cases 15/16/22/23)hathach
Gadget-Zero parity: alt 0 carries no endpoints, alt 1 the full set (bulk + interrupt + iso IN/OUT, iso FS 128B / HS 512B). The host usbtest driver skips pipe-less altsettings and selects alt 1 itself, so no usbtest module parameters are needed. The complete 30-case battery (all four tiers) passes on stm32f407disco, stm32f723disco, stm32h743nucleo and stm32l476disco, including the ch9 case which now exercises 256 consecutive SET_INTERFACE cycles. Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01HeF2gZ1M7GWkz6Av4BpKPg
2026-07-02example(usbtest): tier 3 - interrupt source/sink (cases 25/26)hathach
The host usbtest driver collects interrupt pipes from the same altsetting as the bulk pair, so the interface grows to 4 endpoints (hand-rolled descriptor: bulk IN/OUT + interrupt IN/OUT, FS 64B interval 1 / HS 512B interval 4) using the vendor class with CFG_TUD_VENDOR_EP_INT_OUT/IN. The interrupt pumps mirror the bulk ones: poll + re-arm from callbacks, self-healing across the halt tests. Full tier-3 battery (26 cases, now incl. 25/26 interrupt write/read) passes on stm32f407disco, stm32f723disco, stm32h743nucleo and stm32l476disco. Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01HeF2gZ1M7GWkz6Av4BpKPg
2026-07-02example(usbtest): tier 2 - vendor control 0x5b/0x5c write/read-backhathach
Gadget-Zero ctrl_out protocol: 0x5b stores the host's wLength bytes in a 1 KiB buffer (multi-packet EP0 data stage), 0x5c returns them for comparison. bcdDevice now advertises tier 2 so the runner adds usbtest cases 14/21. No descriptor change needed: ctrl_out is unlocked by the Gadget Zero capability profile of the dynamic-id binding, not by endpoints (interrupt/iso endpoints come with tiers 3/4). Full tier-2 battery (24 cases) passes on stm32f407disco, stm32f723disco, stm32h743nucleo and stm32l476disco. Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01HeF2gZ1M7GWkz6Av4BpKPg
2026-07-02example(usbtest): add device-side peer for Linux usbtest/testusb (tier 1: ↵hathach
bulk source/sink) Vendor interface with bulk IN source / bulk OUT sink implementing the Gadget-Zero style protocol expected by the kernel usbtest driver. Non-buffered vendor mode keeps every transfer an exact packet multiple so the data-integrity cases never see an unexpected short packet, and polling pumps self-heal after the endpoint-halt cases. Tier (bulk-only for now) is advertised in bcdDevice for the host-side runner. Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01HeF2gZ1M7GWkz6Av4BpKPg