mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
android/usb: remove alternative way of scanning for devices
We now always create a list of usb devices that doesn't list a driver for known devices, and adds multiple entries with each of the drivers for devices that are unknown to us. This removes some debugging output in the ..._open() function as well. This could be combined with Christof's earlier commit. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
c81854ca21
commit
c19e3bd5ba
1 changed files with 14 additions and 47 deletions
|
@ -303,13 +303,9 @@ android_usb_serial_device_descriptor getDescriptor(QAndroidJniObject usbDevice)
|
||||||
return descriptor;
|
return descriptor;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<android_usb_serial_device_descriptor> serial_usb_android_get_devices(book driverSelection)
|
std::vector<android_usb_serial_device_descriptor> serial_usb_android_get_devices()
|
||||||
{
|
{
|
||||||
std::vector<std::string> driverNames;
|
std::vector<std::string> driverNames = { "", "CdcAcmSerialDriver", "Ch34xSerialDriver", "Cp21xxSerialDriver", "FtdiSerialDriver", "ProlificSerialDriver" };
|
||||||
if (driverSelection)
|
|
||||||
driverNames = { "", "CdcAcmSerialDriver", "Ch34xSerialDriver", "Cp21xxSerialDriver", "FtdiSerialDriver", "ProlificSerialDriver" };
|
|
||||||
else
|
|
||||||
driverNames = {""};
|
|
||||||
|
|
||||||
// Get the current main activity of the application.
|
// Get the current main activity of the application.
|
||||||
QAndroidJniObject activity = QtAndroid::androidActivity();
|
QAndroidJniObject activity = QtAndroid::androidActivity();
|
||||||
|
@ -325,35 +321,27 @@ std::vector<android_usb_serial_device_descriptor> serial_usb_android_get_devices
|
||||||
jint numDevices = deviceListCollection.callMethod<jint>("size");
|
jint numDevices = deviceListCollection.callMethod<jint>("size");
|
||||||
QAndroidJniObject arrayOfDevices = deviceListCollection.callObjectMethod("toArray", "()[Ljava/lang/Object;");
|
QAndroidJniObject arrayOfDevices = deviceListCollection.callObjectMethod("toArray", "()[Ljava/lang/Object;");
|
||||||
|
|
||||||
// Special case to keep a generic user-facing name if only one device is present.
|
std::vector<android_usb_serial_device_descriptor> retval;
|
||||||
if (numDevices == 1 && !driverSelection) {
|
for (int i = 0; i < numDevices ; i++) {
|
||||||
// UsbDevice usbDevice = arrayOfDevices[0]
|
// UsbDevice usbDevice = arrayOfDevices[i]
|
||||||
jobject value = env->GetObjectArrayElement(arrayOfDevices.object<jobjectArray>(), 0);
|
jobject value = env->GetObjectArrayElement(arrayOfDevices.object<jobjectArray>(), i);
|
||||||
QAndroidJniObject usbDevice(value);
|
QAndroidJniObject usbDevice(value);
|
||||||
android_usb_serial_device_descriptor descriptor = getDescriptor(usbDevice);
|
android_usb_serial_device_descriptor descriptor = getDescriptor(usbDevice);
|
||||||
descriptor.uiRepresentation = "USB Connection";
|
if (knownChipset(descriptor.vid, descriptor.pid)) {
|
||||||
|
retval.push_back(descriptor);
|
||||||
return {descriptor};
|
} else {
|
||||||
} else {
|
std::string ui = descriptor.uiRepresentation;
|
||||||
std::vector<android_usb_serial_device_descriptor> retval;
|
|
||||||
for (int i = 0; i < numDevices ; i++) {
|
|
||||||
// UsbDevice usbDevice = arrayOfDevices[i]
|
|
||||||
jobject value = env->GetObjectArrayElement(arrayOfDevices.object<jobjectArray>(), i);
|
|
||||||
QAndroidJniObject usbDevice(value);
|
|
||||||
|
|
||||||
for (std::string driverName : driverNames) {
|
for (std::string driverName : driverNames) {
|
||||||
android_usb_serial_device_descriptor descriptor = getDescriptor(usbDevice);
|
|
||||||
|
|
||||||
descriptor.className = driverName;
|
descriptor.className = driverName;
|
||||||
if (driverName != "")
|
if (driverName != "")
|
||||||
descriptor.uiRepresentation += " (" + driverName + ")";
|
descriptor.uiRepresentation = ui + " (" + driverName + ")";
|
||||||
else
|
else
|
||||||
descriptor.uiRepresentation += " (autoselect driver)";
|
descriptor.uiRepresentation = ui + " (autoselect driver)";
|
||||||
retval.push_back(descriptor);
|
retval.push_back(descriptor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return retval;
|
|
||||||
}
|
}
|
||||||
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -362,28 +350,7 @@ std::vector<android_usb_serial_device_descriptor> serial_usb_android_get_devices
|
||||||
*/
|
*/
|
||||||
dc_status_t serial_usb_android_open(dc_iostream_t **iostream, dc_context_t *context)
|
dc_status_t serial_usb_android_open(dc_iostream_t **iostream, dc_context_t *context)
|
||||||
{
|
{
|
||||||
// Testing of the method only!
|
std::vector<android_usb_serial_device_descriptor> devices = serial_usb_android_get_devices();
|
||||||
{
|
|
||||||
TRACE(device->contxt, "List of devices with specific drivers:");
|
|
||||||
std::vector<android_usb_serial_device_descriptor> devices = serial_usb_android_get_devices(true);
|
|
||||||
for (auto device : devices) {
|
|
||||||
TRACE(device->contxt,
|
|
||||||
"USB Device: uiRepresentation=%s, className=%s, manufacturer=%s, product=%s, pid=%i, vid=%i",
|
|
||||||
device.uiRepresentation.c_str(), device.className.c_str(), device.manufacturer.c_str(),
|
|
||||||
device.product.c_str(), device.pid, device.vid);
|
|
||||||
}
|
|
||||||
|
|
||||||
TRACE(device->contxt, "List of devices simple:");
|
|
||||||
devices = serial_usb_android_get_devices(false);
|
|
||||||
for (auto device : devices) {
|
|
||||||
TRACE(device->contxt,
|
|
||||||
"USB Device: uiRepresentation=%s, className=%s, manufacturer=%s, product=%s, pid=%i, vid=%i",
|
|
||||||
device.uiRepresentation.c_str(), device.className.c_str(), device.manufacturer.c_str(),
|
|
||||||
device.product.c_str(), device.pid, device.vid);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
std::vector<android_usb_serial_device_descriptor> devices = serial_usb_android_get_devices(false);
|
|
||||||
|
|
||||||
if(devices.empty())
|
if(devices.empty())
|
||||||
return DC_STATUS_NODEVICE;
|
return DC_STATUS_NODEVICE;
|
||||||
|
|
Loading…
Add table
Reference in a new issue