Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 95966880 authored by Eric Laurent's avatar Eric Laurent
Browse files

Revert "Access already-read descriptors on device connect. (Eliminate extra read)"

This reverts commit 75ed7741.

Bug: 68944518
Bug: 68937158
Test: USB connections to audio device and laptop
Change-Id: I24b4171a74591b598dc1a862d07bcf7f7c05cfac
parent 29862ccd
Loading
Loading
Loading
Loading
+16 −5
Original line number Diff line number Diff line
@@ -65,15 +65,28 @@ static int usb_device_added(const char *devAddress, void* clientData) {
    int subClassID = deviceDesc->bDeviceSubClass;

    // get the raw descriptors
    int numBytes = usb_device_get_descriptors_length(device);
    int fd = usb_device_get_fd(device);
    if (fd < 0) {
        ALOGE("usb_device_get_fd failed\n");
        usb_device_close(device);
        // TODO return an error code here?
        return 0;
    }

    // from android_hardware_UsbDeviceConnection_get_desc()
    jbyte rawdescriptors[MAX_DESCRIPTORS_LENGTH];
    lseek(fd, 0, SEEK_SET);
    int numBytes = read(fd, rawdescriptors, sizeof(rawdescriptors));

    usb_device_close(device);

    if (numBytes > 0) {
        JNIEnv* env = AndroidRuntime::getJNIEnv();
        jobject thiz = (jobject)clientData;
        jstring deviceAddress = env->NewStringUTF(devAddress);

        jbyteArray descriptorsArray = env->NewByteArray(numBytes);
        const jbyte* rawDescriptors = (const jbyte*)usb_device_get_raw_descriptors(device);
        env->SetByteArrayRegion(descriptorsArray, 0, numBytes, rawDescriptors);
        env->SetByteArrayRegion(descriptorsArray, 0, numBytes, rawdescriptors);

        env->CallBooleanMethod(thiz, method_usbDeviceAdded,
                deviceAddress, classID, subClassID, descriptorsArray);
@@ -87,8 +100,6 @@ static int usb_device_added(const char *devAddress, void* clientData) {
        ALOGE("error reading descriptors\n");
    }

    usb_device_close(device);

    return 0;
}