summaryrefslogtreecommitdiff
path: root/src/host
diff options
context:
space:
mode:
authorHa Thach <[email protected]>2025-03-09 19:01:10 +0700
committerGitHub <[email protected]>2025-03-09 19:01:10 +0700
commit02a630b3da54f68df87a1605661013e177e58067 (patch)
treebf36afa4414efd0911a1cb5b33a3c627f3641623 /src/host
parent29ffd57237554b1f2339af543e3789ae04d3b29b (diff)
parentee234a84caf59d23395ed70f5e1c9d772e3f958b (diff)
Merge pull request #1627 from atoktoto/midihost
RP2040 MIDI Host
Diffstat (limited to 'src/host')
-rw-r--r--src/host/usbh.c18
-rw-r--r--src/host/usbh.h9
-rw-r--r--src/host/usbh_pvt.h4
3 files changed, 25 insertions, 6 deletions
diff --git a/src/host/usbh.c b/src/host/usbh.c
index dcd22ee31..c87f058cd 100644
--- a/src/host/usbh.c
+++ b/src/host/usbh.c
@@ -192,6 +192,18 @@ static usbh_class_driver_t const usbh_class_drivers[] = {
},
#endif
+ #if CFG_TUH_MIDI
+ {
+ .name = DRIVER_NAME("MIDI"),
+ .init = midih_init,
+ .deinit = midih_deinit,
+ .open = midih_open,
+ .set_config = midih_set_config,
+ .xfer_cb = midih_xfer_cb,
+ .close = midih_close
+ },
+ #endif
+
#if CFG_TUH_HUB
{
.name = DRIVER_NAME("HUB"),
@@ -974,7 +986,7 @@ static bool usbh_edpt_control_open(uint8_t dev_addr, uint8_t max_packet_size) {
}
bool tuh_edpt_open(uint8_t dev_addr, tusb_desc_endpoint_t const* desc_ep) {
- TU_ASSERT(tu_edpt_validate(desc_ep, tuh_speed_get(dev_addr)));
+ TU_ASSERT(tu_edpt_validate(desc_ep, tuh_speed_get(dev_addr), true));
return hcd_edpt_open(usbh_get_rhport(dev_addr), dev_addr, desc_ep);
}
@@ -1588,6 +1600,8 @@ static void process_enumeration(tuh_xfer_t* xfer) {
}
case ENUM_SET_CONFIG:
+ // tuh_desc_configuration_cb(daddr, CONFIG_NUM-1, (const tusb_desc_configuration_t*) _usbh_epbuf.ctrl);
+
TU_ASSERT(tuh_configuration_set(daddr, CONFIG_NUM, process_enumeration, ENUM_CONFIG_DRIVER),);
break;
@@ -1740,7 +1754,7 @@ static bool _parse_configuration_descriptor(uint8_t dev_addr, tusb_desc_configur
if ( 0 == tu_desc_len(p_desc) ) {
// A zero length descriptor indicates that the device is off spec (e.g. wrong wTotalLength).
// Parsed interfaces should still be usable
- TU_LOG_USBH("Encountered a zero-length descriptor after %" PRIu32 "bytes\r\n", (uint32_t)p_desc - (uint32_t)desc_cfg);
+ TU_LOG_USBH("Encountered a zero-length descriptor after %" PRIu32 " bytes\r\n", (uint32_t)p_desc - (uint32_t)desc_cfg);
break;
}
diff --git a/src/host/usbh.h b/src/host/usbh.h
index 0fbe39743..52b4f478c 100644
--- a/src/host/usbh.h
+++ b/src/host/usbh.h
@@ -37,6 +37,9 @@
// MACRO CONSTANT TYPEDEF
//--------------------------------------------------------------------+
+// Endpoint Bulk size depending on host mx speed
+#define TUH_EPSIZE_BULK_MPS (TUD_OPT_HIGH_SPEED ? TUSB_EPSIZE_BULK_HS : TUSB_EPSIZE_BULK_FS)
+
// forward declaration
struct tuh_xfer_s;
typedef struct tuh_xfer_s tuh_xfer_t;
@@ -96,6 +99,12 @@ typedef union {
// APPLICATION CALLBACK
//--------------------------------------------------------------------+
+// Invoked when enumeration get device descriptor
+// TU_ATTR_WEAK void tuh_descriptor_device_cb(uint8_t daddr, const tusb_desc_device_t *desc_device);
+
+// Invoked when enumeration get configuration descriptor
+// TU_ATTR_WEAK void tuh_desc_configuration_cb(uint8_t daddr, uint8_t cfg_index, const tusb_desc_configuration_t *desc_config);
+
// Invoked when a device is mounted (configured)
TU_ATTR_WEAK void tuh_mount_cb (uint8_t daddr);
diff --git a/src/host/usbh_pvt.h b/src/host/usbh_pvt.h
index d27c4baa2..bfa1fb2ba 100644
--- a/src/host/usbh_pvt.h
+++ b/src/host/usbh_pvt.h
@@ -41,10 +41,6 @@
#define TU_LOG_INT_USBH(...) TU_LOG_INT(CFG_TUH_LOG_LEVEL, __VA_ARGS__)
#define TU_LOG_HEX_USBH(...) TU_LOG_HEX(CFG_TUH_LOG_LEVEL, __VA_ARGS__)
-enum {
- USBH_EPSIZE_BULK_MAX = (TUH_OPT_HIGH_SPEED ? TUSB_EPSIZE_BULK_HS : TUSB_EPSIZE_BULK_FS)
-};
-
//--------------------------------------------------------------------+
// Class Driver API
//--------------------------------------------------------------------+