Loading core/proto/android/service/usb.proto +37 −0 Original line number Diff line number Diff line Loading @@ -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 { Loading Loading @@ -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; Loading services/usb/java/com/android/server/usb/UsbDirectMidiDevice.java +22 −1 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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; Loading Loading @@ -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); Loading Loading @@ -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); } } services/usb/java/com/android/server/usb/UsbHostManager.java +6 −0 Original line number Diff line number Diff line Loading @@ -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); Loading services/usb/java/com/android/server/usb/descriptors/UsbMidiBlockParser.java +53 −0 Original line number Diff line number Diff line Loading @@ -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; /** Loading Loading @@ -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 = Loading Loading @@ -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); } } Loading
core/proto/android/service/usb.proto +37 −0 Original line number Diff line number Diff line Loading @@ -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 { Loading Loading @@ -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; Loading
services/usb/java/com/android/server/usb/UsbDirectMidiDevice.java +22 −1 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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; Loading Loading @@ -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); Loading Loading @@ -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); } }
services/usb/java/com/android/server/usb/UsbHostManager.java +6 −0 Original line number Diff line number Diff line Loading @@ -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); Loading
services/usb/java/com/android/server/usb/descriptors/UsbMidiBlockParser.java +53 −0 Original line number Diff line number Diff line Loading @@ -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; /** Loading Loading @@ -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 = Loading Loading @@ -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); } }