summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorice458 <[email protected]>2026-08-14 16:23:38 +0900
committerice458 <[email protected]>2026-08-14 16:23:38 +0900
commitaf81f9ef42254301c2239eed657b0adce8b466b0 (patch)
treec80bd661f33d9daa1e43c2699ddaca3bf1c99b34 /src
parent282d46e68d9100af0dfdcc01e7689bb63bbf8419 (diff)
usbtmc: document why the trigger re-arm result is ignored
A false return from tud_usbtmc_start_bus_read() here does not mean arming failed: it means the endpoint is already armed, either because the application re-armed it from its trigger callback or because a transfer is still queued (usbd_edpt_xfer() reports failure when the endpoint is busy). Both cases end in STATE_IDLE, so the state cannot disambiguate them either, and stalling on the result would halt a healthy endpoint. Co-Authored-By: Claude Opus 5 <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/class/usbtmc/usbtmc_device.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/class/usbtmc/usbtmc_device.c b/src/class/usbtmc/usbtmc_device.c
index e248341ac..0e9978a81 100644
--- a/src/class/usbtmc/usbtmc_device.c
+++ b/src/class/usbtmc/usbtmc_device.c
@@ -511,6 +511,9 @@ bool usbtmcd_xfer_cb(uint8_t rhport, uint8_t ep_addr, xfer_result_t result, uint
usbd_edpt_stall(rhport, usbtmc_state.ep_bulk_out);
return false;
}
+ // Result deliberately ignored: false here means the endpoint is already armed - either the
+ // application re-armed it from its callback, or a transfer is still queued - not that arming
+ // failed. Stalling on it would halt a healthy endpoint.
tud_usbtmc_start_bus_read();
break;