micropeak: Missing a couple of new exceptions when loading files
[fw/altos] / altosui / AltosBTDevice.java
index 233037de9893776e50571deaaab9088aa00d909b..727a9f6625ce7953e251c94817cc9f5832c4b1ad 100644 (file)
  */
 
 package altosui;
-import java.lang.*;
-import java.util.*;
 import libaltosJNI.*;
+import org.altusmetrum.altosuilib_1.*;
 
-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";
@@ -59,6 +31,23 @@ public class AltosBTDevice extends altos_bt_device {
                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)
@@ -75,42 +64,61 @@ public class AltosBTDevice extends altos_bt_device {
        }
 
        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 SWIGTYPE_p_altos_file open() {
+               return libaltos.altos_bt_open(this);
        }
 
-       public boolean isAltusMetrum() {
-               if (getName().startsWith(bt_product_telebt))
+       /*
+       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;
+//             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;
        }
+
+       public boolean equals(Object o) {
+               if (!(o instanceof AltosBTDevice))
+                       return false;
+               AltosBTDevice other = (AltosBTDevice) o;
+               return getName().equals(other.getName()) && getAddr().equals(other.getAddr());
+       }
+
+       public int hashCode() {
+               return getName().hashCode() ^ getAddr().hashCode();
+       }
+
+       public AltosBTDevice(String name, String addr) {
+               Altos.load_library();
+               libaltos.altos_bt_fill_in(name, addr,this);
+       }
+
+       public AltosBTDevice() {
+       }
 }
\ No newline at end of file