Add hooks to allow cloning an attached USB device descriptor
This commit is contained in:
@@ -56,7 +56,7 @@ typedef struct
|
|||||||
static usbd_control_xfer_t _ctrl_xfer;
|
static usbd_control_xfer_t _ctrl_xfer;
|
||||||
|
|
||||||
CFG_TUSB_MEM_SECTION CFG_TUSB_MEM_ALIGN
|
CFG_TUSB_MEM_SECTION CFG_TUSB_MEM_ALIGN
|
||||||
static uint8_t _usbd_ctrl_buf[CFG_TUD_ENDPOINT0_SIZE];
|
static uint8_t _usbd_ctrl_buf[/*CFG_TUD_ENDPOINT0_SIZE*/ 64];
|
||||||
|
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
// Application API
|
// Application API
|
||||||
|
@@ -1323,7 +1323,7 @@ static void process_enumeration(tuh_xfer_t* xfer)
|
|||||||
dev->i_product = desc_device->iProduct;
|
dev->i_product = desc_device->iProduct;
|
||||||
dev->i_serial = desc_device->iSerialNumber;
|
dev->i_serial = desc_device->iSerialNumber;
|
||||||
|
|
||||||
// if (tuh_attach_cb) tuh_attach_cb((tusb_desc_device_t*) _usbh_ctrl_buf);
|
if (tuh_desc_device_cb) tuh_desc_device_cb(daddr, (tusb_desc_device_t const*) _usbh_ctrl_buf);
|
||||||
|
|
||||||
// Get 9-byte for total length
|
// Get 9-byte for total length
|
||||||
uint8_t const config_idx = CONFIG_NUM - 1;
|
uint8_t const config_idx = CONFIG_NUM - 1;
|
||||||
@@ -1350,9 +1350,12 @@ static void process_enumeration(tuh_xfer_t* xfer)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case ENUM_SET_CONFIG:
|
case ENUM_SET_CONFIG:
|
||||||
|
// Got the whole configuration descriptor. Make a copy
|
||||||
|
if (tuh_desc_config_cb) tuh_desc_config_cb(daddr, (const tusb_desc_configuration_t*) _usbh_ctrl_buf);
|
||||||
|
|
||||||
// Parse configuration & set up drivers
|
// Parse configuration & set up drivers
|
||||||
// Driver open aren't allowed to make any usb transfer yet
|
// Driver open aren't allowed to make any usb transfer yet
|
||||||
TU_ASSERT( _parse_configuration_descriptor(daddr, (tusb_desc_configuration_t*) _usbh_ctrl_buf), );
|
TU_ASSERT( _parse_configuration_descriptor(daddr, (const tusb_desc_configuration_t* ) _usbh_ctrl_buf), );
|
||||||
|
|
||||||
TU_ASSERT( tuh_configuration_set(daddr, CONFIG_NUM, process_enumeration, ENUM_CONFIG_DRIVER), );
|
TU_ASSERT( tuh_configuration_set(daddr, CONFIG_NUM, process_enumeration, ENUM_CONFIG_DRIVER), );
|
||||||
break;
|
break;
|
||||||
|
@@ -78,7 +78,11 @@ enum
|
|||||||
// APPLICATION CALLBACK
|
// APPLICATION CALLBACK
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
|
|
||||||
//TU_ATTR_WEAK uint8_t tuh_attach_cb (tusb_desc_device_t const *desc_device);
|
// Give the application an opportunity to grab the device descriptor
|
||||||
|
TU_ATTR_WEAK void tuh_desc_device_cb(uint8_t daddr, const tusb_desc_device_t *desc_device);
|
||||||
|
|
||||||
|
// Give the application an opportunity to grab the configuration descriptor
|
||||||
|
TU_ATTR_WEAK void tuh_desc_config_cb(uint8_t daddr, const tusb_desc_configuration_t *desc_config);
|
||||||
|
|
||||||
// Invoked when device is mounted (configured)
|
// Invoked when device is mounted (configured)
|
||||||
TU_ATTR_WEAK void tuh_mount_cb (uint8_t daddr);
|
TU_ATTR_WEAK void tuh_mount_cb (uint8_t daddr);
|
||||||
|
@@ -427,9 +427,9 @@ typedef int make_iso_compilers_happy;
|
|||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
// Configuration Validation
|
// Configuration Validation
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
#if CFG_TUD_ENDPOINT0_SIZE > 64
|
//#if CFG_TUD_ENDPOINT0_SIZE > 64
|
||||||
#error Control Endpoint Max Packet Size cannot be larger than 64
|
// #error Control Endpoint Max Packet Size cannot be larger than 64
|
||||||
#endif
|
//#endif
|
||||||
|
|
||||||
#endif /* _TUSB_OPTION_H_ */
|
#endif /* _TUSB_OPTION_H_ */
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user