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

Commit e7b8f6d2 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

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

parents aa4c059d 53215d1f
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