diff options
| -rw-r--r-- | api/current.txt | 1 | ||||
| -rw-r--r-- | api/system-current.txt | 1 | ||||
| -rw-r--r-- | core/java/android/hardware/usb/UsbDevice.java | 19 | ||||
| -rw-r--r-- | services/core/jni/com_android_server_UsbHostManager.cpp | 5 | ||||
| -rw-r--r-- | services/usb/java/com/android/server/usb/UsbHostManager.java | 7 |
5 files changed, 26 insertions, 7 deletions
diff --git a/api/current.txt b/api/current.txt index cef1fd2e0c38..96e5018b7f9b 100644 --- a/api/current.txt +++ b/api/current.txt @@ -14025,6 +14025,7 @@ package android.hardware.usb { method public java.lang.String getProductName(); method public java.lang.String getSerialNumber(); method public int getVendorId(); + method public java.lang.String getVersion(); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator<android.hardware.usb.UsbDevice> CREATOR; } diff --git a/api/system-current.txt b/api/system-current.txt index dbf47b9158a0..8cce95c453f4 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -14929,6 +14929,7 @@ package android.hardware.usb { method public java.lang.String getProductName(); method public java.lang.String getSerialNumber(); method public int getVendorId(); + method public java.lang.String getVersion(); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator<android.hardware.usb.UsbDevice> CREATOR; } diff --git a/core/java/android/hardware/usb/UsbDevice.java b/core/java/android/hardware/usb/UsbDevice.java index 1a42319f475d..410d55010363 100644 --- a/core/java/android/hardware/usb/UsbDevice.java +++ b/core/java/android/hardware/usb/UsbDevice.java @@ -45,6 +45,7 @@ public class UsbDevice implements Parcelable { private final String mName; private final String mManufacturerName; private final String mProductName; + private final String mVersion; private final String mSerialNumber; private final int mVendorId; private final int mProductId; @@ -62,7 +63,7 @@ public class UsbDevice implements Parcelable { */ public UsbDevice(String name, int vendorId, int productId, int Class, int subClass, int protocol, - String manufacturerName, String productName, String serialNumber) { + String manufacturerName, String productName, String version, String serialNumber) { mName = name; mVendorId = vendorId; mProductId = productId; @@ -71,6 +72,7 @@ public class UsbDevice implements Parcelable { mProtocol = protocol; mManufacturerName = manufacturerName; mProductName = productName; + mVersion = version; mSerialNumber = serialNumber; } @@ -104,6 +106,15 @@ public class UsbDevice implements Parcelable { } /** + * Returns the version number of the device. + * + * @return the device version + */ + public String getVersion() { + return mVersion; + } + + /** * Returns the serial number of the device. * * @return the serial number name @@ -263,7 +274,7 @@ public class UsbDevice implements Parcelable { ",mVendorId=" + mVendorId + ",mProductId=" + mProductId + ",mClass=" + mClass + ",mSubclass=" + mSubclass + ",mProtocol=" + mProtocol + ",mManufacturerName=" + mManufacturerName + ",mProductName=" + mProductName + - ",mSerialNumber=" + mSerialNumber + ",mConfigurations=["); + ",mVersion=" + mVersion + ",mSerialNumber=" + mSerialNumber + ",mConfigurations=["); for (int i = 0; i < mConfigurations.length; i++) { builder.append("\n"); builder.append(mConfigurations[i].toString()); @@ -283,10 +294,11 @@ public class UsbDevice implements Parcelable { int protocol = in.readInt(); String manufacturerName = in.readString(); String productName = in.readString(); + String version = in.readString(); String serialNumber = in.readString(); Parcelable[] configurations = in.readParcelableArray(UsbInterface.class.getClassLoader()); UsbDevice device = new UsbDevice(name, vendorId, productId, clasz, subClass, protocol, - manufacturerName, productName, serialNumber); + manufacturerName, productName, version, serialNumber); device.setConfigurations(configurations); return device; } @@ -309,6 +321,7 @@ public class UsbDevice implements Parcelable { parcel.writeInt(mProtocol); parcel.writeString(mManufacturerName); parcel.writeString(mProductName); + parcel.writeString(mVersion); parcel.writeString(mSerialNumber); parcel.writeParcelableArray(mConfigurations, 0); } diff --git a/services/core/jni/com_android_server_UsbHostManager.cpp b/services/core/jni/com_android_server_UsbHostManager.cpp index ee50ff9ec38b..d8c172fd51cc 100644 --- a/services/core/jni/com_android_server_UsbHostManager.cpp +++ b/services/core/jni/com_android_server_UsbHostManager.cpp @@ -71,6 +71,7 @@ static int usb_device_added(const char *devname, void* client_data) { char *manufacturer = usb_device_get_manufacturer_name(device); char *product = usb_device_get_product_name(device); + int version = usb_device_get_version(device); char *serial = usb_device_get_serial(device); jstring deviceName = env->NewStringUTF(devname); @@ -81,7 +82,7 @@ static int usb_device_added(const char *devname, void* client_data) { jboolean result = env->CallBooleanMethod(thiz, method_beginUsbDeviceAdded, deviceName, usb_device_get_vendor_id(device), usb_device_get_product_id(device), deviceDesc->bDeviceClass, deviceDesc->bDeviceSubClass, deviceDesc->bDeviceProtocol, - manufacturerName, productName, serialNumber); + manufacturerName, productName, version, serialNumber); env->DeleteLocalRef(serialNumber); env->DeleteLocalRef(productName); @@ -199,7 +200,7 @@ int register_android_server_UsbHostManager(JNIEnv *env) return -1; } method_beginUsbDeviceAdded = env->GetMethodID(clazz, "beginUsbDeviceAdded", - "(Ljava/lang/String;IIIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z"); + "(Ljava/lang/String;IIIIILjava/lang/String;Ljava/lang/String;ILjava/lang/String;)Z"); if (method_beginUsbDeviceAdded == NULL) { ALOGE("Can't find beginUsbDeviceAdded"); return -1; diff --git a/services/usb/java/com/android/server/usb/UsbHostManager.java b/services/usb/java/com/android/server/usb/UsbHostManager.java index 5b580511096a..f5f2b07e3e93 100644 --- a/services/usb/java/com/android/server/usb/UsbHostManager.java +++ b/services/usb/java/com/android/server/usb/UsbHostManager.java @@ -112,7 +112,7 @@ public class UsbHostManager { */ private boolean beginUsbDeviceAdded(String deviceName, int vendorID, int productID, int deviceClass, int deviceSubclass, int deviceProtocol, - String manufacturerName, String productName, String serialNumber) { + String manufacturerName, String productName, int version, String serialNumber) { if (DEBUG) { Slog.d(TAG, "usb:UsbHostManager.beginUsbDeviceAdded(" + deviceName + ")"); @@ -149,9 +149,12 @@ public class UsbHostManager { return false; } + // Create version string in "%.%" format + String versionString = Integer.toString(version >> 8) + "." + (version & 0xFF); + mNewDevice = new UsbDevice(deviceName, vendorID, productID, deviceClass, deviceSubclass, deviceProtocol, - manufacturerName, productName, serialNumber); + manufacturerName, productName, versionString, serialNumber); mNewConfigurations = new ArrayList<UsbConfiguration>(); mNewInterfaces = new ArrayList<UsbInterface>(); |