summaryrefslogtreecommitdiff
path: root/tinyusb/device
diff options
context:
space:
mode:
Diffstat (limited to 'tinyusb/device')
-rw-r--r--tinyusb/device/usbd.c9
-rw-r--r--tinyusb/device/usbd.h7
2 files changed, 11 insertions, 5 deletions
diff --git a/tinyusb/device/usbd.c b/tinyusb/device/usbd.c
index ed72a2000..f7500b6ed 100644
--- a/tinyusb/device/usbd.c
+++ b/tinyusb/device/usbd.c
@@ -302,7 +302,7 @@ tusb_error_t usbd_control_xfer_substak(uint8_t port, tusb_dir_t dir, uint8_t * b
}
// Status opposite direction with Zero Length
- tusb_dcd_control_xfer(port, (tusb_dir_t) (1-dir), NULL, 0, true);
+ usbd_control_status(port, 1-dir);
// no need to blocking wait for status to complete
@@ -329,7 +329,6 @@ tusb_error_t usbd_control_request_subtask(uint8_t port, tusb_control_request_t c
if ( TUSB_ERROR_NONE == error )
{
-// tusb_dcd_control_xfer(port, (tusb_dir_t) p_request->bmRequestType_bit.direction, (uint8_t*) p_buffer, length, false);
OSAL_SUBTASK_INVOKED ( usbd_control_xfer_substak(port, (tusb_dir_t) p_request->bmRequestType_bit.direction, (uint8_t*) p_buffer, length ), error );;
}
}
@@ -379,12 +378,12 @@ tusb_error_t usbd_control_request_subtask(uint8_t port, tusb_control_request_t c
}
if(TUSB_ERROR_NONE != error)
- { // Response with Protocol Stall if request is not supported
+ {
+ // Response with Protocol Stall if request is not supported
tusb_dcd_control_stall(port);
}else if (p_request->wLength == 0)
{
- // zero length for non-data
- tusb_dcd_control_xfer(port, (tusb_dir_t) p_request->bmRequestType_bit.direction, NULL, 0, false);
+ usbd_control_status(port, (tusb_dir_t) p_request->bmRequestType_bit.direction);
}
OSAL_SUBTASK_END
diff --git a/tinyusb/device/usbd.h b/tinyusb/device/usbd.h
index 8926d225c..cf607f645 100644
--- a/tinyusb/device/usbd.h
+++ b/tinyusb/device/usbd.h
@@ -130,6 +130,13 @@ void tud_umount_cb(uint8_t port);
extern osal_semaphore_t usbd_control_xfer_sem_hdl;
+tusb_error_t usbd_control_xfer_substak(uint8_t port, tusb_dir_t dir, uint8_t * buffer, uint16_t length);
+
+static inline bool usbd_control_status(uint8_t port, tusb_dir_t dir)
+{
+ tusb_dcd_control_xfer(port , dir, NULL, 0, false);
+}
+
tusb_error_t usbd_init(void);
void usbd_task( void* param);