Merge branch 'telemini' into telebt
[fw/altos] / altosui / Altos.java
index 54aced3222fa27571cc02acefebd826990bae7e3..6a2d9b9b202ff2ce0dddff09526316da14ef3616 100644 (file)
@@ -21,6 +21,8 @@ import java.awt.*;
 import java.util.*;
 import java.text.*;
 
+import libaltosJNI.*;
+
 public class Altos {
        /* EEProm command letters */
        static final int AO_LOG_FLIGHT = 'F';
@@ -222,4 +224,91 @@ public class Altos {
                        input = input.substring(0,dot);
                return input.concat(extension);
        }
+
+       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 int usb_vendor_altusmetrum() {
+               if (load_library())
+                       return libaltosConstants.USB_VENDOR_ALTUSMETRUM;
+               return 0x000a;
+       }
+
+       static int usb_product_altusmetrum() {
+               if (load_library())
+                       return libaltosConstants.USB_PRODUCT_ALTUSMETRUM;
+               return 0x000a;
+       }
+
+       static int usb_product_altusmetrum_min() {
+               if (load_library())
+                       return libaltosConstants.USB_PRODUCT_ALTUSMETRUM_MIN;
+               return 0x000a;
+       }
+
+       static int usb_product_altusmetrum_max() {
+               if (load_library())
+                       return libaltosConstants.USB_PRODUCT_ALTUSMETRUM_MAX;
+               return 0x000d;
+       }
+
+       static int usb_product_telemetrum() {
+               if (load_library())
+                       return libaltosConstants.USB_PRODUCT_TELEMETRUM;
+               return 0x000b;
+       }
+
+       static int usb_product_teledongle() {
+               if (load_library())
+                       return libaltosConstants.USB_PRODUCT_TELEDONGLE;
+               return 0x000c;
+       }
+
+       static int usb_product_teleterra() {
+               if (load_library())
+                       return libaltosConstants.USB_PRODUCT_TELETERRA;
+               return 0x000d;
+       }
+
+       static int usb_product_telebt() {
+               if (load_library())
+                       return libaltosConstants.USB_PRODUCT_TELEBT;
+               return 0x000e;
+       }
+
+       public final static int vendor_altusmetrum = usb_vendor_altusmetrum();
+       public final static int product_altusmetrum = usb_product_altusmetrum();
+       public final static int product_telemetrum = usb_product_telemetrum();
+       public final static int product_teledongle = usb_product_teledongle();
+       public final static int product_teleterra = usb_product_teleterra();
+       public final static int product_telebt = usb_product_telebt();
+       public final static int product_altusmetrum_min = usb_product_altusmetrum_min();
+       public final static int product_altusmetrum_max = usb_product_altusmetrum_max();
+
+       public final static int product_any = 0x10000;
+       public final static int product_basestation = 0x10000 + 1;
+
+       static String bt_product_telebt() {
+               if (load_library())
+                       return libaltosConstants.BLUETOOTH_PRODUCT_TELEBT;
+               return "TeleBT";
+       }
+
+       public final static String bt_product_telebt = bt_product_telebt();
+
+       public static AltosBTKnown bt_known = new AltosBTKnown();
 }