X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=altoslib%2FAltosLib.java;h=46031912858b4950de3876b0956ab4fe43b3d2a6;hp=e74eaf99fcde1578fa9e2bd120a40c3a69aaaa5d;hb=2449d123690746d0d0d5d66dfc4d3a05b9f5dc0c;hpb=b8c363d9411fd5e79e3f806894dbc12bcc106b88 diff --git a/altoslib/AltosLib.java b/altoslib/AltosLib.java index e74eaf99..46031912 100644 --- a/altoslib/AltosLib.java +++ b/altoslib/AltosLib.java @@ -15,11 +15,10 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.AltosLib; +package org.altusmetrum.altoslib_2; -import java.awt.*; import java.util.*; -import java.text.*; +import java.io.*; import java.nio.charset.Charset; public class AltosLib { @@ -29,6 +28,7 @@ public class AltosLib { public static final int AO_LOG_TEMP_VOLT = 'T'; public static final int AO_LOG_DEPLOY = 'D'; public static final int AO_LOG_STATE = 'S'; + public static final int AO_LOG_GPS_POS = 'P'; public static final int AO_LOG_GPS_TIME = 'G'; public static final int AO_LOG_GPS_LAT = 'N'; public static final int AO_LOG_GPS_LON = 'W'; @@ -51,7 +51,7 @@ public class AltosLib { public static final int AO_LOG_SERIAL_NUMBER = 2002; public static final int AO_LOG_LOG_FORMAT = 2003; - /* Added for header fields in megametrum files */ + /* Added for header fields in telemega files */ public static final int AO_LOG_BARO_RESERVED = 3000; public static final int AO_LOG_BARO_SENS = 3001; public static final int AO_LOG_BARO_OFF = 3002; @@ -63,6 +63,8 @@ public class AltosLib { public static final int AO_LOG_SOFTWARE_VERSION = 9999; + public final static int MISSING = 0x7fffffff; + /* Added to flag invalid records */ public static final int AO_LOG_INVALID = -1; @@ -78,6 +80,33 @@ 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_telemega = 0x0023; + public final static int product_megadongle = 0x0024; + public final static int product_telegps = 0x0025; + public final static int product_easymini = 0x0026; + public final static int product_telemini = 0x0027; + public final static int product_altusmetrum_min = 0x000a; + public final static int product_altusmetrum_max = 0x002c; + + 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 +115,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 +125,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_to_state = new HashMap(); + private static HashMap string_to_state = new HashMap(); - public static boolean map_initialized = false; + private static boolean map_initialized = false; public static void initialize_map() { @@ -134,7 +163,7 @@ public class AltosLib { telemetry)); } - public static String[] state_to_string = { + private static String[] state_to_string = { "startup", "idle", "pad", @@ -147,7 +176,7 @@ public class AltosLib { "invalid", }; - public static String[] state_to_string_capital = { + private static String[] state_to_string_capital = { "Startup", "Idle", "Pad", @@ -174,6 +203,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,7 +220,10 @@ 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_TELEMEGA = 5; + public static final int AO_LOG_FORMAT_EASYMINI = 6; + public static final int AO_LOG_FORMAT_TELEMETRUM = 7; + public static final int AO_LOG_FORMAT_TELEMINI = 8; public static final int AO_LOG_FORMAT_NONE = 127; public static boolean isspace(int c) { @@ -280,6 +318,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) { @@ -351,10 +393,49 @@ 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) input = input.substring(0,dot); return input.concat(extension); } + + public static File replace_extension(File input, String extension) { + return new File(replace_extension(input.getPath(), extension)); + } + + public static String product_name(int product_id) { + switch (product_id) { + case product_altusmetrum: return "AltusMetrum"; + case product_telemetrum: return "TeleMetrum"; + case product_teledongle: return "TeleDongle"; + case product_teleterra: return "TeleTerra"; + case product_telebt: return "TeleBT"; + case product_telelaunch: return "TeleLaunch"; + case product_telelco: return "TeleLco"; + case product_telescience: return "Telescience"; + case product_telepyro: return "TelePyro"; + case product_telemega: return "TeleMega"; + case product_megadongle: return "MegaDongle"; + case product_telegps: return "TeleGPS"; + case product_easymini: return "EasyMini"; + case product_telemini: return "TeleMini"; + default: return "unknown"; + } + } }