diff options
| author | 2022-01-26 20:29:32 +0000 | |
|---|---|---|
| committer | 2022-01-26 20:29:32 +0000 | |
| commit | a89672b14bf082dbcdb8157f0ea403eabcae2dd2 (patch) | |
| tree | ef293305a1a4ce1d14f89ff67d4a2ba2228ee08e | |
| parent | 85a8eb8c610a6c85e76446c719e781b7f2cec226 (diff) | |
| parent | 6b09fade5bbbb9ca80603dcec94cd846411ca8b5 (diff) | |
Merge "usb: remove duplication in descriptor reading code." am: b612fc8f4f am: 2a4deb3988 am: 759ccebf47 am: 6b09fade5b
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1954916
Change-Id: I8896c953361b3c278a3f892b3edb8ea44e36e6f3
5 files changed, 15 insertions, 54 deletions
diff --git a/core/jni/android_hardware_UsbDeviceConnection.cpp b/core/jni/android_hardware_UsbDeviceConnection.cpp index 845d65c67719..a0228428e90e 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 <fcntl.h> #include <nativehelper/JNIPlatformHelp.h> -#include "core_jni_helpers.h" - +#include <stdio.h> +#include <sys/stat.h> +#include <sys/types.h> #include <usbhost/usbhost.h> +#include <usbhost/usbhost_jni.h> #include <chrono> -#include <stdio.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <fcntl.h> +#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 1c574fbb8df7..436ac1b253b1 100644 --- a/services/core/jni/com_android_server_UsbAlsaJackDetector.cpp +++ b/services/core/jni/com_android_server_UsbAlsaJackDetector.cpp @@ -25,7 +25,6 @@ #include <stdio.h> #include <string.h> -#include <asm/byteorder.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> diff --git a/services/core/jni/com_android_server_UsbDescriptorParser.cpp b/services/core/jni/com_android_server_UsbDescriptorParser.cpp index d29d3fcb51d5..9917bcb45c0a 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 <nativehelper/JNIHelp.h> #include <stdlib.h> +#include <usbhost/usbhost.h> +#include <usbhost/usbhost_jni.h> #include "jni.h" -#include <nativehelper/JNIHelp.h> - -#include <usbhost/usbhost.h> +#include "utils/Log.h" -#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 3ab5920d8b59..0a9ce2fed7fc 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 <stdio.h> -#include <asm/byteorder.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> diff --git a/services/core/jni/com_android_server_UsbHostManager.cpp b/services/core/jni/com_android_server_UsbHostManager.cpp index a629b69c1c27..e29d2ca663f7 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 <stdio.h> -#include <asm/byteorder.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> @@ -31,8 +30,6 @@ #include <usbhost/usbhost.h> -#define MAX_DESCRIPTORS_LENGTH 4096 - namespace android { |