diff options
| author | hathach <[email protected]> | 2026-07-17 12:07:50 +0700 |
|---|---|---|
| committer | hathach <[email protected]> | 2026-07-17 12:07:50 +0700 |
| commit | a68d776ac072725266ab53b64b29d4405090281f (patch) | |
| tree | cd0c00e73b02846e2922ca7922015ba18b534084 /docs/reference | |
| parent | a2f0c3c1baea4f0129d14d1a85c7fe8b307a2405 (diff) | |
vendor: deactivate de-selected altsetting's isochronous endpoints
vendord_set_alt() aborted bulk/interrupt endpoints of the outgoing
altsetting (stall/clear-stall) but only dropped the iso endpoints'
tracking: an armed iso transfer stayed live in the dcd with its usbd
claim held and no tracked handle to stop it, and its completion fired
into an endpoint the class no longer recognizes. Reachable through the
usbtest example's alt0 (bulk) <-> alt1 (iso) SET_INTERFACE switching.
Track each selected iso endpoint's descriptor (points into the app's
static descriptor set) and deactivate on de-selection: with the
iso-alloc API re-activation is the abort/scrub primitive (resets
ep_status, aborts the stale transfer); without it usbd_edpt_close does,
and the next selection re-opens. Iso cannot be stalled like
bulk/interrupt, hence the separate path.
Build-verified: usbtest for stm32f072disco, ra4m1_ek, raspberry_pi_pico
(iso-alloc) and ch32v307v_r1_1v0 (close API).
Diffstat (limited to 'docs/reference')
0 files changed, 0 insertions, 0 deletions
