Merge remote-tracking branch 'mjb/altoslib_mjb'
[fw/altos] / altoslib / AltosLib.java
index 27d720792739e1af68eb6c265d92c2b414877214..192c445e0c42dabe2b9e3c42a209fe8843e9269c 100644 (file)
@@ -17,9 +17,8 @@
 
 package org.altusmetrum.AltosLib;
 
-import java.awt.*;
 import java.util.*;
-import java.text.*;
+import java.io.*;
 import java.nio.charset.Charset;
 
 public class AltosLib {
@@ -78,6 +77,30 @@ public class AltosLib {
        public static final int ao_flight_landed = 8;
        public static final int ao_flight_invalid = 9;
 
+       /* USB product IDs */
+       public final static int vendor_altusmetrum = 0xfffe;
+
+       public final static int product_altusmetrum = 0x000a;
+       public final static int product_telemetrum = 0x000b;
+       public final static int product_teledongle = 0x000c;
+       public final static int product_teleterra = 0x000d;
+       public final static int product_telebt = 0x000e;
+       public final static int product_telelaunch = 0x000f;
+       public final static int product_telelco = 0x0010;
+       public final static int product_telescience = 0x0011;
+       public final static int product_telepyro =0x0012;
+       public final static int product_megametrum = 0x0023;
+       public final static int product_megadongle = 0x0024;
+       public final static int product_altusmetrum_min = 0x000a;
+       public final static int product_altusmetrum_max = 0x0024;
+
+       public final static int product_any = 0x10000;
+       public final static int product_basestation = 0x10000 + 1;
+       public final static int product_altimeter = 0x10000 + 2;
+
+       /* Bluetooth "identifier" (bluetooth sucks) */
+       public final static String bt_product_telebt = "TeleBT";
+
        /* Telemetry modes */
        public static final int ao_telemetry_off = 0;
        public static final int ao_telemetry_min = 1;
@@ -86,7 +109,7 @@ public class AltosLib {
        public static final int ao_telemetry_0_8 = 3;
        public static final int ao_telemetry_max = 3;
 
-       public static final String[] ao_telemetry_name = {
+       private static final String[] ao_telemetry_name = {
                "Off", "Standard Telemetry", "TeleMetrum v0.9", "TeleMetrum v0.8"
        };
 
@@ -96,13 +119,13 @@ public class AltosLib {
        public static final int ao_telemetry_0_9_len = 95;
        public static final int ao_telemetry_0_8_len = 94;
 
-       public static final int[] ao_telemetry_len = {
+       private static final int[] ao_telemetry_len = {
                0, 32, 95, 94
        };
 
-       public static HashMap<String,Integer>   string_to_state = new HashMap<String,Integer>();
+       private static HashMap<String,Integer>  string_to_state = new HashMap<String,Integer>();
 
-       public static boolean map_initialized = false;
+       private static boolean map_initialized = false;
 
        public static void initialize_map()
        {
@@ -134,7 +157,7 @@ public class AltosLib {
                                                                 telemetry));
        }
        
-       public static String[] state_to_string = {
+       private static String[] state_to_string = {
                "startup",
                "idle",
                "pad",
@@ -147,7 +170,7 @@ public class AltosLib {
                "invalid",
        };
 
-       public static String[] state_to_string_capital = {
+       private static String[] state_to_string_capital = {
                "Startup",
                "Idle",
                "Pad",
@@ -174,6 +197,12 @@ public class AltosLib {
                return state_to_string[state];
        }
 
+       public static String state_name_capital(int state) {
+               if (state < 0 || state_to_string.length <= state)
+                       return "invalid";
+               return state_to_string_capital[state];
+       }
+
        public static final int AO_GPS_VALID = (1 << 4);
        public static final int AO_GPS_RUNNING = (1 << 5);
        public static final int AO_GPS_DATE_VALID = (1 << 6);
@@ -185,6 +214,7 @@ public class AltosLib {
        public static final int AO_LOG_FORMAT_TINY = 2;
        public static final int AO_LOG_FORMAT_TELEMETRY = 3;
        public static final int AO_LOG_FORMAT_TELESCIENCE = 4;
+       public static final int AO_LOG_FORMAT_MEGAMETRUM = 5;
        public static final int AO_LOG_FORMAT_NONE = 127;
 
        public static boolean isspace(int c) {
@@ -279,6 +309,10 @@ public class AltosLib {
                        (bytes[i+3] << 24);
        }
 
+       public static int int32(int[] bytes, int i) {
+               return (int) uint32(bytes, i);
+       }
+
        public static final Charset     unicode_set = Charset.forName("UTF-8");
 
        public static String string(int[] bytes, int s, int l) {
@@ -350,6 +384,21 @@ public class AltosLib {
                return v * sign;
        }
 
+       public static String gets(FileInputStream s) throws IOException {
+               int c;
+               String  line = "";
+
+               while ((c = s.read()) != -1) {
+                       if (c == '\r')
+                               continue;
+                       if (c == '\n') {
+                               return line;
+                       }
+                       line = line + (char) c;
+               }
+               return null;
+       }
+
        public static String replace_extension(String input, String extension) {
                int dot = input.lastIndexOf(".");
                if (dot > 0)