Merge "Add MIDI info to USB dumpsys" into tm-dev

This commit is contained in:
TreeHugger Robot
2022-04-20 01:13:19 +00:00
committed by Android (Google) Code Review
4 changed files with 118 additions and 1 deletions

View File

@@ -110,6 +110,7 @@ message UsbHostManagerProto {
repeated UsbDeviceProto devices = 2;
optional int32 num_connects = 3;
repeated UsbConnectionRecordProto connections = 4;
repeated UsbDirectMidiDeviceProto midi_devices = 5;
}
message UsbDeviceProto {
@@ -305,6 +306,42 @@ message UsbMidiDeviceProto {
optional string device_address = 3;
}
message UsbDirectMidiDeviceProto {
option (android.msg_privacy).dest = DEST_AUTOMATIC;
optional int32 num_inputs = 1;
optional int32 num_outputs = 2;
optional bool is_universal = 3;
optional string name = 4;
optional UsbMidiBlockParserProto block_parser = 5;
}
message UsbMidiBlockParserProto {
option (android.msg_privacy).dest = DEST_AUTOMATIC;
optional int32 length = 1;
optional int32 descriptor_type = 2;
optional int32 descriptor_subtype = 3;
optional int32 total_length = 4;
repeated UsbGroupTerminalBlockProto block = 5;
}
message UsbGroupTerminalBlockProto {
option (android.msg_privacy).dest = DEST_AUTOMATIC;
optional int32 length = 1;
optional int32 descriptor_type = 2;
optional int32 descriptor_subtype = 3;
optional int32 group_block_id = 4;
optional int32 group_terminal_block_type = 5;
optional int32 group_terminal = 6;
optional int32 num_group_terminals = 7;
optional int32 block_item = 8;
optional int32 midi_protocol = 9;
optional int32 max_input_bandwidth = 10;
optional int32 max_output_bandwidth = 11;
}
message UsbSettingsManagerProto {
option (android.msg_privacy).dest = DEST_AUTOMATIC;

View File

@@ -16,6 +16,7 @@
package com.android.server.usb;
import android.annotation.NonNull;
import android.content.Context;
import android.hardware.usb.UsbDevice;
import android.hardware.usb.UsbDeviceConnection;
@@ -28,10 +29,12 @@ import android.media.midi.MidiDeviceStatus;
import android.media.midi.MidiManager;
import android.media.midi.MidiReceiver;
import android.os.Bundle;
import android.service.usb.UsbDirectMidiDeviceProto;
import android.util.Log;
import com.android.internal.midi.MidiEventScheduler;
import com.android.internal.midi.MidiEventScheduler.MidiEvent;
import com.android.internal.util.dump.DualDumpOutputStream;
import com.android.server.usb.descriptors.UsbDescriptorParser;
import com.android.server.usb.descriptors.UsbEndpointDescriptor;
import com.android.server.usb.descriptors.UsbInterfaceDescriptor;
@@ -52,6 +55,7 @@ public final class UsbDirectMidiDevice implements Closeable {
private static final boolean DEBUG = false;
private Context mContext;
private String mName;
private UsbDevice mUsbDevice;
private UsbDescriptorParser mParser;
private ArrayList<UsbInterfaceDescriptor> mUsbInterfaces;
@@ -477,7 +481,7 @@ public final class UsbDirectMidiDevice implements Closeable {
} else {
name += " MIDI 1.0";
}
Log.e(TAG, name);
mName = name;
properties.putString(MidiDeviceInfo.PROPERTY_NAME, name);
properties.putString(MidiDeviceInfo.PROPERTY_MANUFACTURER, manufacturer);
properties.putString(MidiDeviceInfo.PROPERTY_PRODUCT, product);
@@ -573,4 +577,21 @@ public final class UsbDirectMidiDevice implements Closeable {
}
return true;
}
/**
* Write a description of the device to a dump stream.
*/
public void dump(@NonNull DualDumpOutputStream dump, @NonNull String idName, long id) {
long token = dump.start(idName, id);
dump.write("num_inputs", UsbDirectMidiDeviceProto.NUM_INPUTS, mNumInputs);
dump.write("num_outputs", UsbDirectMidiDeviceProto.NUM_OUTPUTS, mNumOutputs);
dump.write("is_universal", UsbDirectMidiDeviceProto.IS_UNIVERSAL, mIsUniversalMidiDevice);
dump.write("name", UsbDirectMidiDeviceProto.NAME, mName);
if (mIsUniversalMidiDevice) {
mMidiBlockParser.dump(dump, "block_parser", UsbDirectMidiDeviceProto.BLOCK_PARSER);
}
dump.end(token);
}
}

View File

@@ -588,6 +588,12 @@ public class UsbHostManager {
for (ConnectionRecord rec : mConnections) {
rec.dump(dump, "connections", UsbHostManagerProto.CONNECTIONS);
}
for (ArrayList<UsbDirectMidiDevice> directMidiDevices : mMidiDevices.values()) {
for (UsbDirectMidiDevice directMidiDevice : directMidiDevices) {
directMidiDevice.dump(dump, "midi_devices", UsbHostManagerProto.MIDI_DEVICES);
}
}
}
dump.end(token);

View File

@@ -15,10 +15,15 @@
*/
package com.android.server.usb.descriptors;
import android.annotation.NonNull;
import android.hardware.usb.UsbConstants;
import android.hardware.usb.UsbDeviceConnection;
import android.service.usb.UsbGroupTerminalBlockProto;
import android.service.usb.UsbMidiBlockParserProto;
import android.util.Log;
import com.android.internal.util.dump.DualDumpOutputStream;
import java.util.ArrayList;
/**
@@ -70,6 +75,34 @@ public class UsbMidiBlockParser {
mMaxOutputBandwidth = stream.unpackUsbShort();
return mLength;
}
/**
* Write the state of the block to a dump stream.
*/
public void dump(@NonNull DualDumpOutputStream dump, @NonNull String idName, long id) {
long token = dump.start(idName, id);
dump.write("length", UsbGroupTerminalBlockProto.LENGTH, mLength);
dump.write("descriptor_type", UsbGroupTerminalBlockProto.DESCRIPTOR_TYPE,
mDescriptorType);
dump.write("descriptor_subtype", UsbGroupTerminalBlockProto.DESCRIPTOR_SUBTYPE,
mDescriptorSubtype);
dump.write("group_block_id", UsbGroupTerminalBlockProto.GROUP_BLOCK_ID, mGroupBlockId);
dump.write("group_terminal_block_type",
UsbGroupTerminalBlockProto.GROUP_TERMINAL_BLOCK_TYPE, mGroupTerminalBlockType);
dump.write("group_terminal", UsbGroupTerminalBlockProto.GROUP_TERMINAL,
mGroupTerminal);
dump.write("num_group_terminals", UsbGroupTerminalBlockProto.NUM_GROUP_TERMINALS,
mNumGroupTerminals);
dump.write("block_item", UsbGroupTerminalBlockProto.BLOCK_ITEM, mBlockItem);
dump.write("midi_protocol", UsbGroupTerminalBlockProto.MIDI_PROTOCOL, mMidiProtocol);
dump.write("max_input_bandwidth", UsbGroupTerminalBlockProto.MAX_INPUT_BANDWIDTH,
mMaxInputBandwidth);
dump.write("max_output_bandwidth", UsbGroupTerminalBlockProto.MAX_OUTPUT_BANDWIDTH,
mMaxOutputBandwidth);
dump.end(token);
}
}
private ArrayList<GroupTerminalBlock> mGroupTerminalBlocks =
@@ -170,4 +203,24 @@ public class UsbMidiBlockParser {
}
return DEFAULT_MIDI_TYPE;
}
/**
* Write the state of the parser to a dump stream.
*/
public void dump(@NonNull DualDumpOutputStream dump, @NonNull String idName, long id) {
long token = dump.start(idName, id);
dump.write("length", UsbMidiBlockParserProto.LENGTH, mHeaderLength);
dump.write("descriptor_type", UsbMidiBlockParserProto.DESCRIPTOR_TYPE,
mHeaderDescriptorType);
dump.write("descriptor_subtype", UsbMidiBlockParserProto.DESCRIPTOR_SUBTYPE,
mHeaderDescriptorSubtype);
dump.write("total_length", UsbMidiBlockParserProto.TOTAL_LENGTH, mTotalLength);
for (GroupTerminalBlock groupTerminalBlock : mGroupTerminalBlocks) {
groupTerminalBlock.dump(dump, "block", UsbMidiBlockParserProto.BLOCK);
}
dump.end(token);
}
}