Merge "usb: remove duplication in descriptor reading code."

This commit is contained in:
Elliott Hughes
2022-01-26 19:14:11 +00:00
committed by Gerrit Code Review
5 changed files with 15 additions and 54 deletions

View File

@@ -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

View File

@@ -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>

View File

@@ -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 "utils/Log.h"
#include <usbhost/usbhost.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(

View File

@@ -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>

View File

@@ -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
{