@@ -406,19 +406,25 @@ void midid_reset(uint8_t rhport)
406406
407407uint16_t midid_open (uint8_t rhport , tusb_desc_interface_t const * desc_itf , uint16_t max_len )
408408{
409+ uint16_t drv_len = 0 ;
410+ uint8_t const * p_desc = (uint8_t const * )desc_itf ;
409411 // 1st Interface is Audio Control v1
410- TU_VERIFY (TUSB_CLASS_AUDIO == desc_itf -> bInterfaceClass &&
412+ if (TUSB_CLASS_AUDIO == desc_itf -> bInterfaceClass &&
411413 AUDIO_SUBCLASS_CONTROL == desc_itf -> bInterfaceSubClass &&
412- AUDIO_FUNC_PROTOCOL_CODE_UNDEF == desc_itf -> bInterfaceProtocol , 0 );
413-
414- uint16_t drv_len = tu_desc_len (desc_itf );
415- uint8_t const * p_desc = tu_desc_next (desc_itf );
416-
417- // Skip Class Specific descriptors
418- while ( TUSB_DESC_CS_INTERFACE == tu_desc_type (p_desc ) && drv_len <= max_len )
414+ AUDIO_FUNC_PROTOCOL_CODE_UNDEF == desc_itf -> bInterfaceProtocol )
419415 {
420- drv_len += tu_desc_len (p_desc );
421- p_desc = tu_desc_next (p_desc );
416+ drv_len = tu_desc_len (desc_itf );
417+ p_desc = tu_desc_next (desc_itf );
418+ // Skip Class Specific descriptors
419+ while ( TUSB_DESC_CS_INTERFACE == tu_desc_type (p_desc ) && drv_len <= max_len )
420+ {
421+ drv_len += tu_desc_len (p_desc );
422+ p_desc = tu_desc_next (p_desc );
423+ }
424+ }
425+ else
426+ {
427+ TU_LOG1 ("Warning: MIDI Device has no Audio Control Interface" );
422428 }
423429
424430 // 2nd Interface is MIDI Streaming
0 commit comments