Skip to content

Commit 5632e53

Browse files
committed
update tinyusb tud_descriptor_configuration_cb
1 parent caf36be commit 5632e53

File tree

4 files changed

+10
-10
lines changed

4 files changed

+10
-10
lines changed

cores/arduino/Adafruit_TinyUSB_Core/Adafruit_USBD_Device.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -157,10 +157,10 @@ uint8_t const * tud_descriptor_device_cb(void)
157157
}
158158

159159
// Invoked when received GET CONFIGURATION DESCRIPTOR
160-
// Application return pointer to descriptor
161-
// Descriptor contents must exist long enough for transfer to complete
162-
uint8_t const * tud_descriptor_configuration_cb(void)
160+
// Application return pointer to descriptor, whose contents must exist long enough for transfer to complete
161+
uint8_t const * tud_descriptor_configuration_cb(uint8_t index)
163162
{
163+
(void) index; // for multiple configurations
164164
return USBDevice._desc_cfg;
165165
}
166166

cores/arduino/Adafruit_TinyUSB_Core/Adafruit_USBD_Device.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ class Adafruit_USBD_Device
6060
bool remoteWakeup(void) { return tud_remote_wakeup(); }
6161

6262
friend uint8_t const * tud_descriptor_device_cb(void);
63-
friend uint8_t const * tud_descriptor_configuration_cb(void);
63+
friend uint8_t const * tud_descriptor_configuration_cb(uint8_t index);
6464
};
6565

6666
extern Adafruit_USBD_Device USBDevice;

cores/arduino/Adafruit_TinyUSB_Core/tinyusb/src/device/usbd.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ static osal_queue_t _usbd_q;
159159
//--------------------------------------------------------------------+
160160
static void mark_interface_endpoint(uint8_t ep2drv[8][2], uint8_t const* p_desc, uint16_t desc_len, uint8_t driver_id);
161161
static bool process_control_request(uint8_t rhport, tusb_control_request_t const * p_request);
162-
static bool process_set_config(uint8_t rhport);
162+
static bool process_set_config(uint8_t rhport, uint8_t cfg_num);
163163
static bool process_get_descriptor(uint8_t rhport, tusb_control_request_t const * p_request);
164164

165165
void usbd_control_reset (uint8_t rhport);
@@ -376,7 +376,7 @@ static bool process_control_request(uint8_t rhport, tusb_control_request_t const
376376
dcd_set_config(rhport, cfg_num);
377377
_usbd_dev.configured = cfg_num ? 1 : 0;
378378

379-
TU_ASSERT( process_set_config(rhport) );
379+
if ( cfg_num ) TU_ASSERT( process_set_config(rhport, cfg_num) );
380380
usbd_control_status(rhport, p_request);
381381
}
382382
break;
@@ -477,9 +477,9 @@ static bool process_control_request(uint8_t rhport, tusb_control_request_t const
477477

478478
// Process Set Configure Request
479479
// This function parse configuration descriptor & open drivers accordingly
480-
static bool process_set_config(uint8_t rhport)
480+
static bool process_set_config(uint8_t rhport, uint8_t cfg_num)
481481
{
482-
tusb_desc_configuration_t const * desc_cfg = (tusb_desc_configuration_t const *) tud_descriptor_configuration_cb();
482+
tusb_desc_configuration_t const * desc_cfg = (tusb_desc_configuration_t const *) tud_descriptor_configuration_cb(cfg_num-1); // index is cfg_num-1
483483
TU_ASSERT(desc_cfg != NULL && desc_cfg->bDescriptorType == TUSB_DESC_CONFIGURATION);
484484

485485
// Parse configuration descriptor
@@ -563,7 +563,7 @@ static bool process_get_descriptor(uint8_t rhport, tusb_control_request_t const
563563

564564
case TUSB_DESC_CONFIGURATION:
565565
{
566-
tusb_desc_configuration_t const* desc_config = (tusb_desc_configuration_t const*) tud_descriptor_configuration_cb();
566+
tusb_desc_configuration_t const* desc_config = (tusb_desc_configuration_t const*) tud_descriptor_configuration_cb(desc_index);
567567
return usbd_control_xfer(rhport, p_request, (void*) desc_config, desc_config->wTotalLength);
568568
}
569569
break;

cores/arduino/Adafruit_TinyUSB_Core/tinyusb/src/device/usbd.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ uint8_t const * tud_descriptor_device_cb(void);
6969

7070
// Invoked when received GET CONFIGURATION DESCRIPTOR request
7171
// Application return pointer to descriptor, whose contents must exist long enough for transfer to complete
72-
uint8_t const * tud_descriptor_configuration_cb(void);
72+
uint8_t const * tud_descriptor_configuration_cb(uint8_t index);
7373

7474
// Invoked when received GET STRING DESCRIPTOR request
7575
// Application return pointer to descriptor, whose contents must exist long enough for transfer to complete

0 commit comments

Comments
 (0)