summaryrefslogtreecommitdiff
path: root/src/host
diff options
context:
space:
mode:
authorZixun LI <[email protected]>2026-03-29 15:22:49 +0200
committerGitHub <[email protected]>2026-03-29 15:22:49 +0200
commitc64452cda50f126a339f776b5cdc3762ca82ff6e (patch)
tree098a8191426904ffb099c4b5dfc9e38cfb7286ab /src/host
parentbf8f0ec2a24339510810e2d1d473da8dfa187950 (diff)
parent653e6300a3dafbfb9f448879eaf874dca3e86a12 (diff)
Merge pull request #3566 from Precidata/async-cleanup
Couple of random cleanup patches following async PR
Diffstat (limited to 'src/host')
-rw-r--r--src/host/usbh.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/host/usbh.c b/src/host/usbh.c
index 75df6bf60..8f80800e9 100644
--- a/src/host/usbh.c
+++ b/src/host/usbh.c
@@ -374,7 +374,8 @@ bool usbh_defer_func_ms_async(uint32_t ms, tusb_defer_func_t func, uintptr_t par
TU_LOG_USBH("USBH schedule function after %u ms\r\n", (unsigned int)ms);
_usbh_data.call_after.func = func;
_usbh_data.call_after.arg = param;
- _usbh_data.call_after.at_ms = tusb_time_millis_api() + ms;
+ // add one to ensure we wait at least 'ms' milliseconds
+ _usbh_data.call_after.at_ms = tusb_time_millis_api() + ms + 1;
return true;
}
@@ -610,11 +611,19 @@ bool tuh_task_event_ready(void) {
}
#if CFG_TUH_HUB
- if (!osal_queue_empty(_usbh_daq)) {
+ if (_usbh_data.enumerating_daddr == TUSB_INDEX_INVALID_8 &&
+ !osal_queue_empty(_usbh_daq)) {
return true;
}
#endif
+ if (_usbh_data.call_after.func) {
+ int32_t remain_ms = (int32_t)(_usbh_data.call_after.at_ms - tusb_time_millis_api());
+ if (remain_ms <= 0) {
+ return true;
+ }
+ }
+
return false;
}