diff options
| author | Keith Packard <keithp@keithp.com> | 2015-02-06 03:32:27 -0800 | 
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2015-02-06 03:32:27 -0800 | 
| commit | a3f26f6d0c7574b8cdaecbccd7cfe89aaeb736b0 (patch) | |
| tree | 917e8b08a3fef32c3820a89299791a157bf80e46 /micropeak | |
| parent | cc707432c6eaedb9587bb63ac570146b356b6bfd (diff) | |
micropeak: Support both FTDI and Altus Metrum USB IDs
The windows driver only returns FTDI devices when
altos_ftdi_list_start is invoked, so we need to call both that and the
regular altos_list_start to get all of the devices.
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'micropeak')
| -rw-r--r-- | micropeak/MicroUSB.java | 30 | 
1 files changed, 26 insertions, 4 deletions
| diff --git a/micropeak/MicroUSB.java b/micropeak/MicroUSB.java index 6ffdb628..ae582a31 100644 --- a/micropeak/MicroUSB.java +++ b/micropeak/MicroUSB.java @@ -75,11 +75,17 @@ public class MicroUSB extends altos_device implements AltosDevice {  		return libaltos.altos_open(this);  	} -	private boolean isMicro() { +	private boolean isFTDI() {  		int vid = getVendor();  		int pid = getProduct();  		if (vid == 0x0403 && pid == 0x6015)  			return true; +		return false; +	} + +	private boolean isMicro() { +		int vid = getVendor(); +		int pid = getProduct();  		if (vid == AltosLib.vendor_altusmetrum &&  		    pid == AltosLib.product_mpusb)  			return true; @@ -87,16 +93,32 @@ public class MicroUSB extends altos_device implements AltosDevice {  	}  	public boolean matchProduct(int product) { -		return isMicro(); +		return isFTDI() || isMicro();  	}  	static java.util.List<MicroUSB> list() {  		if (!load_library())  			return null; -		SWIGTYPE_p_altos_list list = libaltos.altos_ftdi_list_start(); -  		ArrayList<MicroUSB> device_list = new ArrayList<MicroUSB>(); + +		SWIGTYPE_p_altos_list list; + +		list = libaltos.altos_ftdi_list_start(); + +		if (list != null) { +			for (;;) { +				MicroUSB device = new MicroUSB(); +				if (libaltos.altos_list_next(list, device) == 0) +					break; +				if (device.isFTDI()) +					device_list.add(device); +			} +			libaltos.altos_list_finish(list); +		} + +		list = libaltos.altos_list_start(); +  		if (list != null) {  			for (;;) {  				MicroUSB device = new MicroUSB(); | 
