Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a3841871 authored by Paul McLean's avatar Paul McLean Committed by android-build-merger
Browse files

Merge "Add dump of USB descriptors to the dumpsys for UsbHostManager service." into oc-mr1-dev

am: e7b8f6d2

Change-Id: I4b510bccbb6b71a92f1fa6938195466ecd3956dc
parents 647f6a7c e7b8f6d2
Loading
Loading
Loading
Loading
+38 −2
Original line number Diff line number Diff line
@@ -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;
@@ -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;

/**
@@ -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<>();

@@ -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;
@@ -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());
                }
            }
        }
    }

+1 −1
Original line number Diff line number Diff line
@@ -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);
    }
}
+2 −2
Original line number Diff line number Diff line
@@ -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();
+11 −13
Original line number Diff line number Diff line
@@ -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);
@@ -47,7 +53,8 @@ public final class TextReportCanvas extends ReportCanvas {

    @Override
    public void openHeader(int level) {
        mStringBuilder.append("[" + level + " - ");
        writeListIndent();
        mStringBuilder.append("[");
    }

    @Override
@@ -56,7 +63,8 @@ public final class TextReportCanvas extends ReportCanvas {
    }

    @Override
    public void openParagraph(boolean inRed) {
    public void openParagraph(boolean emphasis) {
        writeListIndent();
    }

    @Override
@@ -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
+5 −14
Original line number Diff line number Diff line
@@ -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");
@@ -246,7 +250,7 @@ public final class UsbStrings {
    /**
     * Initializes string tables.
     */
    public static void allocUsbStrings() {
    private static void allocUsbStrings() {
        initDescriptorNames();
        initACControlInterfaceNames();
        initACStreamingInterfaceNames();
@@ -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