Merge "Add MIDI info to USB dumpsys" into tm-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
b45f0e8ac6
@@ -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;
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user