Loading services/usb/java/com/android/server/usb/UsbHostManager.java +38 −2 Original line number Diff line number Diff line Loading @@ -22,8 +22,10 @@ import android.content.Context; import android.hardware.usb.UsbConfiguration; import android.hardware.usb.UsbConstants; import android.hardware.usb.UsbDevice; import android.hardware.usb.UsbDeviceConnection; import android.hardware.usb.UsbEndpoint; import android.hardware.usb.UsbInterface; import android.hardware.usb.UsbManager; import android.os.Bundle; import android.os.ParcelFileDescriptor; import android.text.TextUtils; Loading @@ -32,8 +34,11 @@ import android.util.Slog; import com.android.internal.annotations.GuardedBy; import com.android.internal.util.IndentingPrintWriter; import com.android.server.usb.descriptors.UsbDescriptorParser; import com.android.server.usb.descriptors.report.TextReportCanvas; import com.android.server.usb.descriptors.tree.UsbDescriptorsTree; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; /** Loading @@ -43,6 +48,8 @@ public class UsbHostManager { private static final String TAG = UsbHostManager.class.getSimpleName(); private static final boolean DEBUG = false; private final Context mContext; // contains all connected USB devices private final HashMap<String, UsbDevice> mDevices = new HashMap<>(); Loading @@ -69,6 +76,8 @@ public class UsbHostManager { public UsbHostManager(Context context, UsbAlsaManager alsaManager, UsbSettingsManager settingsManager) { mContext = context; mHostBlacklist = context.getResources().getStringArray( com.android.internal.R.array.config_usbHostBlacklist); mUsbAlsaManager = alsaManager; Loading Loading @@ -339,6 +348,33 @@ public class UsbHostManager { if (mUsbDeviceConnectionHandler != null) { pw.println("Default USB Host Connection handler: " + mUsbDeviceConnectionHandler); } Collection<UsbDevice> devices = mDevices.values(); if (devices.size() != 0) { pw.println("USB Peripheral Descriptors"); for (UsbDevice device : devices) { StringBuilder stringBuilder = new StringBuilder(); UsbDescriptorParser parser = new UsbDescriptorParser(); if (parser.parseDevice(device.getDeviceName())) { UsbDescriptorsTree descriptorTree = new UsbDescriptorsTree(); descriptorTree.parse(parser); UsbManager usbManager = (UsbManager) mContext.getSystemService(Context.USB_SERVICE); UsbDeviceConnection connection = usbManager.openDevice(device); descriptorTree.report(new TextReportCanvas(connection, stringBuilder)); connection.close(); stringBuilder.append("isHeadset[in: " + parser.isInputHeadset() + " , out: " + parser.isOutputHeadset() + "]"); } else { stringBuilder.append("Error Parsing USB Descriptors"); } pw.println(stringBuilder.toString()); } } } } Loading services/usb/java/com/android/server/usb/descriptors/UsbASFormat.java +1 −1 Original line number Diff line number Diff line Loading @@ -102,6 +102,6 @@ public class UsbASFormat extends UsbACInterface { public void report(ReportCanvas canvas) { super.report(canvas); canvas.write(UsbStrings.getFormatName(getFormatType())); canvas.writeParagraph(UsbStrings.getFormatName(getFormatType()), /*emphasis*/false); } } services/usb/java/com/android/server/usb/descriptors/UsbDeviceDescriptor.java +2 −2 Original line number Diff line number Diff line Loading @@ -130,8 +130,8 @@ public final class UsbDeviceDescriptor extends UsbDescriptor { String subClasStr = UsbStrings.getClassName(devSubClass); canvas.writeListItem("Class " + devClass + ": " + classStr + " Subclass" + devSubClass + ": " + subClasStr); canvas.writeListItem("Vendor ID: " + getVendorID() + " Product ID: " + getProductID() canvas.writeListItem("Vendor ID: " + ReportCanvas.getHexString(getVendorID()) + " Product ID: " + ReportCanvas.getHexString(getProductID()) + " Product Release: " + ReportCanvas.getBCDString(getDeviceRelease())); byte mfgIndex = getMfgIndex(); Loading services/usb/java/com/android/server/usb/descriptors/report/TextReportCanvas.java +11 −13 Original line number Diff line number Diff line Loading @@ -40,6 +40,12 @@ public final class TextReportCanvas extends ReportCanvas { mStringBuilder = stringBuilder; } private void writeListIndent() { for (int space = 0; space < mListIndent; space++) { mStringBuilder.append(" "); } } @Override public void write(String text) { mStringBuilder.append(text); Loading @@ -47,7 +53,8 @@ public final class TextReportCanvas extends ReportCanvas { @Override public void openHeader(int level) { mStringBuilder.append("[" + level + " - "); writeListIndent(); mStringBuilder.append("["); } @Override Loading @@ -56,7 +63,8 @@ public final class TextReportCanvas extends ReportCanvas { } @Override public void openParagraph(boolean inRed) { public void openParagraph(boolean emphasis) { writeListIndent(); } @Override Loading @@ -75,24 +83,14 @@ public final class TextReportCanvas extends ReportCanvas { closeParagraph(); } private void writeListIndent() { for (int space = 0; space < mListIndent; space++) { mStringBuilder.append(" "); } } @Override public void openList() { mListIndent += LIST_INDENT_AMNT; writeListIndent(); mStringBuilder.append("---->\n"); } @Override public void closeList() { writeListIndent(); mListIndent -= LIST_INDENT_AMNT; mStringBuilder.append("<----\n"); } @Override Loading services/usb/java/com/android/server/usb/descriptors/report/UsbStrings.java +5 −14 Original line number Diff line number Diff line Loading @@ -38,6 +38,10 @@ public final class UsbStrings { private static HashMap<Integer, String> sTerminalNames; private static HashMap<Integer, String> sFormatNames; static { allocUsbStrings(); } private static void initDescriptorNames() { sDescriptorNames = new HashMap<Byte, String>(); sDescriptorNames.put(UsbDescriptor.DESCRIPTORTYPE_DEVICE, "Device"); Loading Loading @@ -246,7 +250,7 @@ public final class UsbStrings { /** * Initializes string tables. */ public static void allocUsbStrings() { private static void allocUsbStrings() { initDescriptorNames(); initACControlInterfaceNames(); initACStreamingInterfaceNames(); Loading @@ -257,19 +261,6 @@ public final class UsbStrings { initFormatNames(); } /** * Deinitializes string tables. */ public static void releaseUsbStrings() { sDescriptorNames = null; sACControlInterfaceNames = null; sACStreamingInterfaceNames = null; sClassNames = null; sAudioSubclassNames = null; sAudioEncodingNames = null; sTerminalNames = null; } /** * Retrieves the name for the specified descriptor ID. */ Loading Loading
services/usb/java/com/android/server/usb/UsbHostManager.java +38 −2 Original line number Diff line number Diff line Loading @@ -22,8 +22,10 @@ import android.content.Context; import android.hardware.usb.UsbConfiguration; import android.hardware.usb.UsbConstants; import android.hardware.usb.UsbDevice; import android.hardware.usb.UsbDeviceConnection; import android.hardware.usb.UsbEndpoint; import android.hardware.usb.UsbInterface; import android.hardware.usb.UsbManager; import android.os.Bundle; import android.os.ParcelFileDescriptor; import android.text.TextUtils; Loading @@ -32,8 +34,11 @@ import android.util.Slog; import com.android.internal.annotations.GuardedBy; import com.android.internal.util.IndentingPrintWriter; import com.android.server.usb.descriptors.UsbDescriptorParser; import com.android.server.usb.descriptors.report.TextReportCanvas; import com.android.server.usb.descriptors.tree.UsbDescriptorsTree; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; /** Loading @@ -43,6 +48,8 @@ public class UsbHostManager { private static final String TAG = UsbHostManager.class.getSimpleName(); private static final boolean DEBUG = false; private final Context mContext; // contains all connected USB devices private final HashMap<String, UsbDevice> mDevices = new HashMap<>(); Loading @@ -69,6 +76,8 @@ public class UsbHostManager { public UsbHostManager(Context context, UsbAlsaManager alsaManager, UsbSettingsManager settingsManager) { mContext = context; mHostBlacklist = context.getResources().getStringArray( com.android.internal.R.array.config_usbHostBlacklist); mUsbAlsaManager = alsaManager; Loading Loading @@ -339,6 +348,33 @@ public class UsbHostManager { if (mUsbDeviceConnectionHandler != null) { pw.println("Default USB Host Connection handler: " + mUsbDeviceConnectionHandler); } Collection<UsbDevice> devices = mDevices.values(); if (devices.size() != 0) { pw.println("USB Peripheral Descriptors"); for (UsbDevice device : devices) { StringBuilder stringBuilder = new StringBuilder(); UsbDescriptorParser parser = new UsbDescriptorParser(); if (parser.parseDevice(device.getDeviceName())) { UsbDescriptorsTree descriptorTree = new UsbDescriptorsTree(); descriptorTree.parse(parser); UsbManager usbManager = (UsbManager) mContext.getSystemService(Context.USB_SERVICE); UsbDeviceConnection connection = usbManager.openDevice(device); descriptorTree.report(new TextReportCanvas(connection, stringBuilder)); connection.close(); stringBuilder.append("isHeadset[in: " + parser.isInputHeadset() + " , out: " + parser.isOutputHeadset() + "]"); } else { stringBuilder.append("Error Parsing USB Descriptors"); } pw.println(stringBuilder.toString()); } } } } Loading
services/usb/java/com/android/server/usb/descriptors/UsbASFormat.java +1 −1 Original line number Diff line number Diff line Loading @@ -102,6 +102,6 @@ public class UsbASFormat extends UsbACInterface { public void report(ReportCanvas canvas) { super.report(canvas); canvas.write(UsbStrings.getFormatName(getFormatType())); canvas.writeParagraph(UsbStrings.getFormatName(getFormatType()), /*emphasis*/false); } }
services/usb/java/com/android/server/usb/descriptors/UsbDeviceDescriptor.java +2 −2 Original line number Diff line number Diff line Loading @@ -130,8 +130,8 @@ public final class UsbDeviceDescriptor extends UsbDescriptor { String subClasStr = UsbStrings.getClassName(devSubClass); canvas.writeListItem("Class " + devClass + ": " + classStr + " Subclass" + devSubClass + ": " + subClasStr); canvas.writeListItem("Vendor ID: " + getVendorID() + " Product ID: " + getProductID() canvas.writeListItem("Vendor ID: " + ReportCanvas.getHexString(getVendorID()) + " Product ID: " + ReportCanvas.getHexString(getProductID()) + " Product Release: " + ReportCanvas.getBCDString(getDeviceRelease())); byte mfgIndex = getMfgIndex(); Loading
services/usb/java/com/android/server/usb/descriptors/report/TextReportCanvas.java +11 −13 Original line number Diff line number Diff line Loading @@ -40,6 +40,12 @@ public final class TextReportCanvas extends ReportCanvas { mStringBuilder = stringBuilder; } private void writeListIndent() { for (int space = 0; space < mListIndent; space++) { mStringBuilder.append(" "); } } @Override public void write(String text) { mStringBuilder.append(text); Loading @@ -47,7 +53,8 @@ public final class TextReportCanvas extends ReportCanvas { @Override public void openHeader(int level) { mStringBuilder.append("[" + level + " - "); writeListIndent(); mStringBuilder.append("["); } @Override Loading @@ -56,7 +63,8 @@ public final class TextReportCanvas extends ReportCanvas { } @Override public void openParagraph(boolean inRed) { public void openParagraph(boolean emphasis) { writeListIndent(); } @Override Loading @@ -75,24 +83,14 @@ public final class TextReportCanvas extends ReportCanvas { closeParagraph(); } private void writeListIndent() { for (int space = 0; space < mListIndent; space++) { mStringBuilder.append(" "); } } @Override public void openList() { mListIndent += LIST_INDENT_AMNT; writeListIndent(); mStringBuilder.append("---->\n"); } @Override public void closeList() { writeListIndent(); mListIndent -= LIST_INDENT_AMNT; mStringBuilder.append("<----\n"); } @Override Loading
services/usb/java/com/android/server/usb/descriptors/report/UsbStrings.java +5 −14 Original line number Diff line number Diff line Loading @@ -38,6 +38,10 @@ public final class UsbStrings { private static HashMap<Integer, String> sTerminalNames; private static HashMap<Integer, String> sFormatNames; static { allocUsbStrings(); } private static void initDescriptorNames() { sDescriptorNames = new HashMap<Byte, String>(); sDescriptorNames.put(UsbDescriptor.DESCRIPTORTYPE_DEVICE, "Device"); Loading Loading @@ -246,7 +250,7 @@ public final class UsbStrings { /** * Initializes string tables. */ public static void allocUsbStrings() { private static void allocUsbStrings() { initDescriptorNames(); initACControlInterfaceNames(); initACStreamingInterfaceNames(); Loading @@ -257,19 +261,6 @@ public final class UsbStrings { initFormatNames(); } /** * Deinitializes string tables. */ public static void releaseUsbStrings() { sDescriptorNames = null; sACControlInterfaceNames = null; sACStreamingInterfaceNames = null; sClassNames = null; sAudioSubclassNames = null; sAudioEncodingNames = null; sTerminalNames = null; } /** * Retrieves the name for the specified descriptor ID. */ Loading