Fix incorrect parsing of UVC interface descriptor
Every USB device that has CS_INTERFACE descriptor was incorrectly assumed to be an UAC device, without checking the device class. This led to incorrect parsing of UVC devices, which also have CS_INTERFACE type descriptors. For some devices the parsing worked by coincidence, for others it lead to incorrect device data (wrong vid, pid, etc). This change parses every CS_INTERFACE descriptor that does not belong to an UAC device as type 'Unknown'. Test: Connect a UVC camera, observe logcat. Before this change, there were lots of parsing errors in logcat, now the device is added cleanly. Bug: 124374863 Change-Id: Ic076438625a733cffa9ae51ba803e353fd064ceb Signed-off-by: Kamen Kirov <knk@pupil-labs.com>
This commit is contained in:
committed by
Emilian Peev
parent
32bfd77b79
commit
b83cf0c7f1
@@ -177,11 +177,15 @@ public final class UsbDescriptorParser {
|
||||
* Audio Class Specific
|
||||
*/
|
||||
case UsbDescriptor.DESCRIPTORTYPE_AUDIO_INTERFACE:
|
||||
descriptor = UsbACInterface.allocDescriptor(this, stream, length, type);
|
||||
if (mDeviceDescriptor.getDevClass() == UsbDescriptor.CLASSID_AUDIO) {
|
||||
descriptor = UsbACInterface.allocDescriptor(this, stream, length, type);
|
||||
}
|
||||
break;
|
||||
|
||||
case UsbDescriptor.DESCRIPTORTYPE_AUDIO_ENDPOINT:
|
||||
descriptor = UsbACEndpoint.allocDescriptor(this, length, type);
|
||||
if (mDeviceDescriptor.getDevClass() == UsbDescriptor.CLASSID_AUDIO) {
|
||||
descriptor = UsbACEndpoint.allocDescriptor(this, length, type);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
Reference in New Issue
Block a user