X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=micropeak%2FMicroUSB.java;h=092c3d44ef34d8c6bad9bc7f31726053f7072da0;hp=d48610fe720a07d5e057931eb3e29389254455ad;hb=56629222711ba3ef7853405c9b07ad614fb29b95;hpb=f7a56152808c7838c1886884bb77de2705ab076c diff --git a/micropeak/MicroUSB.java b/micropeak/MicroUSB.java index d48610fe..092c3d44 100644 --- a/micropeak/MicroUSB.java +++ b/micropeak/MicroUSB.java @@ -3,7 +3,8 @@ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of @@ -16,10 +17,13 @@ */ package org.altusmetrum.micropeak; + import java.util.*; import libaltosJNI.*; +import org.altusmetrum.altoslib_13.*; +import org.altusmetrum.altosuilib_13.*; -public class MicroUSB extends altos_device { +public class MicroUSB extends altos_device implements AltosDevice { static boolean initialized = false; static boolean loaded_library = false; @@ -48,16 +52,16 @@ public class MicroUSB extends altos_device { String name = getName(); if (name == null) name = "Altus Metrum"; - return String.format("%-20.20s %4d %s", - name, getSerial(), getPath()); + return String.format("%-24.24s %s", + name, getPath()); } public String toShortString() { String name = getName(); if (name == null) name = "Altus Metrum"; - return String.format("%s %d %s", - name, getSerial(), getPath()); + return String.format("%s %s", + name, getPath()); } @@ -72,21 +76,69 @@ public class MicroUSB extends altos_device { 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) + 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 isFTDI() || isMicro(); + } + + public int hashCode() { + return getVendor() ^ getProduct() ^ getSerial() ^ getPath().hashCode(); + } + + public boolean equals(Object o) { + if (o == null) return false; - if (getProduct() != 0x6001) + + if (!(o instanceof MicroUSB)) return false; - return true; + + MicroUSB other = (MicroUSB) o; + + return getVendor() == other.getVendor() && + getProduct() == other.getProduct() && + getSerial() == other.getSerial() && + getPath().equals(other.getPath()); } static java.util.List list() { if (!load_library()) return null; - SWIGTYPE_p_altos_list list = libaltos.altos_list_start(); - ArrayList device_list = new ArrayList(); + + 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(); @@ -100,4 +152,4 @@ public class MicroUSB extends altos_device { return device_list; } -} \ No newline at end of file +}