summaryrefslogtreecommitdiff
path: root/src/device/usbd_control.c
diff options
context:
space:
mode:
authorhathach <[email protected]>2019-11-28 13:39:29 +0700
committerhathach <[email protected]>2019-11-28 13:39:29 +0700
commitd7558e8a0f12c685f2690c985e5f75df0777065b (patch)
tree2bc43b629a9e184319592afbd65e49fadb3280da /src/device/usbd_control.c
parentac701c398b4e9a43eefe0ee0be38579ca17535df (diff)
use dcd_edpt0_status_complete() to set address without blocking for samd21/samd51/stm32_fsdev
Diffstat (limited to 'src/device/usbd_control.c')
-rw-r--r--src/device/usbd_control.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/device/usbd_control.c b/src/device/usbd_control.c
index 8b9b8f1cf..e6d1caf4b 100644
--- a/src/device/usbd_control.c
+++ b/src/device/usbd_control.c
@@ -119,9 +119,8 @@ bool tud_control_xfer(uint8_t rhport, tusb_control_request_t const * request, vo
// USBD API
//--------------------------------------------------------------------+
-void usbd_control_reset (uint8_t rhport)
+void usbd_control_reset(void)
{
- (void) rhport;
tu_varclr(&_ctrl_xfer);
}
@@ -131,6 +130,15 @@ void usbd_control_set_complete_callback( bool (*fp) (uint8_t, tusb_control_reque
_ctrl_xfer.complete_cb = fp;
}
+// useful for dcd_set_address where DCD is responsible for status response
+void usbd_control_set_request(tusb_control_request_t const *request)
+{
+ _ctrl_xfer.request = (*request);
+ _ctrl_xfer.buffer = NULL;
+ _ctrl_xfer.total_xferred = 0;
+ _ctrl_xfer.data_len = 0;
+}
+
// callback when a transaction complete on
// - DATA stage of control endpoint or
// - Status stage