diff options
author | Andrew Chant <achant@google.com> | 2018-03-02 13:45:09 -0800 |
---|---|---|
committer | Andrew Chant <achant@google.com> | 2018-03-26 20:55:54 +0000 |
commit | 608ec66d62647f60c3988922fead33fd7e07755e (patch) | |
tree | 603144475060416c137fefb5169faf0e8cd2952f /tests | |
parent | 0491f5aa0f3cc6b46bdf433bc900433b965943e2 (diff) |
UsbHostManager: Restore inserted device logging
Restore logcat logging of newly-added USB devices.
Eliminate blacklist log lines.
Test: Connected USB Storage and USB audio devices.
Updated UsbDescriptorParserTests for device descriptor
version.
example output:
UsbHostManager: USB device attached: vidpid 03eb:2433 mfg/product/ver/serial Libratone/Libratone_INEAR/1.00/Inear_mcu_app_0.2.1_20160304 hasAudio/HID/Storage: true/true/false
UsbHostManager: USB device attached: vidpid 05dc:a82b mfg/product/ver/serial Lexar/ARA Storage /2.08/0024070163400215 hasAudio/HID/Storage: false/false/true
UsbHostManager: USB device attached: vidpid 18d1:5029 mfg/product/ver/serial Google/USB-C to 3.5mm-Headphone Adapter/22.80/201405280001 hasAudio/HID/Storage: false/true/false
UsbHostManager: USB device attached: vidpid 18d1:5025 mfg/product/ver/serial Google/USB-C to 3.5mm-Headphone Adapter/22.80/201405280001 hasAudio/HID/Storage: true/true/false
Bug: 74119682
Change-Id: I72688f651c819d4bdc48f6d6316570ca5fc54d1e
Diffstat (limited to 'tests')
-rw-r--r-- | tests/UsbTests/res/raw/usbdescriptors_massstorage.bin | bin | 0 -> 50 bytes | |||
-rw-r--r-- | tests/UsbTests/src/com/android/server/usb/UsbDescriptorParserTests.java | 92 |
2 files changed, 88 insertions, 4 deletions
diff --git a/tests/UsbTests/res/raw/usbdescriptors_massstorage.bin b/tests/UsbTests/res/raw/usbdescriptors_massstorage.bin Binary files differnew file mode 100644 index 000000000000..1790369c5026 --- /dev/null +++ b/tests/UsbTests/res/raw/usbdescriptors_massstorage.bin diff --git a/tests/UsbTests/src/com/android/server/usb/UsbDescriptorParserTests.java b/tests/UsbTests/src/com/android/server/usb/UsbDescriptorParserTests.java index 4b64083c2367..ea027d7ae049 100644 --- a/tests/UsbTests/src/com/android/server/usb/UsbDescriptorParserTests.java +++ b/tests/UsbTests/src/com/android/server/usb/UsbDescriptorParserTests.java @@ -18,6 +18,7 @@ package com.android.server.usb; import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; import android.content.Context; @@ -28,6 +29,7 @@ import android.support.test.filters.SmallTest; import android.support.test.runner.AndroidJUnit4; import com.android.server.usb.descriptors.UsbDescriptorParser; +import com.android.server.usb.descriptors.UsbDeviceDescriptor; import com.google.common.io.ByteStreams; import java.io.InputStream; @@ -65,7 +67,20 @@ public class UsbDescriptorParserTests { return parser; } - // A Headset has a microphone and a speaker and is a headset. + /** A Headset has a microphone and a speaker and is a headset. + * Descriptors for this example show up on lsusb -v with: + * bcdDevice 22.80 + * and a UAC1 audio device with the following control interface: + * bInterfaceClass 1 Audio + * ... + * bDescriptorSubtype 2 (INPUT_TERMINAL) + * bTerminalID 1 + * wTerminalType 0x0201 Microphone + * ... + * bDescriptorSubtype 3 (OUTPUT_TERMINAL) + * bTerminalID 15 + * wTerminalType 0x0302 Headphones + */ @Test @SmallTest public void testHeadsetDescriptorParser() { @@ -74,9 +89,24 @@ public class UsbDescriptorParserTests { assertTrue(parser.hasOutput()); assertTrue(parser.isInputHeadset()); assertTrue(parser.isOutputHeadset()); + + assertTrue(parser.hasAudioInterface()); + assertTrue(parser.hasHIDInterface()); + assertFalse(parser.hasStorageInterface()); + + assertEquals(parser.getDeviceDescriptor().getDeviceReleaseString(), "22.80"); } - // Headphones have no microphones but are considered a headset. + /** Headphones have no microphones but are considered a headset. + * Descriptors for this example show up on lsusb -v with: + * bcdDevice 22.80 + * and a UAC1 audio device with the following control interface: + * bInterfaceClass 1 Audio + * ... + * bDescriptorSubtype 3 (OUTPUT_TERMINAL) + * bTerminalID 15 + * wTerminalType 0x0302 Headphones + */ @Test @SmallTest public void testHeadphoneDescriptorParser() { @@ -85,9 +115,24 @@ public class UsbDescriptorParserTests { assertTrue(parser.hasOutput()); assertFalse(parser.isInputHeadset()); assertTrue(parser.isOutputHeadset()); + + assertTrue(parser.hasAudioInterface()); + assertTrue(parser.hasHIDInterface()); + assertFalse(parser.hasStorageInterface()); + + assertEquals(parser.getDeviceDescriptor().getDeviceReleaseString(), "22.80"); } - // Line out has no microphones and aren't considered a headset. + /** Line out with no microphones aren't considered a headset. + * Descriptors for this example show up on lsusb -v with: + * bcdDevice 22.80 + * and the following UAC1 audio control interface + * bInterfaceClass 1 Audio + * ... + * bDescriptorSubtype 3 (OUTPUT_TERMINAL) + * bTerminalID 15 + * wTerminalType 0x0603 Line Connector + */ @Test @SmallTest public void testLineoutDescriptorParser() { @@ -96,9 +141,20 @@ public class UsbDescriptorParserTests { assertTrue(parser.hasOutput()); assertFalse(parser.isInputHeadset()); assertFalse(parser.isOutputHeadset()); + + assertTrue(parser.hasAudioInterface()); + assertTrue(parser.hasHIDInterface()); + assertFalse(parser.hasStorageInterface()); + + assertEquals(parser.getDeviceDescriptor().getDeviceReleaseString(), "22.80"); } - // An HID-only device shouldn't be considered anything at all. + /** An HID-only device shouldn't be considered anything at all. + /* Descriptors show up on lsusb -v with: + * bcdDevice 22.80 + * and a single HID interface, + * bInterfaceClass 3 Human Interface Device + */ @Test @SmallTest public void testNothingDescriptorParser() { @@ -107,6 +163,34 @@ public class UsbDescriptorParserTests { assertFalse(parser.hasOutput()); assertFalse(parser.isInputHeadset()); assertFalse(parser.isOutputHeadset()); + + assertFalse(parser.hasAudioInterface()); + assertTrue(parser.hasHIDInterface()); + assertFalse(parser.hasStorageInterface()); + + assertEquals(parser.getDeviceDescriptor().getDeviceReleaseString(), "22.80"); + } + + /** A USB mass-storage device. + * Shows up on lsusb -v with: + * bcdDevice 2.08 + * and a single interface descriptor, + * bInterfaceClass 8 Mass Storage + */ + @Test + @SmallTest + public void testMassStorageDescriptorParser() { + UsbDescriptorParser parser = loadParser(R.raw.usbdescriptors_massstorage); + assertFalse(parser.hasInput()); + assertFalse(parser.hasOutput()); + assertFalse(parser.isInputHeadset()); + assertFalse(parser.isOutputHeadset()); + + assertFalse(parser.hasAudioInterface()); + assertFalse(parser.hasHIDInterface()); + assertTrue(parser.hasStorageInterface()); + + assertEquals(parser.getDeviceDescriptor().getDeviceReleaseString(), "2.08"); } } |