![]()
![]()
#include "tusb_option.h"
![]()
![]()
#include "device/dcd.h"
![]()
![]()
#include "tusb.h"
![]()
![]()
#include "common/tusb_private.h"
![]()
![]()
#include "device/usbd.h"
![]()
![]()
#include "device/usbd_pvt.h"
![]()
![]()
#define CFG_TUD_TASK_QUEUE_SZ
![]()
![]()
tud_event_hook_cb(uint8_t, uint32_t, bool)
![]()
![]()
tud_sof_cb(uint32_t)
![]()
![]()
tud_descriptor_bos_cb()
![]()
![]()
tud_descriptor_device_qualifier_cb()
![]()
![]()
tud_descriptor_other_speed_configuration_cb(uint8_t)
![]()
![]()
tud_mount_cb()
![]()
![]()
tud_umount_cb()
![]()
![]()
tud_suspend_cb(bool)
![]()
![]()
tud_resume_cb()
![]()
![]()
tud_vendor_control_xfer_cb(uint8_t, uint8_t, const tusb_control_request_t *)
![]()
![]()
dcd_deinit(uint8_t)
![]()
![]()
dcd_connect(uint8_t)
![]()
![]()
dcd_disconnect(uint8_t)
![]()
![]()
<anonymous enum>
![]()
![]()
DRVID_INVALID
![]()
![]()
usbd_device_t
![]()
![]()
<anonymous struct>
![]()
![]()
connected
![]()
![]()
addressed
![]()
![]()
suspended
![]()
![]()
remote_wakeup_en
![]()
![]()
remote_wakeup_support
![]()
![]()
self_powered
![]()
![]()
cfg_num
![]()
![]()
speed
![]()
![]()
sof_consumer
![]()
![]()
itf2drv
![]()
![]()
ep2drv
![]()
![]()
ep_status
![]()
![]()
_usbd_dev
![]()
![]()
_usbd_queued_setup
![]()
![]()
#define DRIVER_NAME
![]()
![]()
#define DRIVER_NAME
![]()
![]()
_usbd_driver
![]()
![]()
<anonymous enum>
![]()
![]()
BUILTIN_DRIVER_COUNT
![]()
![]()
_app_driver
![]()
![]()
_app_driver_count
![]()
![]()
#define TOTAL_DRIVER_COUNT
![]()
![]()
get_driver(uint8_t)
![]()
![]()
if
(drvid < _app_driver_count)
![]()
![]()
else if
(drvid < TOTAL_DRIVER_COUNT && BUILTIN_DRIVER_COUNT > 0)
![]()
![]()
<anonymous enum>
![]()
![]()
RHPORT_INVALID
![]()
![]()
_usbd_rhport
![]()
![]()
_usbd_qdef_buf
![]()
![]()
_usbd_qdef
![]()
![]()
_usbd_q
![]()
![]()
_ubsd_mutexdef
![]()
![]()
_usbd_mutex
![]()
![]()
#define _usbd_mutex
![]()
![]()
queue_event(const dcd_event_t *, bool)
![]()
![]()
tud_speed_get()
![]()
![]()
tud_connected()
![]()
![]()
tud_mounted()
![]()
![]()
tud_suspended()
![]()
![]()
tud_remote_wakeup()
![]()
![]()
tud_disconnect()
![]()
![]()
tud_connect()
![]()
![]()
tud_sof_cb_enable(bool)
![]()
![]()
tud_inited()
![]()
![]()
tud_init(uint8_t)
![]()
![]()
if
(usbd_app_driver_get_cb)
![]()
![]()
for
(uint8_t i = 0; i < TOTAL_DRIVER_COUNT; i++)
![]()
![]()
tud_deinit(uint8_t)
![]()
![]()
for
(uint8_t i = 0; i < TOTAL_DRIVER_COUNT; i++)
![]()
![]()
if
(driver && driver->deinit)
![]()
![]()
configuration_reset(uint8_t)
![]()
![]()
for
(uint8_t i = 0; i < TOTAL_DRIVER_COUNT; i++)
![]()
![]()
usbd_reset(uint8_t)
![]()
![]()
tud_task_event_ready()
![]()
![]()
tud_task_ext(uint32_t, bool)
![]()
![]()
while
(1)
![]()
![]()
switch
(event.event_id)
![]()
![]()
case
DCD_EVENT_BUS_RESET:
![]()
![]()
case
DCD_EVENT_UNPLUGGED:
![]()
![]()
case
DCD_EVENT_SETUP_RECEIVED:
![]()
![]()
if
(_usbd_queued_setup)
![]()
![]()
if
(!process_control_request(event.rhport, &event.setup_received))
![]()
![]()
case
DCD_EVENT_XFER_COMPLETE:
![]()
![]()
if
(0 == epnum)
![]()
![]()
else
![]()
![]()
case
DCD_EVENT_SUSPEND:
![]()
![]()
if
(_usbd_dev.connected)
![]()
![]()
else
![]()
![]()
case
DCD_EVENT_RESUME:
![]()
![]()
if
(_usbd_dev.connected)
![]()
![]()
else
![]()
![]()
case
USBD_EVENT_FUNC_CALL:
![]()
![]()
case
DCD_EVENT_SOF:
![]()
![]()
if
(tu_bit_test(_usbd_dev.sof_consumer, SOF_CONSUMER_USER))
![]()
![]()
default
![]()
![]()
invoke_class_control(uint8_t, const usbd_class_driver_t *, const tusb_control_request_t *)
![]()
![]()
process_control_request(uint8_t, const tusb_control_request_t *)
![]()
![]()
if
(p_request->bmRequestType_bit.type == TUSB_REQ_TYPE_VENDOR)
![]()
![]()
if
(TUSB_REQ_TYPE_STANDARD == p_request->bmRequestType_bit.type && p_request->bRequest <= TUSB_REQ_SYNCH_FRAME)
![]()
![]()
switch
(p_request->bmRequestType_bit.recipient)
![]()
![]()
case
TUSB_REQ_RCPT_DEVICE:
![]()
![]()
if
(TUSB_REQ_TYPE_CLASS == p_request->bmRequestType_bit.type)
![]()
![]()
if
(TUSB_REQ_TYPE_STANDARD != p_request->bmRequestType_bit.type)
![]()
![]()
switch
(p_request->bRequest)
![]()
![]()
case
TUSB_REQ_SET_ADDRESS:
![]()
![]()
case
TUSB_REQ_GET_CONFIGURATION:
![]()
![]()
case
TUSB_REQ_SET_CONFIGURATION:
![]()
![]()
if
(_usbd_dev.cfg_num != cfg_num)
![]()
![]()
if
(_usbd_dev.cfg_num)
![]()
![]()
if
(cfg_num)
![]()
![]()
if
(!process_set_config(rhport, cfg_num))
![]()
![]()
else
![]()
![]()
case
TUSB_REQ_GET_DESCRIPTOR:
![]()
![]()
case
TUSB_REQ_SET_FEATURE:
![]()
![]()
switch
(p_request->wValue)
![]()
![]()
case
TUSB_REQ_FEATURE_REMOTE_WAKEUP:
![]()
![]()
case
TUSB_REQ_FEATURE_TEST_MODE:
![]()
![]()
default
![]()
![]()
case
TUSB_REQ_CLEAR_FEATURE:
![]()
![]()
case
TUSB_REQ_GET_STATUS:
![]()
![]()
default
![]()
![]()
case
TUSB_REQ_RCPT_INTERFACE:
![]()
![]()
if
(!invoke_class_control(rhport, driver, p_request))
![]()
![]()
switch
(p_request->bRequest)
![]()
![]()
case
TUSB_REQ_GET_INTERFACE:
![]()
![]()
case
TUSB_REQ_SET_INTERFACE:
![]()
![]()
if
(TUSB_REQ_GET_INTERFACE == p_request->bRequest)
![]()
![]()
default
![]()
![]()
case
TUSB_REQ_RCPT_ENDPOINT:
![]()
![]()
if
(TUSB_REQ_TYPE_STANDARD != p_request->bmRequestType_bit.type)
![]()
![]()
else
![]()
![]()
switch
(p_request->bRequest)
![]()
![]()
case
TUSB_REQ_GET_STATUS:
![]()
![]()
case
TUSB_REQ_CLEAR_FEATURE:
![]()
![]()
case
TUSB_REQ_SET_FEATURE:
![]()
![]()
if
(TUSB_REQ_FEATURE_EDPT_HALT == p_request->wValue)
![]()
![]()
if
(TUSB_REQ_CLEAR_FEATURE == p_request->bRequest)
![]()
![]()
if
(driver)
![]()
![]()
default
![]()
![]()
default
![]()
![]()
process_set_config(uint8_t, uint8_t)
![]()
![]()
while
(p_desc < desc_end)
![]()
![]()
if
(TUSB_DESC_INTERFACE_ASSOCIATION == tu_desc_type(p_desc))
![]()
![]()
for
(drv_id = 0; drv_id < TOTAL_DRIVER_COUNT; drv_id++)
![]()
![]()
if
((sizeof(tusb_desc_interface_t) <= drv_len) && (drv_len <= remaining_len))
![]()
![]()
if
(assoc_itf_count == 1)
![]()
![]()
for
(uint8_t i=0; i<assoc_itf_count; i++)
![]()
![]()
process_get_descriptor(uint8_t, const tusb_control_request_t *)
![]()
![]()
switch
(desc_type)
![]()
![]()
case
TUSB_DESC_DEVICE:
![]()
![]()
if
((CFG_TUD_ENDPOINT0_SIZE < sizeof(tusb_desc_device_t)) && !_usbd_dev.addressed && ((tusb_control_request_t const*) p_request)->wLength > sizeof(tusb_desc_device_t))
![]()
![]()
case
TUSB_DESC_BOS:
![]()
![]()
case
TUSB_DESC_CONFIGURATION:
![]()
![]()
case
TUSB_DESC_OTHER_SPEED_CONFIG:
![]()
![]()
if
(desc_type == TUSB_DESC_CONFIGURATION)
![]()
![]()
case
TUSB_DESC_STRING:
![]()
![]()
case
TUSB_DESC_DEVICE_QUALIFIER:
![]()
![]()
default
![]()
![]()
dcd_event_handler(const dcd_event_t *, bool)
![]()
![]()
switch
(event->event_id)
![]()
![]()
case
DCD_EVENT_UNPLUGGED:
![]()
![]()
case
DCD_EVENT_SUSPEND:
![]()
![]()
if
(_usbd_dev.connected)
![]()
![]()
case
DCD_EVENT_RESUME:
![]()
![]()
if
(_usbd_dev.connected)
![]()
![]()
case
DCD_EVENT_SOF:
![]()
![]()
for
(uint8_t i = 0; i < TOTAL_DRIVER_COUNT; i++)
![]()
![]()
if
(driver && driver->sof)
![]()
![]()
if
(_usbd_dev.suspended)
![]()
![]()
if
(tu_bit_test(_usbd_dev.sof_consumer, SOF_CONSUMER_USER))
![]()
![]()
case
DCD_EVENT_SETUP_RECEIVED:
![]()
![]()
default
![]()
![]()
if
(send)
![]()
![]()
usbd_int_set(bool)
![]()
![]()
if
(enabled)
![]()
![]()
usbd_open_edpt_pair(uint8_t, const uint8_t *, uint8_t, uint8_t, uint8_t *, uint8_t *)
![]()
![]()
for
(int i=0; i<ep_count; i++)
![]()
![]()
if
(tu_edpt_dir(desc_ep->bEndpointAddress) == TUSB_DIR_IN)
![]()
![]()
usbd_defer_func(osal_task_func_t, void *, bool)
![]()
![]()
usbd_edpt_open(uint8_t, const tusb_desc_endpoint_t *)
![]()
![]()
usbd_edpt_claim(uint8_t, uint8_t)
![]()
![]()
usbd_edpt_release(uint8_t, uint8_t)
![]()
![]()
usbd_edpt_xfer(uint8_t, uint8_t, uint8_t *, uint16_t)
![]()
![]()
if
(dir == TUSB_DIR_IN)
![]()
![]()
if
(dcd_edpt_xfer(rhport, ep_addr, buffer, total_bytes))
![]()
![]()
else
![]()
![]()
usbd_edpt_xfer_fifo(uint8_t, uint8_t, tu_fifo_t *, uint16_t)
![]()
![]()
if
(dcd_edpt_xfer_fifo(rhport, ep_addr, ff, total_bytes))
![]()
![]()
else
![]()
![]()
usbd_edpt_busy(uint8_t, uint8_t)
![]()
![]()
usbd_edpt_stall(uint8_t, uint8_t)
![]()
![]()
usbd_edpt_clear_stall(uint8_t, uint8_t)
![]()
![]()
usbd_edpt_stalled(uint8_t, uint8_t)
![]()
![]()
usbd_edpt_close(uint8_t, uint8_t)
![]()
![]()
usbd_sof_enable(uint8_t, sof_consumer_t, bool)
![]()
![]()
if
(en)
![]()
![]()
else
![]()
![]()
if
(!_usbd_dev.sof_consumer != !consumer_old)
![]()
![]()
usbd_edpt_iso_alloc(uint8_t, uint8_t, uint16_t)
![]()
![]()
usbd_edpt_iso_activate(uint8_t, const tusb_desc_endpoint_t *)