Fix 3031: implement tuh_midi_itf_get_info()

This commit is contained in:
rppicomidi
2025-03-15 11:20:57 -07:00
parent 40ddf0628a
commit 31b3a2f63b
2 changed files with 27 additions and 0 deletions

View File

@@ -346,6 +346,29 @@ uint8_t tuh_midi_itf_get_index(uint8_t daddr, uint8_t itf_num) {
return TUSB_INDEX_INVALID_8;
}
bool tuh_midi_itf_get_info(uint8_t idx, tuh_itf_info_t* info)
{
midih_interface_t* p_midi = &_midi_host[idx];
TU_VERIFY(p_midi && info);
info->daddr = p_midi->daddr;
// re-construct descriptor
tusb_desc_interface_t* desc = &info->desc;
desc->bLength = sizeof(tusb_desc_interface_t);
desc->bDescriptorType = TUSB_DESC_INTERFACE;
desc->bInterfaceNumber = p_midi->bInterfaceNumber;
desc->bAlternateSetting = 0;
desc->bNumEndpoints = (p_midi->ep_in != 0 ? 1:0) + (p_midi->ep_out != 0 ? 1:0);
desc->bInterfaceClass = TUSB_CLASS_AUDIO;
desc->bInterfaceSubClass = AUDIO_SUBCLASS_MIDI_STREAMING;
desc->bInterfaceProtocol = 0;
desc->iInterface = 0;
return true;
}
uint8_t tuh_midi_get_tx_cable_count (uint8_t idx) {
TU_VERIFY(idx < CFG_TUH_MIDI);
midih_interface_t *p_midi = &_midi_host[idx];

View File

@@ -90,6 +90,10 @@ bool tuh_midi_mounted(uint8_t idx);
// return TUSB_INDEX_INVALID_8 (0xFF) if not found
uint8_t tuh_midi_itf_get_index(uint8_t daddr, uint8_t itf_num);
// Get Interface information
// return true if index is correct and interface is currently mounted
bool tuh_midi_itf_get_info(uint8_t idx, tuh_itf_info_t* info);
// return the number of virtual midi cables on the device's IN endpoint
uint8_t tuh_midi_get_rx_cable_count(uint8_t idx);