// Path: usbSerialForAndroid/src/main/java/com/hoho/android/usbserial/driver/UsbSerialDriver.java
// public interface UsbSerialDriver {
// 
//     /**
//      * Returns the raw {@link UsbDevice} backing this port.
//      *
//      * @return the device
//      */
//     UsbDevice getDevice();
// 
//     /**
//      * Returns all available ports for this device. This list must have at least
//      * one entry.
//      *
//      * @return the ports
//      */
//     List<UsbSerialPort> getPorts();
// }
// 
// Path: usbSerialForAndroid/src/main/java/com/hoho/android/usbserial/driver/UsbSerialProber.java
// public class UsbSerialProber {
// 
//     private final ProbeTable mProbeTable;
// 
//     public UsbSerialProber(ProbeTable probeTable) {
//         mProbeTable = probeTable;
//     }
// 
//     public static UsbSerialProber getDefaultProber() {
//         return new UsbSerialProber(getDefaultProbeTable());
//     }
//     
//     public static ProbeTable getDefaultProbeTable() {
//         final ProbeTable probeTable = new ProbeTable();
//         probeTable.addDriver(CdcAcmSerialDriver.class);
//         probeTable.addDriver(Cp21xxSerialDriver.class);
//         probeTable.addDriver(FtdiSerialDriver.class);
//         probeTable.addDriver(ProlificSerialDriver.class);
//         probeTable.addDriver(Ch34xSerialDriver.class);
//         return probeTable;
//     }
// 
//     /**
//      * Finds and builds all possible {@link UsbSerialDriver UsbSerialDrivers}
//      * from the currently-attached {@link UsbDevice} hierarchy. This method does
//      * not require permission from the Android USB system, since it does not
//      * open any of the devices.
//      *
//      * @param usbManager usb manager
//      * @return a list, possibly empty, of all compatible drivers
//      */
//     public List<UsbSerialDriver> findAllDrivers(final UsbManager usbManager) {
//         final List<UsbSerialDriver> result = new ArrayList<>();
// 
//         for (final UsbDevice usbDevice : usbManager.getDeviceList().values()) {
//             final UsbSerialDriver driver = probeDevice(usbDevice);
//             if (driver != null) {
//                 result.add(driver);
//             }
//         }
//         return result;
//     }
//     
//     /**
//      * Probes a single device for a compatible driver.
//      * 
//      * @param usbDevice the usb device to probe
//      * @return a new {@link UsbSerialDriver} compatible with this device, or
//      *         {@code null} if none available.
//      */
//     public UsbSerialDriver probeDevice(final UsbDevice usbDevice) {
//         final int vendorId = usbDevice.getVendorId();
//         final int productId = usbDevice.getProductId();
// 
//         final Class<? extends UsbSerialDriver> driverClass =
//                 mProbeTable.findDriver(vendorId, productId);
//         if (driverClass != null) {
//             final UsbSerialDriver driver;
//             try {
//                 final Constructor<? extends UsbSerialDriver> ctor =
//                         driverClass.getConstructor(UsbDevice.class);
//                 driver = ctor.newInstance(usbDevice);
//             } catch (NoSuchMethodException | IllegalArgumentException | InstantiationException |
//                      IllegalAccessException | InvocationTargetException e) {
//                 throw new RuntimeException(e);
//             }
//             return driver;
//         }
//         return null;
//     }
// 
// }


import android.app.AlertDialog;
import android.content.Context;
import android.hardware.usb.UsbDevice;
import android.hardware.usb.UsbManager;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.ListFragment;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import com.hoho.android.usbserial.driver.UsbSerialDriver;
import com.hoho.android.usbserial.driver.UsbSerialProber;
import java.util.ArrayList;
import java.util.Locale;
package com.hoho.android.usbserial.examples;





public class DevicesFragment extends ListFragment {

    static class ListItem {
        UsbDevice device;
        int port;
// Path: usbSerialForAndroid/src/main/java/com/hoho/android/usbserial/driver/UsbSerialDriver.java
// public interface UsbSerialDriver {
// 
//     /**
//      * Returns the raw {@link UsbDevice} backing this port.
//      *
//      * @return the device
//      */
//     UsbDevice getDevice();
// 
//     /**
//      * Returns all available ports for this device. This list must have at least
//      * one entry.
//      *
//      * @return the ports
//      */
//     List<UsbSerialPort> getPorts();
// }
// 
// Path: usbSerialForAndroid/src/main/java/com/hoho/android/usbserial/driver/UsbSerialProber.java
// public class UsbSerialProber {
// 
//     private final ProbeTable mProbeTable;
// 
//     public UsbSerialProber(ProbeTable probeTable) {
//         mProbeTable = probeTable;
//     }
// 
//     public static UsbSerialProber getDefaultProber() {
//         return new UsbSerialProber(getDefaultProbeTable());
//     }
//     
//     public static ProbeTable getDefaultProbeTable() {
//         final ProbeTable probeTable = new ProbeTable();
//         probeTable.addDriver(CdcAcmSerialDriver.class);
//         probeTable.addDriver(Cp21xxSerialDriver.class);
//         probeTable.addDriver(FtdiSerialDriver.class);
//         probeTable.addDriver(ProlificSerialDriver.class);
//         probeTable.addDriver(Ch34xSerialDriver.class);
//         return probeTable;
//     }
// 
//     /**
//      * Finds and builds all possible {@link UsbSerialDriver UsbSerialDrivers}
//      * from the currently-attached {@link UsbDevice} hierarchy. This method does
//      * not require permission from the Android USB system, since it does not
//      * open any of the devices.
//      *
//      * @param usbManager usb manager
//      * @return a list, possibly empty, of all compatible drivers
//      */
//     public List<UsbSerialDriver> findAllDrivers(final UsbManager usbManager) {
//         final List<UsbSerialDriver> result = new ArrayList<>();
// 
//         for (final UsbDevice usbDevice : usbManager.getDeviceList().values()) {
//             final UsbSerialDriver driver = probeDevice(usbDevice);
//             if (driver != null) {
//                 result.add(driver);
//             }
//         }
//         return result;
//     }
//     
//     /**
//      * Probes a single device for a compatible driver.
//      * 
//      * @param usbDevice the usb device to probe
//      * @return a new {@link UsbSerialDriver} compatible with this device, or
//      *         {@code null} if none available.
//      */
//     public UsbSerialDriver probeDevice(final UsbDevice usbDevice) {
//         final int vendorId = usbDevice.getVendorId();
//         final int productId = usbDevice.getProductId();
// 
//         final Class<? extends UsbSerialDriver> driverClass =
//                 mProbeTable.findDriver(vendorId, productId);
//         if (driverClass != null) {
//             final UsbSerialDriver driver;
//             try {
//                 final Constructor<? extends UsbSerialDriver> ctor =
//                         driverClass.getConstructor(UsbDevice.class);
//                 driver = ctor.newInstance(usbDevice);
//             } catch (NoSuchMethodException | IllegalArgumentException | InstantiationException |
//                      IllegalAccessException | InvocationTargetException e) {
//                 throw new RuntimeException(e);
//             }
//             return driver;
//         }
//         return null;
//     }
// 
// }


// Path: usbSerialExamples/src/main/java/com/hoho/android/usbserial/examples/DevicesFragment.java
import android.app.AlertDialog;
import android.content.Context;
import android.hardware.usb.UsbDevice;
import android.hardware.usb.UsbManager;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.ListFragment;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import com.hoho.android.usbserial.driver.UsbSerialDriver;
import com.hoho.android.usbserial.driver.UsbSerialProber;
import java.util.ArrayList;
import java.util.Locale;

package com.hoho.android.usbserial.examples;





public class DevicesFragment extends ListFragment {

    static class ListItem {
        UsbDevice device;
        int port;
        UsbSerialDriver driver;