summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsakumisu <[email protected]>2025-11-27 22:43:16 +0800
committersakumisu <[email protected]>2025-11-28 11:40:24 +0800
commit37593317d41dde8803c5526882bf8d1c57b85668 (patch)
tree1706b4e863a066ec0c907f92eef11835a008985f
parentc3792481632d5846b91b97e3b3da307c9ac12aaa (diff)
feat(core/usbh_core): support custom config index
Signed-off-by: sakumisu <[email protected]>
-rw-r--r--core/usbh_core.c7
-rw-r--r--core/usbh_core.h1
2 files changed, 7 insertions, 1 deletions
diff --git a/core/usbh_core.c b/core/usbh_core.c
index c66971b4..4a5211f4 100644
--- a/core/usbh_core.c
+++ b/core/usbh_core.c
@@ -409,7 +409,7 @@ int usbh_enumerate(struct usbh_hubport *hport)
USB_LOG_INFO("The device has %d bNumConfigurations\r\n", ((struct usb_device_descriptor *)ep0_request_buffer[hport->bus->busid])->bNumConfigurations);
- config_index = 0;
+ config_index = usbh_get_hport_active_config_index(hport);
USB_LOG_DBG("The device selects config %d\r\n", config_index);
/* Read the first 9 bytes of the config descriptor */
@@ -1183,3 +1183,8 @@ int lsusb(int argc, char **argv)
return 0;
}
+
+__WEAK uint8_t usbh_get_hport_active_config_index(struct usbh_hubport *hport)
+{
+ return 0; // Default to configuration index 0
+} \ No newline at end of file
diff --git a/core/usbh_core.h b/core/usbh_core.h
index 82665d66..29261b66 100644
--- a/core/usbh_core.h
+++ b/core/usbh_core.h
@@ -280,6 +280,7 @@ int usbh_initialize(uint8_t busid, uintptr_t reg_base);
int usbh_deinitialize(uint8_t busid);
void *usbh_find_class_instance(const char *devname);
struct usbh_hubport *usbh_find_hubport(uint8_t busid, uint8_t hub_index, uint8_t hub_port);
+uint8_t usbh_get_hport_active_config_index(struct usbh_hubport *hport);
int lsusb(int argc, char **argv);