diff options
Diffstat (limited to 'micropeak/MicroUSB.java')
| -rw-r--r-- | micropeak/MicroUSB.java | 46 | 
1 files changed, 36 insertions, 10 deletions
diff --git a/micropeak/MicroUSB.java b/micropeak/MicroUSB.java index 24f6722b..fa20488d 100644 --- a/micropeak/MicroUSB.java +++ b/micropeak/MicroUSB.java @@ -19,7 +19,8 @@ package org.altusmetrum.micropeak;  import java.util.*;  import libaltosJNI.*; -import org.altusmetrum.altosuilib_3.*; +import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altosuilib_6.*;  public class MicroUSB extends altos_device implements AltosDevice { @@ -74,25 +75,50 @@ public class MicroUSB extends altos_device implements AltosDevice {  		return libaltos.altos_open(this);  	} +	private boolean isFTDI() { +		int vid = getVendor(); +		int pid = getProduct(); +		if (vid == 0x0403 && pid == 0x6015) +			return true; +		return false; +	} +  	private boolean isMicro() { -		if (getVendor() != 0x0403) -			return false; -		if (getProduct() != 0x6015) -			return false; -		return true; +		int vid = getVendor(); +		int pid = getProduct(); +		if (vid == AltosLib.vendor_altusmetrum && +		    pid == AltosLib.product_mpusb) +			return true; +		return false;  	}  	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(); @@ -106,4 +132,4 @@ public class MicroUSB extends altos_device implements AltosDevice {  		return device_list;  	} -}
\ No newline at end of file +}  | 
