diff --git a/core/jni/android_hardware_UsbDeviceConnection.cpp b/core/jni/android_hardware_UsbDeviceConnection.cpp index 845d65c67719b..a0228428e90e5 100644 --- a/core/jni/android_hardware_UsbDeviceConnection.cpp +++ b/core/jni/android_hardware_UsbDeviceConnection.cpp @@ -16,20 +16,19 @@ #define LOG_TAG "UsbDeviceConnectionJNI" -#include "utils/Log.h" - -#include "jni.h" +#include #include -#include "core_jni_helpers.h" - +#include +#include +#include #include +#include #include -#include -#include -#include -#include +#include "core_jni_helpers.h" +#include "jni.h" +#include "utils/Log.h" using namespace android; using namespace std::chrono; @@ -91,22 +90,8 @@ android_hardware_UsbDeviceConnection_get_fd(JNIEnv *env, jobject thiz) static jbyteArray android_hardware_UsbDeviceConnection_get_desc(JNIEnv *env, jobject thiz) { - char buffer[16384]; int fd = android_hardware_UsbDeviceConnection_get_fd(env, thiz); - if (fd < 0) return NULL; - lseek(fd, 0, SEEK_SET); - int length = read(fd, buffer, sizeof(buffer)); - if (length < 0) return NULL; - - jbyteArray ret = env->NewByteArray(length); - if (ret) { - jbyte* bytes = (jbyte*)env->GetPrimitiveArrayCritical(ret, 0); - if (bytes) { - memcpy(bytes, buffer, length); - env->ReleasePrimitiveArrayCritical(ret, bytes, 0); - } - } - return ret; + return usb_jni_read_descriptors(env, fd); } static jboolean diff --git a/services/core/jni/com_android_server_UsbAlsaJackDetector.cpp b/services/core/jni/com_android_server_UsbAlsaJackDetector.cpp index ccb4f5995330f..cba54b39fe9a1 100644 --- a/services/core/jni/com_android_server_UsbAlsaJackDetector.cpp +++ b/services/core/jni/com_android_server_UsbAlsaJackDetector.cpp @@ -25,7 +25,6 @@ #include #include -#include #include #include #include diff --git a/services/core/jni/com_android_server_UsbDescriptorParser.cpp b/services/core/jni/com_android_server_UsbDescriptorParser.cpp index d29d3fcb51d59..9917bcb45c0a1 100644 --- a/services/core/jni/com_android_server_UsbDescriptorParser.cpp +++ b/services/core/jni/com_android_server_UsbDescriptorParser.cpp @@ -15,16 +15,14 @@ */ #define LOG_TAG "UsbHostManagerJNI" -#include "utils/Log.h" - +#include #include +#include +#include #include "jni.h" -#include +#include "utils/Log.h" -#include - -#define MAX_DESCRIPTORS_LENGTH 4096 static const int USB_CONTROL_TRANSFER_TIMEOUT_MS = 200; // com.android.server.usb.descriptors @@ -41,26 +39,9 @@ jbyteArray JNICALL Java_com_android_server_usb_descriptors_UsbDescriptorParser_g } int fd = usb_device_get_fd(device); - if (fd < 0) { - usb_device_close(device); - return NULL; - } - - // from android_hardware_UsbDeviceConnection_get_desc() - jbyte buffer[MAX_DESCRIPTORS_LENGTH]; - lseek(fd, 0, SEEK_SET); - int numBytes = read(fd, buffer, sizeof(buffer)); - jbyteArray ret = NULL; + jbyteArray descriptors = usb_jni_read_descriptors(env, fd); usb_device_close(device); - - if (numBytes > 0) { - ret = env->NewByteArray(numBytes); - env->SetByteArrayRegion(ret, 0, numBytes, buffer); - } else { - ALOGE("error reading descriptors\n"); - } - - return ret; + return descriptors; } jstring JNICALL Java_com_android_server_usb_descriptors_UsbDescriptorParser_getDescriptorString_1native( diff --git a/services/core/jni/com_android_server_UsbDeviceManager.cpp b/services/core/jni/com_android_server_UsbDeviceManager.cpp index 3ab5920d8b59c..0a9ce2fed7fc8 100644 --- a/services/core/jni/com_android_server_UsbDeviceManager.cpp +++ b/services/core/jni/com_android_server_UsbDeviceManager.cpp @@ -25,7 +25,6 @@ #include "MtpDescriptors.h" #include -#include #include #include #include diff --git a/services/core/jni/com_android_server_UsbHostManager.cpp b/services/core/jni/com_android_server_UsbHostManager.cpp index a629b69c1c279..e29d2ca663f7f 100644 --- a/services/core/jni/com_android_server_UsbHostManager.cpp +++ b/services/core/jni/com_android_server_UsbHostManager.cpp @@ -23,7 +23,6 @@ #include "android_runtime/Log.h" #include -#include #include #include #include @@ -31,8 +30,6 @@ #include -#define MAX_DESCRIPTORS_LENGTH 4096 - namespace android {