import java.util.*;
import libaltosJNI.*;
-public class AltosBTDevice extends altos_bt_device {
-
- static public boolean initialized = false;
- static public boolean loaded_library = false;
-
- public static boolean load_library() {
- if (!initialized) {
- try {
- System.loadLibrary("altos");
- libaltos.altos_init();
- loaded_library = true;
- } catch (UnsatisfiedLinkError e) {
- loaded_library = false;
- }
- initialized = true;
- }
- return loaded_library;
- }
-
- static String bt_product_telebt() {
- if (load_library())
- return libaltosConstants.BLUETOOTH_PRODUCT_TELEBT;
- return "TeleBT";
- }
+public class AltosBTDevice extends altos_bt_device implements AltosDevice {
- public final static String bt_product_telebt = bt_product_telebt();
- public final static String bt_product_any = "Any";
- public final static String bt_product_basestation = "Basestation";
-
- public String getProduct() {
+ public String getProductName() {
String name = getName();
if (name == null)
return "Altus Metrum";
return name.substring(0,dash);
}
+ public int getProduct() {
+ if (Altos.bt_product_telebt.equals(getProductName()))
+ return Altos.product_telebt;
+ return 0;
+ }
+
+ public String getPath() {
+ return getAddr();
+ }
+
+ public String getErrorString() {
+ altos_error error = new altos_error();
+
+ libaltos.altos_get_last_error(error);
+ return String.format("%s (%d)", error.getString(), error.getCode());
+ }
+
public int getSerial() {
String name = getName();
if (name == null)
}
public String toString() {
- String name = getName();
- if (name == null)
- name = "Altus Metrum";
return String.format("%-20.20s %4d %s",
- getProduct(), getSerial(), getAddr());
+ getProductName(), getSerial(), getAddr());
}
public String toShortString() {
- String name = getName();
- if (name == null)
- name = "Altus Metrum";
return String.format("%s %d %s",
- getProduct(), getSerial(), getAddr());
+ getProductName(), getSerial(), getAddr());
}
- public boolean isAltusMetrum() {
- if (getName().startsWith(bt_product_telebt))
+ public SWIGTYPE_p_altos_file open() {
+ return libaltos.altos_bt_open(this);
+ }
+
+ private boolean isAltusMetrum() {
+ if (getName().startsWith(Altos.bt_product_telebt))
return true;
return false;
}
- public boolean matchProduct(String want_product) {
+ public boolean matchProduct(int want_product) {
- if (!isAltusMetrum())
- return false;
+ System.out.printf("matchProduct %s %d\n", toString(), want_product);
+// if (!isAltusMetrum())
+// return false;
- if (want_product.equals(bt_product_any))
+ if (want_product == Altos.product_any)
return true;
- if (want_product.equals(bt_product_basestation))
- return matchProduct(bt_product_telebt);
+ if (want_product == Altos.product_basestation)
+ return matchProduct(Altos.product_telebt);
- if (want_product.equals(getProduct()))
+ if (want_product == getProduct())
return true;
return false;
}
- static AltosBTDevice[] list(String product) {
- if (!load_library())
- return null;
-
- SWIGTYPE_p_altos_bt_list list = libaltos.altos_bt_list_start();
+ public boolean equals(Object o) {
+ if (!(o instanceof AltosBTDevice))
+ return false;
+ AltosBTDevice other = (AltosBTDevice) o;
+ System.out.printf("AltosBTDevice equals %s == %s\n", toString(), other.toString());
+ return getName().equals(other.getName()) && getAddr().equals(other.getAddr());
+ }
- ArrayList<AltosBTDevice> device_list = new ArrayList<AltosBTDevice>();
- if (list != null) {
- SWIGTYPE_p_altos_file file;
+ public int hashCode() {
+ return getName().hashCode() ^ getAddr().hashCode();
+ }
- for (;;) {
- AltosBTDevice device = new AltosBTDevice();
- if (libaltos.altos_bt_list_next(list, device) == 0)
- break;
- if (device.matchProduct(product))
- device_list.add(device);
- }
- libaltos.altos_bt_list_finish(list);
- }
+ public AltosBTDevice(String name, String addr) {
+ libaltos.altos_bt_fill_in(name, addr,this);
+ }
- AltosBTDevice[] devices = new AltosBTDevice[device_list.size()];
- for (int i = 0; i < device_list.size(); i++)
- devices[i] = device_list.get(i);
- return devices;
+ public AltosBTDevice() {
}
}
\ No newline at end of file