Add "HasMidi" capability (attribute) to UsbDevice.
Bug: 142158212
Test: build, install, connect USB device and examine log.
Change-Id: Ic94891f4c4f845592009e9465b7ad17fd0c76b2e
diff --git a/core/java/android/hardware/usb/UsbDevice.java b/core/java/android/hardware/usb/UsbDevice.java
index 4333668..11f4ffb 100644
--- a/core/java/android/hardware/usb/UsbDevice.java
+++ b/core/java/android/hardware/usb/UsbDevice.java
@@ -62,7 +62,7 @@
private final int mProtocol;
private final boolean mHasAudioPlayback;
private final boolean mHasAudioCapture;
-
+ private final boolean mHasMidi;
/** All interfaces on the device. Initialized on first call to getInterfaceList */
@UnsupportedAppUsage
@@ -77,7 +77,7 @@
int protocol, @Nullable String manufacturerName, @Nullable String productName,
@NonNull String version, @NonNull UsbConfiguration[] configurations,
@NonNull IUsbSerialReader serialNumberReader,
- boolean hasAudioPlayback, boolean hasAudioCapture) {
+ boolean hasAudioPlayback, boolean hasAudioCapture, boolean hasMidi) {
mName = Preconditions.checkNotNull(name);
mVendorId = vendorId;
mProductId = productId;
@@ -91,6 +91,7 @@
mSerialNumberReader = Preconditions.checkNotNull(serialNumberReader);
mHasAudioPlayback = hasAudioPlayback;
mHasAudioCapture = hasAudioCapture;
+ mHasMidi = hasMidi;
// Make sure the binder belongs to the system
if (ActivityThread.isSystem()) {
@@ -230,6 +231,11 @@
return mHasAudioCapture;
}
+ /** @hide */
+ public boolean getHasMidi() {
+ return mHasMidi;
+ }
+
/**
* Returns the {@link UsbConfiguration} at the given index.
*
@@ -309,6 +315,7 @@
+ ",mVersion=" + mVersion + ",mSerialNumberReader=" + mSerialNumberReader
+ ", mHasAudioPlayback=" + mHasAudioPlayback
+ ", mHasAudioCapture=" + mHasAudioCapture
+ + ", mHasMidi=" + mHasMidi
+ ", mConfigurations=[");
for (int i = 0; i < mConfigurations.length; i++) {
builder.append("\n");
@@ -337,9 +344,11 @@
// Capabilities
boolean hasAudioPlayback = in.readInt() == 1;
boolean hasAudioCapture = in.readInt() == 1;
+ boolean hasMidi = in.readInt() == 1;
+
UsbDevice device = new UsbDevice(name, vendorId, productId, clasz, subClass, protocol,
manufacturerName, productName, version, configurations, serialNumberReader,
- hasAudioPlayback, hasAudioCapture);
+ hasAudioPlayback, hasAudioCapture, hasMidi);
return device;
}
@@ -367,7 +376,8 @@
parcel.writeParcelableArray(mConfigurations, 0);
parcel.writeInt(mHasAudioPlayback ? 1 : 0);
parcel.writeInt(mHasAudioCapture ? 1 : 0);
- }
+ parcel.writeInt(mHasMidi ? 1 : 0);
+ }
public static int getDeviceId(String name) {
return native_get_device_id(name);
@@ -396,6 +406,7 @@
private final @NonNull UsbConfiguration[] mConfigurations;
private final boolean mHasAudioPlayback;
private final boolean mHasAudioCapture;
+ private final boolean mHasMidi;
// Temporary storage for serial number. Serial number reader need to be wrapped in a
// IUsbSerialReader as they might be used as PII.
@@ -405,7 +416,7 @@
int protocol, @Nullable String manufacturerName, @Nullable String productName,
@NonNull String version, @NonNull UsbConfiguration[] configurations,
@Nullable String serialNumber,
- boolean hasAudioPlayback, boolean hasAudioCapture) {
+ boolean hasAudioPlayback, boolean hasAudioCapture, boolean hasMidi) {
mName = Preconditions.checkNotNull(name);
mVendorId = vendorId;
mProductId = productId;
@@ -419,6 +430,7 @@
this.serialNumber = serialNumber;
mHasAudioPlayback = hasAudioPlayback;
mHasAudioCapture = hasAudioCapture;
+ mHasMidi = hasMidi;
}
/**
@@ -431,7 +443,7 @@
public UsbDevice build(@NonNull IUsbSerialReader serialReader) {
return new UsbDevice(mName, mVendorId, mProductId, mClass, mSubclass, mProtocol,
mManufacturerName, mProductName, mVersion, mConfigurations, serialReader,
- mHasAudioPlayback, mHasAudioCapture);
+ mHasAudioPlayback, mHasAudioCapture, mHasMidi);
}
}
}
diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbDeviceDescriptor.java b/services/usb/java/com/android/server/usb/descriptors/UsbDeviceDescriptor.java
index 9735502..9739243 100644
--- a/services/usb/java/com/android/server/usb/descriptors/UsbDeviceDescriptor.java
+++ b/services/usb/java/com/android/server/usb/descriptors/UsbDeviceDescriptor.java
@@ -159,7 +159,8 @@
return new UsbDevice.Builder(parser.getDeviceAddr(), mVendorID,
mProductID, mDevClass, mDevSubClass, mProtocol, mfgName, prodName, versionString,
- configs, serialStr, parser.hasAudioPlayback(), parser.hasAudioCapture());
+ configs, serialStr, parser.hasAudioPlayback(), parser.hasAudioCapture(),
+ parser.hasMIDIInterface());
}
@Override