2016-06-29 15 views
0

Ich habe ein USB-Gerät, mit dem ich kommunizieren muss, und ich habe den Code unter Verwendung von NDK-Code mit JNI-Aufrufe an die USB-Host-APIs.Android USB-Host DeviceConnection.setInterface vor API Level 21

Es handelt sich jedoch um einen Aufruf von DeviceConnection.setInterface(), das ein Aufruf von API 21+ ist. Wenn ich diesen Aufruf verlasse, scheitern Control- und BulkTransfers.

Wie ist die Konfiguration vor API 21 festgelegt? Welches UsbInterface ist standardmäßig für eine DeviceConnection ausgewählt? Ich rufe claimInterface auf, aber es funktioniert immer noch nicht.

Gibt es eine Möglichkeit, dies nur mit API 19-Aufrufen zu tun, oder kann ich dies direkt mit libusb tun?

Antwort

0

landete ich auf nativen Code zurückgreifen, um die gleiche usbfs Code aufzurufen, die UsbDeviceConnection.setInterface() tut:

#include <linux/ioctl.h> 
#include <sys/ioctl.h> 

// Struct and ioctl define stolen from linux_usbfs.h 
struct usbfs_setinterface { 
    /* keep in sync with usbdevice_fs.h:usbdevfs_setinterface */ 
    unsigned int interface; 
    unsigned int altsetting; 
}; 

#define IOCTL_USBFS_SETINTF _IOR('U', 4, struct usbfs_setinterface) 

// Basically the same as linux_usbfs.c 
int fd = gUsbDeviceConnection.getFileDescriptor(env); 
struct usbfs_setinterface setintf; 

setintf.interface = CIMAX_INTERFACE; 
setintf.altsetting = alternate; 
int r = ioctl(fd, IOCTL_USBFS_SETINTF, &setintf); 

Beachten Sie, dass die gUsbDeviceConnection.getFileDescriptor (env); Zeile ist mein JNI-Wrapper zum Aufrufen der Java UsbDeviceConnection.getFileDescriptor-Methode aus C++ - Ihre Methode kann variieren.

Dieser arbeitete für mich auf API 19 und 21

+0

Was nach getan werden müssen: UsbDeviceConnection.setInterface(). Ich bin stat Lesen von bestehenden connection.bulkTransfer(), aber ich kann nicht lesen. "Fehlerantwort kommt". – Parth

+0

Meine Vermutung ist, dass es gerätespezifisch ist. Mein Problem war, dass UsbDeviceConnection.setInterface() nur API-Ebene 21 + war, was ich mit dem obigen NDK C-Code gelöst habe. – jensk

Verwandte Themen