Skip to content

Commit 151a5ad

Browse files
authored
Merge pull request #3556 from hathach/fix-midi-host
Fix MIDI host issue
2 parents 608bbdd + cca3e7e commit 151a5ad

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

src/class/midi/midi_host.c

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ typedef struct {
5757
uint8_t daddr;
5858
uint8_t bInterfaceNumber; // interface number of MIDI streaming
5959
uint8_t iInterface;
60-
uint8_t itf_count; // number of interface including Audio Control + MIDI streaming
60+
uint8_t itf_count; // number of interfaces including Audio Control + MIDI streaming
6161

6262
uint8_t rx_cable_count; // IN endpoint CS descriptor bNumEmbMIDIJack value
6363
uint8_t tx_cable_count; // OUT endpoint CS descriptor bNumEmbMIDIJack value
@@ -249,10 +249,12 @@ uint16_t midih_open(uint8_t rhport, uint8_t dev_addr, const tusb_desc_interface_
249249
p_midi->itf_count++;
250250
desc_cb.desc_midi = desc_itf;
251251

252-
p_desc = tu_desc_next(p_desc); // next to CS Header
253-
254252
bool found_new_interface = false;
255-
while (tu_desc_in_bounds(p_desc, desc_end) && !found_new_interface) {
253+
do {
254+
p_desc = tu_desc_next(p_desc);
255+
if (!tu_desc_in_bounds(p_desc, desc_end)) {
256+
break;
257+
}
256258
switch (tu_desc_type(p_desc)) {
257259
case TUSB_DESC_INTERFACE:
258260
found_new_interface = true;
@@ -314,8 +316,8 @@ uint16_t midih_open(uint8_t rhport, uint8_t dev_addr, const tusb_desc_interface_
314316

315317
default: break; // skip unknown descriptor
316318
}
317-
p_desc = tu_desc_next(p_desc);
318-
}
319+
} while (!found_new_interface);
320+
319321
desc_cb.desc_midi_total_len = (uint16_t)((uintptr_t)p_desc - (uintptr_t)desc_start);
320322

321323
p_midi->daddr = dev_addr;
@@ -332,7 +334,7 @@ bool midih_set_config(uint8_t dev_addr, uint8_t itf_num) {
332334

333335
const tuh_midi_mount_cb_t mount_cb_data = {
334336
.daddr = dev_addr,
335-
.bInterfaceNumber = itf_num,
337+
.bInterfaceNumber = p_midi->bInterfaceNumber,
336338
.rx_cable_count = p_midi->rx_cable_count,
337339
.tx_cable_count = p_midi->tx_cable_count,
338340
};

0 commit comments

Comments
 (0)