Merge remote-tracking branch 'official/master'

This commit is contained in:
Jeremiah McCarthy
2021-05-25 09:27:35 -04:00
46 changed files with 1329 additions and 923 deletions

View File

@@ -44,6 +44,10 @@
//--------------------------------------------------------------------+
// Device Data
//--------------------------------------------------------------------+
// Invalid driver ID in itf2drv[] ep2drv[][] mapping
enum { DRVID_INVALID = 0xFFu };
typedef struct
{
struct TU_ATTR_PACKED
@@ -76,9 +80,6 @@ typedef struct
static usbd_device_t _usbd_dev;
// Invalid driver ID in itf2drv[] ep2drv[][] mapping
enum { DRVID_INVALID = 0xFFu };
//--------------------------------------------------------------------+
// Class Driver
//--------------------------------------------------------------------+
@@ -253,6 +254,8 @@ static inline usbd_class_driver_t const * get_driver(uint8_t drvid)
// DCD Event
//--------------------------------------------------------------------+
static bool _usbd_initialized = false;
// Event queue
// OPT_MODE_DEVICE is used by OS NONE for mutex (disable usb isr)
OSAL_QUEUE_DEF(OPT_MODE_DEVICE, _usbd_qdef, CFG_TUD_TASK_QUEUE_SZ, dcd_event_t);
@@ -380,8 +383,16 @@ bool tud_connect(void)
//--------------------------------------------------------------------+
// USBD Task
//--------------------------------------------------------------------+
bool tud_init (void)
bool tud_inited(void)
{
return _usbd_initialized;
}
bool tud_init (uint8_t rhport)
{
// skip if already initialized
if (_usbd_initialized) return _usbd_initialized;
TU_LOG2("USBD init\r\n");
tu_varclr(&_usbd_dev);
@@ -411,8 +422,10 @@ bool tud_init (void)
}
// Init device controller driver
dcd_init(TUD_OPT_RHPORT);
dcd_int_enable(TUD_OPT_RHPORT);
dcd_init(rhport);
dcd_int_enable(rhport);
_usbd_initialized = true;
return true;
}
@@ -1089,7 +1102,7 @@ void dcd_event_xfer_complete (uint8_t rhport, uint8_t ep_addr, uint32_t xferred_
}
//--------------------------------------------------------------------+
// Helper
// USBD API For Class Driver
//--------------------------------------------------------------------+
// Parse consecutive endpoint descriptors (IN & OUT)
@@ -1183,7 +1196,6 @@ bool usbd_edpt_claim(uint8_t rhport, uint8_t ep_addr)
#if CFG_TUSB_OS != OPT_OS_NONE
// pre-check to help reducing mutex lock
TU_VERIFY((_usbd_dev.ep_status[epnum][dir].busy == 0) && (_usbd_dev.ep_status[epnum][dir].claimed == 0));
osal_mutex_lock(_usbd_mutex, OSAL_TIMEOUT_WAIT_FOREVER);
#endif