From 60f4d69592c440ab7bb67a04f4c07fc7279d2c20 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Tue, 10 May 2016 22:46:58 -0700 Subject: altoslib: Switch distance from m/ft to km/miles for large values This adds lots of infrastructure to deal with making the unit used depend on the value itself, and then uses it only for distances. Signed-off-by: Keith Packard --- altoslib/AltosDistance.java | 56 ++++++++++++- altoslib/AltosPyro.java | 2 +- altoslib/AltosUnits.java | 178 ++++++++++++++++++++++++++++++++---------- altoslib/AltosUnitsRange.java | 46 +++++++++++ altoslib/Makefile.am | 1 + 5 files changed, 239 insertions(+), 44 deletions(-) create mode 100644 altoslib/AltosUnitsRange.java (limited to 'altoslib') diff --git a/altoslib/AltosDistance.java b/altoslib/AltosDistance.java index b68a4525..1ec39f8d 100644 --- a/altoslib/AltosDistance.java +++ b/altoslib/AltosDistance.java @@ -54,4 +54,58 @@ public class AltosDistance extends AltosUnits { return 1; return 0; } -} \ No newline at end of file + + public AltosDistance() { + range_metric = new AltosUnitsRange[2]; + + range_metric[0] = new AltosUnitsRange(0, "m", "meters") { + double value(double v) { + return v; + } + int show_fraction(int width) { + return width / 9; + } + int say_fraction() { + return 0; + } + }; + range_metric[1] = new AltosUnitsRange(2000, "km", "kilometers") { + double value(double v) { + return v / 1000; + } + int show_fraction(int width) { + return width / 5; + } + int say_fraction() { + return 1; + } + }; + + range_imperial = new AltosUnitsRange[2]; + + range_imperial[0] = new AltosUnitsRange(0, "ft", "feet") { + double value(double v) { + return AltosConvert.meters_to_feet(v); + } + int show_fraction(int width) { + return width / 9; + } + int say_fraction() { + return 0; + } + }; + + range_imperial[1] = new AltosUnitsRange(AltosConvert.feet_to_meters(5280), + "mi", "miles") { + double value(double v) { + return AltosConvert.meters_to_miles(v); + } + int show_fraction(int width) { + return width / 5; + } + int say_fraction() { + return 1; + } + }; + } +} diff --git a/altoslib/AltosPyro.java b/altoslib/AltosPyro.java index 28e65bc2..3afd03e0 100644 --- a/altoslib/AltosPyro.java +++ b/altoslib/AltosPyro.java @@ -138,7 +138,7 @@ public class AltosPyro { units = pyro_to_units.get(flag); if (units == null) return name; - return String.format ("%s (%s)", name, units.show_units()); + return String.format ("%s (%s)", name, units.parse_units()); } public static AltosUnits pyro_to_units(int flag) { diff --git a/altoslib/AltosUnits.java b/altoslib/AltosUnits.java index 13b9dbe6..bc53d4a0 100644 --- a/altoslib/AltosUnits.java +++ b/altoslib/AltosUnits.java @@ -21,6 +21,21 @@ import java.text.*; public abstract class AltosUnits { + AltosUnitsRange[] range_metric, range_imperial; + + private AltosUnitsRange range(double v, boolean imperial_units) { + AltosUnitsRange[] ranges = imperial_units ? range_imperial : range_metric; + + for (int i = ranges.length - 1; i > 0; i--) + if (v >= ranges[i].lower_limit) + return ranges[i]; + return ranges[0]; + } + + private AltosUnitsRange first_range(boolean imperial_units) { + return imperial_units ? range_imperial[0] : range_metric[0]; + } + public abstract double value(double v, boolean imperial_units); public abstract double inverse(double v, boolean imperial_units); @@ -31,89 +46,168 @@ public abstract class AltosUnits { public abstract int show_fraction(int width, boolean imperial_units); - public double parse_locale(String s, boolean imperial_units) throws ParseException { - double v = AltosParse.parse_double_locale(s); - return inverse(v, imperial_units); + private double value(double v) { + return value(v, AltosConvert.imperial_units); } - public double parse_net(String s, boolean imperial_units) throws ParseException { - double v = AltosParse.parse_double_net(s); - return inverse(v, imperial_units); + private double inverse(double v) { + return inverse(v, AltosConvert.imperial_units); } - public double parse_locale(String s) throws ParseException { - return parse_locale(s, AltosConvert.imperial_units); + private String show_units() { + return show_units(AltosConvert.imperial_units); } - public double parse_net(String s) throws ParseException { - return parse_net(s, AltosConvert.imperial_units); + private String say_units() { + return say_units(AltosConvert.imperial_units); } - public double value(double v) { - return value(v, AltosConvert.imperial_units); + private int show_fraction(int width) { + return show_fraction(width, AltosConvert.imperial_units); } - public double inverse(double v) { - return inverse(v, AltosConvert.imperial_units); + private int say_fraction(boolean imperial_units) { + return 0; } - public String show_units() { - return show_units(AltosConvert.imperial_units); + private String show_format(AltosUnitsRange range, int width) { + return String.format("%%%d.%df %s", width, range.show_fraction(width), range.show_units); } - public String say_units() { - return say_units(AltosConvert.imperial_units); + private String say_format(AltosUnitsRange range) { + return String.format("%%1.%df", range.say_fraction()); } - public int show_fraction(int width) { - return show_fraction(width, AltosConvert.imperial_units); + private String say_units_format(AltosUnitsRange range) { + return String.format("%%1.%df %s", range.say_fraction(), range.say_units); } - int say_fraction(boolean imperial_units) { - return 0; + public String show(int width, double v, boolean imperial_units) { + AltosUnitsRange range = range(v, imperial_units); + + return String.format(show_format(range, width), range.value(v)); + } + + public String say(double v, boolean imperial_units) { + AltosUnitsRange range = range(v, imperial_units); + + return String.format(say_format(range), range.value(v)); + } + + public String say_units(double v, boolean imperial_units) { + AltosUnitsRange range = range(v, imperial_units); + + return String.format(say_units_format(range), range.value(v)); + } + + public String show(int width, double v) { + return show(width, v, AltosConvert.imperial_units); + } + + public String say(double v) { + return say(v, AltosConvert.imperial_units); + } + + public String say_units(double v) { + return say_units(v, AltosConvert.imperial_units); + } + + /* Parsing functions. Use the first range of the type */ + public String parse_units(boolean imperial_units) { + return first_range(imperial_units).show_units; + } + + public String parse_units() { + return parse_units(AltosConvert.imperial_units); + } + + public double parse_value(double v, boolean imperial_units) { + return first_range(imperial_units).value(v); + } + + public double parse_value(double v) { + return parse_value(v, AltosConvert.imperial_units); } - private String show_format(int width, boolean imperial_units) { - return String.format("%%%d.%df %s", width, show_fraction(width, imperial_units), show_units(imperial_units)); + /* Graphing functions. Use the first range of the type */ + public String graph_units(boolean imperial_units) { + return first_range(imperial_units).show_units; } - private String say_format(boolean imperial_units) { - return String.format("%%1.%df", say_fraction(imperial_units)); + public String graph_units() { + return graph_units(AltosConvert.imperial_units); } - private String say_units_format(boolean imperial_units) { - return String.format("%%1.%df %s", say_fraction(imperial_units), say_units(imperial_units)); + public double graph_value(double v, boolean imperial_units) { + return first_range(imperial_units).value(v); + } + + public double graph_value(double v) { + return graph_value(v, AltosConvert.imperial_units); + } + + private String graph_format(AltosUnitsRange range, int width) { + return String.format(String.format("%%%d.%df", width, range.show_fraction(width)), 0.0); } public String graph_format(int width, boolean imperial_units) { - return String.format(String.format("%%%d.%df", width, show_fraction(width, imperial_units)), 0.0); + return graph_format(first_range(imperial_units), width); } public String graph_format(int width) { return graph_format(width, AltosConvert.imperial_units); } - public String show(int width, double v, boolean imperial_units) { - return String.format(show_format(width, imperial_units), value(v, imperial_units)); + /* Parsing functions. */ + public double parse_locale(String s, boolean imperial_units) throws ParseException { + double v = AltosParse.parse_double_locale(s); + return inverse(v, imperial_units); } - public String show(int width, double v) { - return show(width, v, AltosConvert.imperial_units); + public double parse_net(String s, boolean imperial_units) throws ParseException { + double v = AltosParse.parse_double_net(s); + return inverse(v, imperial_units); } - public String say(double v, boolean imperial_units) { - return String.format(say_format(imperial_units), value(v, imperial_units)); + public double parse_locale(String s) throws ParseException { + return parse_locale(s, AltosConvert.imperial_units); } - public String say(double v) { - return say(v, AltosConvert.imperial_units); + public double parse_net(String s) throws ParseException { + return parse_net(s, AltosConvert.imperial_units); } - public String say_units(double v, boolean imperial_units) { - return String.format(say_units_format(imperial_units), value(v, imperial_units)); - } + public AltosUnits() { + range_metric = new AltosUnitsRange[1]; - public String say_units(double v) { - return say_units(v, AltosConvert.imperial_units); + range_metric[0] = new AltosUnitsRange(this, false) { + double value(double v) { + return units.value(v, false); + } + + int show_fraction(int width) { + return units.show_fraction(width, false); + } + + int say_fraction() { + return units.say_fraction(false); + } + }; + + range_imperial = new AltosUnitsRange[1]; + + range_imperial[0] = new AltosUnitsRange(this, true) { + double value(double v) { + return units.value(v, true); + } + + int show_fraction(int width) { + return units.show_fraction(width, true); + } + + int say_fraction() { + return units.say_fraction(true); + } + }; } } diff --git a/altoslib/AltosUnitsRange.java b/altoslib/AltosUnitsRange.java new file mode 100644 index 00000000..9239481a --- /dev/null +++ b/altoslib/AltosUnitsRange.java @@ -0,0 +1,46 @@ +/* + * Copyright © 2016 Keith Packard + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +package org.altusmetrum.altoslib_10; + +import java.text.*; + +public abstract class AltosUnitsRange { + + AltosUnits units; + + double lower_limit; + String show_units; + String say_units; + + abstract double value(double v); + abstract int show_fraction(int width); + abstract int say_fraction(); + + AltosUnitsRange(AltosUnits units, boolean imperial_units) { + this.units = units; + this.show_units = units.show_units(imperial_units); + this.say_units = units.say_units(imperial_units); + } + + AltosUnitsRange(double lower_limit, String show_units, String say_units) { + this.units = null; + this.lower_limit = lower_limit; + this.show_units = show_units; + this.say_units = say_units; + } +} diff --git a/altoslib/Makefile.am b/altoslib/Makefile.am index dc9da8fd..f3219839 100644 --- a/altoslib/Makefile.am +++ b/altoslib/Makefile.am @@ -118,6 +118,7 @@ altoslib_JAVA = \ AltosIMU.java \ AltosMag.java \ AltosUnits.java \ + AltosUnitsRange.java \ AltosDistance.java \ AltosHeight.java \ AltosSpeed.java \ -- cgit v1.2.3 From 42021d9fdc6f7a74cc9b20ebf3cf60b4c5f4ea82 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Tue, 10 May 2016 22:49:04 -0700 Subject: altoslib: Remove some debug printf calls Signed-off-by: Keith Packard --- altoslib/AltosMapCache.java | 3 --- altoslib/AltosMapTile.java | 1 - altoslib/AltosStateIterable.java | 1 - 3 files changed, 5 deletions(-) (limited to 'altoslib') diff --git a/altoslib/AltosMapCache.java b/altoslib/AltosMapCache.java index 38e0f769..8100704f 100644 --- a/altoslib/AltosMapCache.java +++ b/altoslib/AltosMapCache.java @@ -60,7 +60,6 @@ public class AltosMapCache implements AltosMapCacheListener { public synchronized void notify_tile(AltosMapTile tile, int status) { if (status == AltosMapTile.fetched) { - System.out.printf("tile fetched, loading image\n"); load(); } } @@ -139,8 +138,6 @@ public class AltosMapCache implements AltosMapCacheListener { elements[oldest].flush(); elements[oldest] = element; - System.out.printf("AltosMapCache.get image ? %s\n", - element.image == null ? "false" : "true"); return element.image; } } diff --git a/altoslib/AltosMapTile.java b/altoslib/AltosMapTile.java index fdc8ff65..1d86309c 100644 --- a/altoslib/AltosMapTile.java +++ b/altoslib/AltosMapTile.java @@ -87,7 +87,6 @@ public abstract class AltosMapTile implements AltosFontListener, AltosMapStoreLi } public void notify_store(AltosMapStore store, int status) { -// System.out.printf("AltosMapTile.notify_store %d\n", status); notify_listeners(status); } diff --git a/altoslib/AltosStateIterable.java b/altoslib/AltosStateIterable.java index a7baa85e..2d2d342f 100644 --- a/altoslib/AltosStateIterable.java +++ b/altoslib/AltosStateIterable.java @@ -32,7 +32,6 @@ public abstract class AltosStateIterable implements Iterable { try { in = new FileInputStream(file); } catch (Exception e) { - System.out.printf("Failed to open file '%s'\n", file); return null; } if (file.getName().endsWith("telem")) -- cgit v1.2.3 From c5f49d0ac254047f13c6c1ecfb5520eff72109ac Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Tue, 10 May 2016 23:02:09 -0700 Subject: altoslib: Allow map preloading to be aborted Close the map preload dialog and it would be nice to stop loading map bits. Signed-off-by: Keith Packard --- .../altusmetrum/AltosDroid/PreloadMapActivity.java | 13 +++++- altoslib/AltosMapLoader.java | 46 ++++++++++++++++------ altoslib/AltosMapTile.java | 5 ++- altosuilib/AltosUIMapPreloadNew.java | 18 +++++---- 4 files changed, 60 insertions(+), 22 deletions(-) (limited to 'altoslib') diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/PreloadMapActivity.java b/altosdroid/src/org/altusmetrum/AltosDroid/PreloadMapActivity.java index 0bf3aa10..ab5e433d 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/PreloadMapActivity.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/PreloadMapActivity.java @@ -69,6 +69,10 @@ public class PreloadMapActivity extends Activity implements AltosLaunchSiteListe private ProgressBar progress; + private AltosMapLoader loader; + + long loader_notify_time; + /* AltosMapLoaderListener interfaces */ public void loader_start(final int max) { this.runOnUiThread(new Runnable() { @@ -88,6 +92,7 @@ public class PreloadMapActivity extends Activity implements AltosLaunchSiteListe } public void loader_done(int max) { + loader = null; this.runOnUiThread(new Runnable() { public void run() { progress.setProgress(0); @@ -254,6 +259,9 @@ public class PreloadMapActivity extends Activity implements AltosLaunchSiteListe } private void load() { + if (loader != null) + return; + try { double lat = latitude(); double lon = longitude(); @@ -264,7 +272,7 @@ public class PreloadMapActivity extends Activity implements AltosLaunchSiteListe AltosDebug.debug("PreloadMap load %f %f %d %d %f %d\n", lat, lon, min, max, r, t); - new AltosMapLoader(map, this, lat, lon, min, max, r, t); + loader = new AltosMapLoader(map, this, lat, lon, min, max, r, t); } catch (ParseException e) { AltosDebug.debug("PreloadMap load raised exception %s", e.toString()); } @@ -409,6 +417,9 @@ public class PreloadMapActivity extends Activity implements AltosLaunchSiteListe protected void onDestroy() { super.onDestroy(); + if (loader != null) + loader.abort(); + // Stop listening for location updates ((LocationManager) getSystemService(Context.LOCATION_SERVICE)).removeUpdates(this); } diff --git a/altoslib/AltosMapLoader.java b/altoslib/AltosMapLoader.java index 7112a1c4..8b856e13 100644 --- a/altoslib/AltosMapLoader.java +++ b/altoslib/AltosMapLoader.java @@ -19,6 +19,7 @@ package org.altusmetrum.altoslib_10; import java.io.*; import java.util.*; +import java.util.concurrent.*; import java.text.*; import java.lang.Math; import java.net.URL; @@ -42,6 +43,12 @@ public class AltosMapLoader extends Thread implements AltosMapTileListener { int layers_total; int layers_loaded; + private static final int MAX_LOADING = 200; + + private Semaphore loading = new Semaphore(MAX_LOADING); + + boolean abort; + AltosMap map; int tile_radius(int zoom) { @@ -62,7 +69,7 @@ public class AltosMapLoader extends Thread implements AltosMapTileListener { return (tile_radius * 2 + 1) * (tile_radius * 2 + 1); } - public void do_load() { + private boolean do_load() { tiles_this_layer = tiles_per_layer(cur_z); tiles_loaded_layer = 0; listener.debug("tiles_this_layer %d (zoom %d)\n", tiles_this_layer, cur_z); @@ -88,16 +95,24 @@ public class AltosMapLoader extends Thread implements AltosMapTileListener { for (int y = (int) upper_left.y; y <= lower_right.y; y += AltosMap.px_size) { for (int x = (int) upper_left.x; x <= lower_right.x; x += AltosMap.px_size) { + try { + loading.acquire(); + } catch (InterruptedException ie) { + return false; + } AltosPointInt point = new AltosPointInt(x, y); AltosLatLon ul = transform.lat_lon(point); AltosLatLon center = transform.lat_lon(new AltosPointDouble(x + AltosMap.px_size/2, y + AltosMap.px_size/2)); - AltosMapTile tile = map.map_interface.new_tile(null, ul, center, zoom, maptype, AltosMap.px_size); + AltosMapTile tile = new AltosMapTile(null, ul, center, zoom, maptype, AltosMap.px_size); tile.add_listener(this); + if (abort) + return false; } } + return true; } - public int next_type(int start) { + private int next_type(int start) { int next_type; for (next_type = start; next_type <= AltosMap.maptype_terrain && (all_types & (1 << next_type)) == 0; @@ -106,19 +121,19 @@ public class AltosMapLoader extends Thread implements AltosMapTileListener { return next_type; } - public void next_load() { + private boolean next_load() { int next_type = next_type(cur_type + 1); if (next_type > AltosMap.maptype_terrain) { if (cur_z == max_z) { - return; + return false; } else { cur_z++; } next_type = next_type(0); } cur_type = next_type; - do_load(); + return true; } public void run() { @@ -147,7 +162,12 @@ public class AltosMapLoader extends Thread implements AltosMapTileListener { listener.debug("total tiles %d layers %d\n", tiles_total, layers_total); listener.loader_start(tiles_total); - do_load(); + do { + if (!do_load()) + break; + } while (next_load()); + if (abort) + listener.loader_done(tiles_total); } public synchronized void notify_tile(AltosMapTile tile, int status) { @@ -155,6 +175,8 @@ public class AltosMapLoader extends Thread implements AltosMapTileListener { if (status == AltosMapTile.fetching) return; + loading.release(); + tile.remove_listener(this); if (layers_loaded >= layers_total) @@ -174,12 +196,13 @@ public class AltosMapLoader extends Thread implements AltosMapTileListener { if (tiles_loaded_total == tiles_total) listener.loader_done(tiles_total); - else { + else listener.loader_notify(tiles_loaded_total, tiles_total, tile.store.file.toString()); - if (do_next) - next_load(); - } + } + + public void abort() { + this.abort = true; } public AltosMapLoader(AltosMap map, AltosMapLoaderListener listener, @@ -194,6 +217,7 @@ public class AltosMapLoader extends Thread implements AltosMapTileListener { this.max_z = max_z; this.radius = radius; this.all_types = all_types; + this.abort = false; start(); } } diff --git a/altoslib/AltosMapTile.java b/altoslib/AltosMapTile.java index 1d86309c..d921fd10 100644 --- a/altoslib/AltosMapTile.java +++ b/altoslib/AltosMapTile.java @@ -20,7 +20,7 @@ package org.altusmetrum.altoslib_10; import java.io.*; import java.util.*; -public abstract class AltosMapTile implements AltosFontListener, AltosMapStoreListener { +public class AltosMapTile implements AltosFontListener, AltosMapStoreListener { LinkedList listeners = new LinkedList(); public AltosLatLon upper_left, center; public int px_size; @@ -98,7 +98,8 @@ public abstract class AltosMapTile implements AltosFontListener, AltosMapStoreLi notify_listeners(status); } - public abstract void paint(AltosMapTransform t); + public void paint(AltosMapTransform t) { + } public AltosImage get_image() { if (cache == null) diff --git a/altosuilib/AltosUIMapPreloadNew.java b/altosuilib/AltosUIMapPreloadNew.java index d6c257e0..3e4a604f 100644 --- a/altosuilib/AltosUIMapPreloadNew.java +++ b/altosuilib/AltosUIMapPreloadNew.java @@ -131,7 +131,6 @@ public class AltosUIMapPreloadNew extends AltosUIFrame implements ActionListener JComboBox site_list; JToggleButton load_button; - boolean loading; JButton close_button; JCheckBox[] maptypes = new JCheckBox[AltosMap.maptype_terrain - AltosMap.maptype_hybrid + 1]; @@ -147,6 +146,7 @@ public class AltosUIMapPreloadNew extends AltosUIFrame implements ActionListener Double[] radius_km = { 2.0, 5.0, 10.0, 20.0, 30.0 }; Double radius_def_km = 10.0; + AltosMapLoader loader; static final String[] lat_hemi_names = { "N", "S" }; static final String[] lon_hemi_names = { "E", "W" }; @@ -187,12 +187,12 @@ public class AltosUIMapPreloadNew extends AltosUIFrame implements ActionListener } public void loader_done(int max) { + loader = null; SwingUtilities.invokeLater(new Runnable() { public void run() { pbar.setValue(0); pbar.setString(""); load_button.setSelected(false); - loading = false; } }); } @@ -227,11 +227,14 @@ public class AltosUIMapPreloadNew extends AltosUIFrame implements ActionListener public void actionPerformed(ActionEvent e) { String cmd = e.getActionCommand(); - if (cmd.equals("close")) + if (cmd.equals("close")) { + if (loader != null) + loader.abort(); setVisible(false); + } if (cmd.equals("load")) { - if (!loading) { + if (loader == null) { try { latitude = lat.get_value(); longitude = lon.get_value(); @@ -245,11 +248,10 @@ public class AltosUIMapPreloadNew extends AltosUIFrame implements ActionListener r = AltosConvert.miles_to_meters(r); else r = r * 1000; - loading = true; - new AltosMapLoader(map.map, this, - latitude, longitude, - min_z, max_z, r, all_types()); + loader = new AltosMapLoader(map.map, this, + latitude, longitude, + min_z, max_z, r, all_types()); } catch (ParseException pe) { load_button.setSelected(false); -- cgit v1.2.3 From 0a50669b1fde3e3c1cbc08c4836613b58ead219b Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Wed, 11 May 2016 10:47:31 -0700 Subject: altoslib: Clean up map file and url handling move it all to AltosMapStore.java Signed-off-by: Keith Packard --- altoslib/AltosMapStore.java | 46 +++++++++++++++++++++++++++++++++++++++++++-- altoslib/AltosMapTile.java | 41 +--------------------------------------- 2 files changed, 45 insertions(+), 42 deletions(-) (limited to 'altoslib') diff --git a/altoslib/AltosMapStore.java b/altoslib/AltosMapStore.java index aed365ca..ca4c9c75 100644 --- a/altoslib/AltosMapStore.java +++ b/altoslib/AltosMapStore.java @@ -28,6 +28,45 @@ public class AltosMapStore { int status; + private static File map_file(AltosLatLon center, int zoom, int maptype, int px_size, int scale) { + double lat = center.lat; + double lon = center.lon; + char chlat = lat < 0 ? 'S' : 'N'; + char chlon = lon < 0 ? 'W' : 'E'; + + if (lat < 0) lat = -lat; + if (lon < 0) lon = -lon; + String maptype_string = String.format("%s-", AltosMap.maptype_names[maptype]); + String format_string; + if (maptype == AltosMap.maptype_hybrid || maptype == AltosMap.maptype_satellite || maptype == AltosMap.maptype_terrain) + format_string = "jpg"; + else + format_string = "png"; + return new File(AltosPreferences.mapdir(), + String.format("map-%c%.6f,%c%.6f-%s%d%s.%s", + chlat, lat, chlon, lon, maptype_string, zoom, scale == 1 ? "" : String.format("-%d", scale), format_string)); + } + + private static String map_url(AltosLatLon center, int zoom, int maptype, int px_size, int scale) { + String format_string; + int z = zoom; + + if (maptype == AltosMap.maptype_hybrid || maptype == AltosMap.maptype_satellite || maptype == AltosMap.maptype_terrain) + format_string = "jpg"; + else + format_string = "png32"; + + for (int s = 1; s < scale; s <<= 1) + z--; + + if (AltosVersion.has_google_maps_api_key()) + return String.format("http://maps.google.com/maps/api/staticmap?center=%.6f,%.6f&zoom=%d&size=%dx%d&scale=%d&sensor=false&maptype=%s&format=%s&key=%s", + center.lat, center.lon, z, px_size/scale, px_size/scale, scale, AltosMap.maptype_names[maptype], format_string, AltosVersion.google_maps_api_key); + else + return String.format("http://maps.google.com/maps/api/staticmap?center=%.6f,%.6f&zoom=%d&size=%dx%d&scale=%d&sensor=false&maptype=%s&format=%s", + center.lat, center.lon, z, px_size/scale, px_size/scale, AltosMap.maptype_names[maptype], format_string); + } + public int status() { return status; } @@ -229,16 +268,19 @@ public class AltosMapStore { static HashMap stores = new HashMap(); - public static AltosMapStore get(String url, File file) { + public static AltosMapStore get(AltosLatLon center, int zoom, int maptype, int px_size, int scale) { + String url = map_url(center, zoom, maptype, px_size, scale); + AltosMapStore store; synchronized(stores) { if (stores.containsKey(url)) { store = stores.get(url); } else { - store = new AltosMapStore(url, file); + store = new AltosMapStore(url, map_file(center, zoom, maptype, px_size, scale)); stores.put(url, store); } } return store; } + } diff --git a/altoslib/AltosMapTile.java b/altoslib/AltosMapTile.java index d921fd10..19332de1 100644 --- a/altoslib/AltosMapTile.java +++ b/altoslib/AltosMapTile.java @@ -38,45 +38,6 @@ public class AltosMapTile implements AltosFontListener, AltosMapStoreListener { static public final int bad_request = 4;/* downloading failed */ static public final int forbidden = 5; /* downloading failed */ - private File map_file() { - double lat = center.lat; - double lon = center.lon; - char chlat = lat < 0 ? 'S' : 'N'; - char chlon = lon < 0 ? 'W' : 'E'; - - if (lat < 0) lat = -lat; - if (lon < 0) lon = -lon; - String maptype_string = String.format("%s-", AltosMap.maptype_names[maptype]); - String format_string; - if (maptype == AltosMap.maptype_hybrid || maptype == AltosMap.maptype_satellite || maptype == AltosMap.maptype_terrain) - format_string = "jpg"; - else - format_string = "png"; - return new File(AltosPreferences.mapdir(), - String.format("map-%c%.6f,%c%.6f-%s%d%s.%s", - chlat, lat, chlon, lon, maptype_string, zoom, scale == 1 ? "" : String.format("-%d", scale), format_string)); - } - - private String map_url() { - String format_string; - int z = zoom; - - if (maptype == AltosMap.maptype_hybrid || maptype == AltosMap.maptype_satellite || maptype == AltosMap.maptype_terrain) - format_string = "jpg"; - else - format_string = "png32"; - - for (int s = 1; s < scale; s <<= 1) - z--; - - if (AltosVersion.has_google_maps_api_key()) - return String.format("http://maps.google.com/maps/api/staticmap?center=%.6f,%.6f&zoom=%d&size=%dx%d&scale=%d&sensor=false&maptype=%s&format=%s&key=%s", - center.lat, center.lon, z, px_size/scale, px_size/scale, scale, AltosMap.maptype_names[maptype], format_string, AltosVersion.google_maps_api_key); - else - return String.format("http://maps.google.com/maps/api/staticmap?center=%.6f,%.6f&zoom=%d&size=%dx%d&scale=%d&sensor=false&maptype=%s&format=%s", - center.lat, center.lon, z, px_size/scale, px_size/scale, AltosMap.maptype_names[maptype], format_string); - } - public void font_size_changed(int font_size) { } @@ -132,7 +93,7 @@ public class AltosMapTile implements AltosFontListener, AltosMapStoreListener { this.px_size = px_size; this.scale = scale; - store = AltosMapStore.get(map_url(), map_file()); + store = AltosMapStore.get(center, zoom, maptype, px_size, scale); store.add_listener(this); } -- cgit v1.2.3 From 2ec7e14f0104e3a227ff566fa2fc1f6286ddd9d0 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Wed, 11 May 2016 12:48:10 -0700 Subject: altoslib: Get rid of AltosMap from AltosMapLoader Cleans up the loader API and eliminates a AltosMapTile for every chunk of map data. Signed-off-by: Keith Packard --- .../altusmetrum/AltosDroid/AltosMapOffline.java | 12 ++-- .../altusmetrum/AltosDroid/PreloadMapActivity.java | 75 ++-------------------- altoslib/AltosMap.java | 11 +++- altoslib/AltosMapInterface.java | 2 +- altoslib/AltosMapLoader.java | 26 ++++---- altoslib/AltosMapTile.java | 23 +++++-- altosuilib/AltosUIMapNew.java | 8 +-- altosuilib/AltosUIMapPreloadNew.java | 8 ++- 8 files changed, 65 insertions(+), 100 deletions(-) (limited to 'altoslib') diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosMapOffline.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosMapOffline.java index ab142b17..e7edf3c0 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosMapOffline.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosMapOffline.java @@ -85,6 +85,8 @@ public class AltosMapOffline extends View implements ScaleGestureDetector.OnScal AltosMap map; AltosDroid altos_droid; + static int scale = 2; + AltosLatLon here; AltosLatLon there; AltosLatLon pad; @@ -181,14 +183,14 @@ public class AltosMapOffline extends View implements ScaleGestureDetector.OnScal } } - public MapTile(AltosMapCache cache, AltosLatLon upper_left, AltosLatLon center, int zoom, int maptype, int px_size) { - super(cache, upper_left, center, zoom, maptype, px_size, 2); + public MapTile(AltosMapCache cache, AltosLatLon upper_left, AltosLatLon center, int zoom, int maptype, int px_size, int scale) { + super(cache, upper_left, center, zoom, maptype, px_size, scale); } } - public AltosMapTile new_tile(AltosMapCache cache, AltosLatLon upper_left, AltosLatLon center, int zoom, int maptype, int px_size) { - return new MapTile(cache, upper_left, center, zoom, maptype, px_size); + public AltosMapTile new_tile(AltosMapCache cache, AltosLatLon upper_left, AltosLatLon center, int zoom, int maptype, int px_size, int scale) { + return new MapTile(cache, upper_left, center, zoom, maptype, px_size, scale); } public AltosMapPath new_path() { @@ -492,7 +494,7 @@ public class AltosMapOffline extends View implements ScaleGestureDetector.OnScal public void onCreateView(AltosDroid altos_droid) { this.altos_droid = altos_droid; - map = new AltosMap(this); + map = new AltosMap(this, scale); AltosPreferences.register_map_type_listener(this); map.set_maptype(AltosPreferences.map_type()); diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/PreloadMapActivity.java b/altosdroid/src/org/altusmetrum/AltosDroid/PreloadMapActivity.java index 11d71280..9dfc727e 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/PreloadMapActivity.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/PreloadMapActivity.java @@ -49,7 +49,7 @@ import org.altusmetrum.altoslib_10.*; * by the user, the MAC address of the device is sent back to the parent * Activity in the result Intent. */ -public class PreloadMapActivity extends Activity implements AltosLaunchSiteListener, AltosMapInterface, AltosMapLoaderListener, LocationListener { +public class PreloadMapActivity extends Activity implements AltosLaunchSiteListener, AltosMapLoaderListener, LocationListener { private ArrayAdapter known_sites_adapter; @@ -110,7 +110,12 @@ public class PreloadMapActivity extends Activity implements AltosLaunchSiteListe }); } + public void debug(String format, Object ... arguments) { + AltosDebug.debug(format, arguments); + } + /* AltosLaunchSiteListener interface */ + public void notify_launch_sites(final List sites) { this.runOnUiThread(new Runnable() { public void run() { @@ -120,70 +125,6 @@ public class PreloadMapActivity extends Activity implements AltosLaunchSiteListe }); } - AltosMap map; - - class PreloadMapImage implements AltosImage { - public void flush() { - } - - public PreloadMapImage(File file) { - } - } - - public AltosMapPath new_path() { - return null; - } - - public AltosMapLine new_line() { - return null; - } - - public AltosImage load_image(File file) throws Exception { - return new PreloadMapImage(file); - } - - public AltosMapMark new_mark(double lat, double lon, int state) { - return null; - } - - class PreloadMapTile extends AltosMapTile { - public void paint(AltosMapTransform t) { - } - - public PreloadMapTile(AltosMapCache cache, AltosLatLon upper_left, AltosLatLon center, int zoom, int maptype, int px_size) { - super(cache, upper_left, center, zoom, maptype, px_size, 2); - } - - } - - public AltosMapTile new_tile(AltosMapCache cache, AltosLatLon upper_left, AltosLatLon center, int zoom, int maptype, int px_size) { - return new PreloadMapTile(cache, upper_left, center, zoom, maptype, px_size); - } - - public int width() { - return AltosMap.px_size; - } - - public int height() { - return AltosMap.px_size; - } - - public void repaint() { - } - - public void repaint(AltosRectangle damage) { - } - - public void set_zoom_label(String label) { - } - - public void select_object(AltosLatLon latlon) { - } - - public void debug(String format, Object ... arguments) { - AltosDebug.debug(format, arguments); - } - /* LocationProvider interface */ AltosLaunchSite current_location_site; @@ -281,7 +222,7 @@ public class PreloadMapActivity extends Activity implements AltosLaunchSiteListe AltosDebug.debug("PreloadMap load %f %f %d %d %f %d\n", lat, lon, min, max, r, t); - loader = new AltosMapLoader(map, this, lat, lon, min, max, r, t); + loader = new AltosMapLoader(this, lat, lon, min, max, r, t, AltosMapOffline.scale); } catch (ParseException e) { AltosDebug.debug("PreloadMap load raised exception %s", e.toString()); } @@ -412,8 +353,6 @@ public class PreloadMapActivity extends Activity implements AltosLaunchSiteListe known_sites_spinner.setAdapter(known_sites_adapter); known_sites_spinner.setOnItemSelectedListener(new SiteListListener()); - map = new AltosMap(this); - // Listen for GPS and Network position updates LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); diff --git a/altoslib/AltosMap.java b/altoslib/AltosMap.java index 1841277f..08ac5f3c 100644 --- a/altoslib/AltosMap.java +++ b/altoslib/AltosMap.java @@ -51,6 +51,7 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { }; AltosMapInterface map_interface; + int scale; AltosMapCache cache; @@ -328,7 +329,8 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { if (!tiles.containsKey(point)) { AltosLatLon ul = transform.lat_lon(point); AltosLatLon center = transform.lat_lon(new AltosPointDouble(x + AltosMap.px_size/2, y + AltosMap.px_size/2)); - AltosMapTile tile = map_interface.new_tile(cache, ul, center, zoom, maptype, px_size); + AltosMapTile tile = map_interface.new_tile(cache, ul, center, zoom, maptype, px_size, scale); + debug("show state %s url %s\n", AltosMapTile.status_name(tile.store.status()), tile.store.url); tile.add_listener(this); tiles.put(point, tile); } @@ -475,11 +477,16 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { drag_stop(x, y); } - public AltosMap(AltosMapInterface map_interface) { + public AltosMap(AltosMapInterface map_interface, int scale) { this.map_interface = map_interface; + this.scale = scale; cache = new AltosMapCache(map_interface); line = map_interface.new_line(); path = map_interface.new_path(); set_zoom_label(); } + + public AltosMap(AltosMapInterface map_interface) { + this(map_interface, 1); + } } diff --git a/altoslib/AltosMapInterface.java b/altoslib/AltosMapInterface.java index 756a78f2..df09224a 100644 --- a/altoslib/AltosMapInterface.java +++ b/altoslib/AltosMapInterface.java @@ -29,7 +29,7 @@ public interface AltosMapInterface { public abstract AltosMapMark new_mark(double lat, double lon, int state); - public abstract AltosMapTile new_tile(AltosMapCache cache, AltosLatLon upper_left, AltosLatLon center, int zoom, int maptype, int px_size); + public abstract AltosMapTile new_tile(AltosMapCache cache, AltosLatLon upper_left, AltosLatLon center, int zoom, int maptype, int px_size, int scale); public abstract int width(); diff --git a/altoslib/AltosMapLoader.java b/altoslib/AltosMapLoader.java index 8b856e13..015c0ad3 100644 --- a/altoslib/AltosMapLoader.java +++ b/altoslib/AltosMapLoader.java @@ -25,7 +25,7 @@ import java.lang.Math; import java.net.URL; import java.net.URLConnection; -public class AltosMapLoader extends Thread implements AltosMapTileListener { +public class AltosMapLoader extends Thread implements AltosMapStoreListener { AltosMapLoaderListener listener; double latitude, longitude; @@ -35,6 +35,7 @@ public class AltosMapLoader extends Thread implements AltosMapTileListener { int all_types; int cur_type; double radius; + int scale; int tiles_loaded_layer; int tiles_loaded_total; @@ -49,8 +50,6 @@ public class AltosMapLoader extends Thread implements AltosMapTileListener { boolean abort; - AltosMap map; - int tile_radius(int zoom) { double delta_lon = AltosMapTransform.lon_from_distance(latitude, radius); @@ -80,8 +79,6 @@ public class AltosMapLoader extends Thread implements AltosMapTileListener { AltosLatLon load_centre = new AltosLatLon(latitude, longitude); AltosMapTransform transform = new AltosMapTransform(256, 256, zoom, load_centre); - map.centre(load_centre); - AltosPointInt upper_left; AltosPointInt lower_right; @@ -103,8 +100,9 @@ public class AltosMapLoader extends Thread implements AltosMapTileListener { AltosPointInt point = new AltosPointInt(x, y); AltosLatLon ul = transform.lat_lon(point); AltosLatLon center = transform.lat_lon(new AltosPointDouble(x + AltosMap.px_size/2, y + AltosMap.px_size/2)); - AltosMapTile tile = new AltosMapTile(null, ul, center, zoom, maptype, AltosMap.px_size); - tile.add_listener(this); + AltosMapStore store = AltosMapStore.get(center, zoom, maptype, AltosMap.px_size, scale); + listener.debug("load state %s url %s\n", AltosMapTile.status_name(store.status()), store.url); + store.add_listener(this); if (abort) return false; } @@ -170,14 +168,14 @@ public class AltosMapLoader extends Thread implements AltosMapTileListener { listener.loader_done(tiles_total); } - public synchronized void notify_tile(AltosMapTile tile, int status) { + public synchronized void notify_store(AltosMapStore store, int status) { boolean do_next = false; if (status == AltosMapTile.fetching) return; loading.release(); - tile.remove_listener(this); + store.remove_listener(this); if (layers_loaded >= layers_total) return; @@ -185,7 +183,7 @@ public class AltosMapLoader extends Thread implements AltosMapTileListener { ++tiles_loaded_total; ++tiles_loaded_layer; - listener.debug("AltosMapLoader.notify_tile status %d total %d of %d layer %d of %d\n", + listener.debug("AltosMapLoader.notify_store status %d total %d of %d layer %d of %d\n", status, tiles_loaded_total, tiles_total, tiles_loaded_layer, tiles_this_layer); if (tiles_loaded_layer == tiles_this_layer) { @@ -198,18 +196,17 @@ public class AltosMapLoader extends Thread implements AltosMapTileListener { listener.loader_done(tiles_total); else listener.loader_notify(tiles_loaded_total, - tiles_total, tile.store.file.toString()); + tiles_total, store.file.toString()); } public void abort() { this.abort = true; } - public AltosMapLoader(AltosMap map, AltosMapLoaderListener listener, - double latitude, double longitude, int min_z, int max_z, double radius, int all_types) { + public AltosMapLoader(AltosMapLoaderListener listener, + double latitude, double longitude, int min_z, int max_z, double radius, int all_types, int scale) { listener.debug("lat %f lon %f min_z %d max_z %d radius %f all_types %d\n", latitude, longitude, min_z, max_z, radius, all_types); - this.map = map; this.listener = listener; this.latitude = latitude; this.longitude = longitude; @@ -217,6 +214,7 @@ public class AltosMapLoader extends Thread implements AltosMapTileListener { this.max_z = max_z; this.radius = radius; this.all_types = all_types; + this.scale = scale; this.abort = false; start(); } diff --git a/altoslib/AltosMapTile.java b/altoslib/AltosMapTile.java index 19332de1..b0bac963 100644 --- a/altoslib/AltosMapTile.java +++ b/altoslib/AltosMapTile.java @@ -38,6 +38,25 @@ public class AltosMapTile implements AltosFontListener, AltosMapStoreListener { static public final int bad_request = 4;/* downloading failed */ static public final int forbidden = 5; /* downloading failed */ + static public String status_name(int status) { + switch (status) { + case loaded: + return "loaded"; + case fetched: + return "fetched"; + case fetching: + return "fetching"; + case failed: + return "failed"; + case bad_request: + return "bad_request"; + case forbidden: + return "forbidden"; + default: + return "unknown"; + } + } + public void font_size_changed(int font_size) { } @@ -96,8 +115,4 @@ public class AltosMapTile implements AltosFontListener, AltosMapStoreListener { store = AltosMapStore.get(center, zoom, maptype, px_size, scale); store.add_listener(this); } - - public AltosMapTile(AltosMapCache cache, AltosLatLon upper_left, AltosLatLon center, int zoom, int maptype, int px_size) { - this(cache, upper_left, center, zoom, maptype, px_size, 1); - } } diff --git a/altosuilib/AltosUIMapNew.java b/altosuilib/AltosUIMapNew.java index a90e8c91..768fd058 100644 --- a/altosuilib/AltosUIMapNew.java +++ b/altosuilib/AltosUIMapNew.java @@ -241,8 +241,8 @@ public class AltosUIMapNew extends JComponent implements AltosFlightDisplay, Alt } class MapTile extends AltosMapTile { - public MapTile(AltosMapCache cache, AltosLatLon upper_left, AltosLatLon center, int zoom, int maptype, int px_size) { - super(cache, upper_left, center, zoom, maptype, px_size); + public MapTile(AltosMapCache cache, AltosLatLon upper_left, AltosLatLon center, int zoom, int maptype, int px_size, int scale) { + super(cache, upper_left, center, zoom, maptype, px_size, scale); } public void paint(AltosMapTransform t) { @@ -332,8 +332,8 @@ public class AltosUIMapNew extends JComponent implements AltosFlightDisplay, Alt return new MapMark(lat, lon, state); } - public AltosMapTile new_tile(AltosMapCache cache, AltosLatLon upper_left, AltosLatLon center, int zoom, int maptype, int px_size) { - return new MapTile(cache, upper_left, center, zoom, maptype, px_size); + public AltosMapTile new_tile(AltosMapCache cache, AltosLatLon upper_left, AltosLatLon center, int zoom, int maptype, int px_size, int scale) { + return new MapTile(cache, upper_left, center, zoom, maptype, px_size, scale); } public int width() { diff --git a/altosuilib/AltosUIMapPreloadNew.java b/altosuilib/AltosUIMapPreloadNew.java index 3e4a604f..7cdba382 100644 --- a/altosuilib/AltosUIMapPreloadNew.java +++ b/altosuilib/AltosUIMapPreloadNew.java @@ -138,6 +138,7 @@ public class AltosUIMapPreloadNew extends AltosUIFrame implements ActionListener JComboBox min_zoom; JComboBox max_zoom; JComboBox radius; + int scale = 1; Integer[] zooms = { -12, -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6 }; @@ -249,9 +250,12 @@ public class AltosUIMapPreloadNew extends AltosUIFrame implements ActionListener else r = r * 1000; - loader = new AltosMapLoader(map.map, this, + map.map.centre(new AltosLatLon(latitude, longitude)); + + loader = new AltosMapLoader(this, latitude, longitude, - min_z, max_z, r, all_types()); + min_z, max_z, r, + all_types(), scale); } catch (ParseException pe) { load_button.setSelected(false); -- cgit v1.2.3 From 97adfff4cfb67c17a96f3ff46606b4e439422b01 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Thu, 12 May 2016 12:14:03 -0700 Subject: Bump java library versions Prepare for 1.6.4 release Signed-off-by: Keith Packard --- altosdroid/src/org/altusmetrum/AltosDroid/AltosBluetooth.java | 2 +- altosdroid/src/org/altusmetrum/AltosDroid/AltosDebug.java | 2 +- altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java | 2 +- altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidLink.java | 2 +- altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidMapInterface.java | 2 +- altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidPreferences.java | 2 +- .../src/org/altusmetrum/AltosDroid/AltosDroidPreferencesBackend.java | 2 +- altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidTab.java | 2 +- altosdroid/src/org/altusmetrum/AltosDroid/AltosMapOffline.java | 2 +- altosdroid/src/org/altusmetrum/AltosDroid/AltosMapOnline.java | 2 +- altosdroid/src/org/altusmetrum/AltosDroid/AltosUsb.java | 2 +- altosdroid/src/org/altusmetrum/AltosDroid/AltosVoice.java | 2 +- altosdroid/src/org/altusmetrum/AltosDroid/IdleModeActivity.java | 2 +- altosdroid/src/org/altusmetrum/AltosDroid/IgniterActivity.java | 2 +- .../src/org/altusmetrum/AltosDroid/ManageFrequenciesActivity.java | 2 +- altosdroid/src/org/altusmetrum/AltosDroid/MapTypeActivity.java | 2 +- altosdroid/src/org/altusmetrum/AltosDroid/PreloadMapActivity.java | 2 +- altosdroid/src/org/altusmetrum/AltosDroid/SetupActivity.java | 2 +- altosdroid/src/org/altusmetrum/AltosDroid/TabFlight.java | 2 +- altosdroid/src/org/altusmetrum/AltosDroid/TabMap.java | 2 +- altosdroid/src/org/altusmetrum/AltosDroid/TabPad.java | 2 +- altosdroid/src/org/altusmetrum/AltosDroid/TabRecover.java | 2 +- altosdroid/src/org/altusmetrum/AltosDroid/TelemetryLogger.java | 2 +- altosdroid/src/org/altusmetrum/AltosDroid/TelemetryReader.java | 2 +- altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java | 2 +- altosdroid/src/org/altusmetrum/AltosDroid/TelemetryState.java | 2 +- altoslib/AltosAccel.java | 2 +- altoslib/AltosCRCException.java | 2 +- altoslib/AltosCSV.java | 2 +- altoslib/AltosCompanion.java | 2 +- altoslib/AltosConfigData.java | 2 +- altoslib/AltosConfigDataException.java | 2 +- altoslib/AltosConfigValues.java | 2 +- altoslib/AltosConvert.java | 2 +- altoslib/AltosDebug.java | 2 +- altoslib/AltosDistance.java | 2 +- altoslib/AltosEeprom.java | 2 +- altoslib/AltosEepromChunk.java | 2 +- altoslib/AltosEepromDownload.java | 2 +- altoslib/AltosEepromFile.java | 2 +- altoslib/AltosEepromGPS.java | 2 +- altoslib/AltosEepromHeader.java | 2 +- altoslib/AltosEepromIterable.java | 2 +- altoslib/AltosEepromList.java | 2 +- altoslib/AltosEepromLog.java | 2 +- altoslib/AltosEepromMega.java | 2 +- altoslib/AltosEepromMetrum2.java | 2 +- altoslib/AltosEepromMini.java | 2 +- altoslib/AltosEepromMonitor.java | 2 +- altoslib/AltosEepromTM.java | 2 +- altoslib/AltosEepromTMini.java | 2 +- altoslib/AltosFile.java | 2 +- altoslib/AltosFlash.java | 2 +- altoslib/AltosFlashListener.java | 2 +- altoslib/AltosFlightDisplay.java | 2 +- altoslib/AltosFlightReader.java | 2 +- altoslib/AltosFlightStats.java | 2 +- altoslib/AltosFontListener.java | 2 +- altoslib/AltosFrequency.java | 2 +- altoslib/AltosGPS.java | 2 +- altoslib/AltosGPSSat.java | 2 +- altoslib/AltosGreatCircle.java | 2 +- altoslib/AltosHeight.java | 2 +- altoslib/AltosHexfile.java | 2 +- altoslib/AltosHexsym.java | 2 +- altoslib/AltosIMU.java | 2 +- altoslib/AltosIdle.java | 2 +- altoslib/AltosIdleFetch.java | 2 +- altoslib/AltosIdleMonitor.java | 2 +- altoslib/AltosIdleMonitorListener.java | 2 +- altoslib/AltosIgnite.java | 2 +- altoslib/AltosImage.java | 2 +- altoslib/AltosKML.java | 2 +- altoslib/AltosLatLon.java | 2 +- altoslib/AltosLatitude.java | 2 +- altoslib/AltosLaunchSite.java | 2 +- altoslib/AltosLaunchSiteListener.java | 2 +- altoslib/AltosLaunchSites.java | 2 +- altoslib/AltosLib.java | 2 +- altoslib/AltosLine.java | 2 +- altoslib/AltosLink.java | 2 +- altoslib/AltosListenerState.java | 2 +- altoslib/AltosLocation.java | 2 +- altoslib/AltosLog.java | 2 +- altoslib/AltosLongitude.java | 2 +- altoslib/AltosMag.java | 2 +- altoslib/AltosMap.java | 2 +- altoslib/AltosMapCache.java | 2 +- altoslib/AltosMapCacheListener.java | 2 +- altoslib/AltosMapInterface.java | 2 +- altoslib/AltosMapLine.java | 2 +- altoslib/AltosMapLoader.java | 2 +- altoslib/AltosMapLoaderListener.java | 2 +- altoslib/AltosMapMark.java | 2 +- altoslib/AltosMapPath.java | 2 +- altoslib/AltosMapPathPoint.java | 2 +- altoslib/AltosMapRectangle.java | 2 +- altoslib/AltosMapStore.java | 2 +- altoslib/AltosMapStoreListener.java | 2 +- altoslib/AltosMapTile.java | 2 +- altoslib/AltosMapTileListener.java | 2 +- altoslib/AltosMapTransform.java | 2 +- altoslib/AltosMapTypeListener.java | 2 +- altoslib/AltosMapZoomListener.java | 2 +- altoslib/AltosMma655x.java | 2 +- altoslib/AltosMs5607.java | 2 +- altoslib/AltosNoSymbol.java | 2 +- altoslib/AltosOrient.java | 2 +- altoslib/AltosParse.java | 2 +- altoslib/AltosPointDouble.java | 2 +- altoslib/AltosPointInt.java | 2 +- altoslib/AltosPreferences.java | 2 +- altoslib/AltosPreferencesBackend.java | 2 +- altoslib/AltosProgrammer.java | 2 +- altoslib/AltosPyro.java | 2 +- altoslib/AltosQuaternion.java | 2 +- altoslib/AltosRectangle.java | 2 +- altoslib/AltosReplayReader.java | 2 +- altoslib/AltosRomconfig.java | 2 +- altoslib/AltosRotation.java | 2 +- altoslib/AltosSavedState.java | 2 +- altoslib/AltosSelfFlash.java | 2 +- altoslib/AltosSensorEMini.java | 2 +- altoslib/AltosSensorMM.java | 2 +- altoslib/AltosSensorMega.java | 2 +- altoslib/AltosSensorMetrum.java | 2 +- altoslib/AltosSensorTGPS.java | 2 +- altoslib/AltosSensorTM.java | 2 +- altoslib/AltosSensorTMini.java | 2 +- altoslib/AltosSpeed.java | 2 +- altoslib/AltosState.java | 2 +- altoslib/AltosStateIterable.java | 2 +- altoslib/AltosStateUpdate.java | 2 +- altoslib/AltosTelemetry.java | 2 +- altoslib/AltosTelemetryCompanion.java | 2 +- altoslib/AltosTelemetryConfiguration.java | 2 +- altoslib/AltosTelemetryFile.java | 2 +- altoslib/AltosTelemetryIterable.java | 2 +- altoslib/AltosTelemetryLegacy.java | 2 +- altoslib/AltosTelemetryLocation.java | 2 +- altoslib/AltosTelemetryMap.java | 2 +- altoslib/AltosTelemetryMegaData.java | 2 +- altoslib/AltosTelemetryMegaSensor.java | 2 +- altoslib/AltosTelemetryMetrumData.java | 2 +- altoslib/AltosTelemetryMetrumSensor.java | 2 +- altoslib/AltosTelemetryMini.java | 2 +- altoslib/AltosTelemetryRaw.java | 2 +- altoslib/AltosTelemetryReader.java | 2 +- altoslib/AltosTelemetrySatellite.java | 2 +- altoslib/AltosTelemetrySensor.java | 2 +- altoslib/AltosTelemetryStandard.java | 2 +- altoslib/AltosTemperature.java | 2 +- altoslib/AltosUnits.java | 2 +- altoslib/AltosUnitsListener.java | 2 +- altoslib/AltosUnitsRange.java | 2 +- altoslib/AltosUnknownProduct.java | 2 +- altoslib/AltosVersion.java.in | 2 +- altoslib/AltosVoltage.java | 2 +- altoslib/AltosWriter.java | 2 +- altosui/Altos.java | 4 ++-- altosui/AltosAscent.java | 4 ++-- altosui/AltosCompanionInfo.java | 4 ++-- altosui/AltosConfig.java | 4 ++-- altosui/AltosConfigPyroUI.java | 4 ++-- altosui/AltosConfigTD.java | 4 ++-- altosui/AltosConfigTDUI.java | 4 ++-- altosui/AltosConfigUI.java | 4 ++-- altosui/AltosConfigureUI.java | 2 +- altosui/AltosDescent.java | 4 ++-- altosui/AltosFlightStatus.java | 4 ++-- altosui/AltosFlightStatusTableModel.java | 2 +- altosui/AltosFlightStatusUpdate.java | 2 +- altosui/AltosFlightUI.java | 4 ++-- altosui/AltosGraphUI.java | 4 ++-- altosui/AltosIdleMonitorUI.java | 4 ++-- altosui/AltosIgniteUI.java | 4 ++-- altosui/AltosIgnitor.java | 4 ++-- altosui/AltosLanded.java | 4 ++-- altosui/AltosLaunch.java | 2 +- altosui/AltosLaunchUI.java | 2 +- altosui/AltosPad.java | 4 ++-- altosui/AltosUI.java | 4 ++-- altosuilib/AltosBTDevice.java | 4 ++-- altosuilib/AltosBTDeviceIterator.java | 4 ++-- altosuilib/AltosBTKnown.java | 4 ++-- altosuilib/AltosBTManage.java | 4 ++-- altosuilib/AltosCSVUI.java | 4 ++-- altosuilib/AltosConfigFreqUI.java | 4 ++-- altosuilib/AltosDataChooser.java | 4 ++-- altosuilib/AltosDevice.java | 2 +- altosuilib/AltosDeviceDialog.java | 2 +- altosuilib/AltosDeviceUIDialog.java | 2 +- altosuilib/AltosDisplayThread.java | 4 ++-- altosuilib/AltosEepromDelete.java | 4 ++-- altosuilib/AltosEepromManage.java | 4 ++-- altosuilib/AltosEepromMonitor.java | 2 +- altosuilib/AltosEepromMonitorUI.java | 4 ++-- altosuilib/AltosEepromSelect.java | 4 ++-- altosuilib/AltosFlashUI.java | 4 ++-- altosuilib/AltosFlightInfoTableModel.java | 2 +- altosuilib/AltosFlightStatsTable.java | 4 ++-- altosuilib/AltosGraph.java | 4 ++-- altosuilib/AltosGraphDataPoint.java | 4 ++-- altosuilib/AltosGraphDataSet.java | 4 ++-- altosuilib/AltosInfoTable.java | 4 ++-- altosuilib/AltosLed.java | 2 +- altosuilib/AltosLights.java | 2 +- altosuilib/AltosPositionListener.java | 2 +- altosuilib/AltosRomconfigUI.java | 4 ++-- altosuilib/AltosScanUI.java | 4 ++-- altosuilib/AltosSerial.java | 4 ++-- altosuilib/AltosSerialInUseException.java | 2 +- altosuilib/AltosUIAxis.java | 4 ++-- altosuilib/AltosUIConfigure.java | 4 ++-- altosuilib/AltosUIDataMissing.java | 2 +- altosuilib/AltosUIDataPoint.java | 2 +- altosuilib/AltosUIDataSet.java | 2 +- altosuilib/AltosUIDialog.java | 2 +- altosuilib/AltosUIEnable.java | 4 ++-- altosuilib/AltosUIFlightTab.java | 4 ++-- altosuilib/AltosUIFrame.java | 2 +- altosuilib/AltosUIFreqList.java | 4 ++-- altosuilib/AltosUIGraph.java | 4 ++-- altosuilib/AltosUIGrapher.java | 4 ++-- altosuilib/AltosUIImage.java | 2 +- altosuilib/AltosUIIndicator.java | 4 ++-- altosuilib/AltosUILib.java | 4 ++-- altosuilib/AltosUIListener.java | 2 +- altosuilib/AltosUIMapNew.java | 4 ++-- altosuilib/AltosUIMapPreloadNew.java | 4 ++-- altosuilib/AltosUIMarker.java | 4 ++-- altosuilib/AltosUIPreferences.java | 4 ++-- altosuilib/AltosUIPreferencesBackend.java | 4 ++-- altosuilib/AltosUIRateList.java | 4 ++-- altosuilib/AltosUISeries.java | 4 ++-- altosuilib/AltosUITelemetryList.java | 4 ++-- altosuilib/AltosUIUnitsIndicator.java | 4 ++-- altosuilib/AltosUIVoltageIndicator.java | 4 ++-- altosuilib/AltosUSBDevice.java | 2 +- altosuilib/AltosVoice.java | 2 +- altosuilib/GrabNDrag.java | 2 +- altosuilib/OSXAdapter.java | 2 +- configure.ac | 4 ++-- micropeak/MicroData.java | 4 ++-- micropeak/MicroDataPoint.java | 2 +- micropeak/MicroDeviceDialog.java | 2 +- micropeak/MicroDownload.java | 4 ++-- micropeak/MicroExport.java | 4 ++-- micropeak/MicroFile.java | 4 ++-- micropeak/MicroFileChooser.java | 4 ++-- micropeak/MicroFrame.java | 2 +- micropeak/MicroGraph.java | 4 ++-- micropeak/MicroPeak.java | 4 ++-- micropeak/MicroRaw.java | 4 ++-- micropeak/MicroSave.java | 4 ++-- micropeak/MicroSerial.java | 2 +- micropeak/MicroSerialLog.java | 2 +- micropeak/MicroStats.java | 4 ++-- micropeak/MicroStatsTable.java | 4 ++-- micropeak/MicroUSB.java | 4 ++-- telegps/TeleGPS.java | 4 ++-- telegps/TeleGPSConfig.java | 4 ++-- telegps/TeleGPSConfigUI.java | 4 ++-- telegps/TeleGPSDisplayThread.java | 4 ++-- telegps/TeleGPSGraphUI.java | 4 ++-- telegps/TeleGPSInfo.java | 4 ++-- telegps/TeleGPSPreferences.java | 2 +- telegps/TeleGPSState.java | 4 ++-- telegps/TeleGPSStatus.java | 4 ++-- telegps/TeleGPSStatusUpdate.java | 2 +- 270 files changed, 349 insertions(+), 349 deletions(-) (limited to 'altoslib') diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosBluetooth.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosBluetooth.java index 51937b7f..246fb0b0 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosBluetooth.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosBluetooth.java @@ -30,7 +30,7 @@ import android.bluetooth.BluetoothSocket; import android.os.Handler; //import android.os.Message; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; public class AltosBluetooth extends AltosDroidLink { diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDebug.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDebug.java index 64980dc7..eddc83b9 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDebug.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDebug.java @@ -20,7 +20,7 @@ import java.util.Arrays; import java.io.*; import java.lang.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; import android.app.Activity; import android.graphics.*; diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java index 026e836d..385348ea 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java @@ -51,7 +51,7 @@ import android.hardware.usb.*; import android.graphics.*; import android.graphics.drawable.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; public class AltosDroid extends FragmentActivity implements AltosUnitsListener, LocationListener { diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidLink.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidLink.java index 0fd9af75..bca70d69 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidLink.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidLink.java @@ -24,7 +24,7 @@ import java.util.UUID; import android.os.Handler; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; public abstract class AltosDroidLink extends AltosLink { diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidMapInterface.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidMapInterface.java index 43abef0f..b9b4b50f 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidMapInterface.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidMapInterface.java @@ -20,7 +20,7 @@ package org.altusmetrum.AltosDroid; import java.util.*; import java.io.*; import android.location.Location; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; public interface AltosDroidMapInterface { public void onCreateView(AltosDroid altos_droid); diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidPreferences.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidPreferences.java index 16ee4429..446bbf04 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidPreferences.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidPreferences.java @@ -21,7 +21,7 @@ import java.util.*; import java.text.*; import android.content.Context; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; public class AltosDroidPreferences extends AltosPreferences { diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidPreferencesBackend.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidPreferencesBackend.java index 5c7ec513..e48b7b2a 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidPreferencesBackend.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidPreferencesBackend.java @@ -24,7 +24,7 @@ import android.content.SharedPreferences; import android.os.Environment; import android.util.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; public class AltosDroidPreferencesBackend extends AltosPreferencesBackend { public final static String NAME = "org.altusmetrum.AltosDroid"; diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidTab.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidTab.java index 77dbbcb1..3e10d3a4 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidTab.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidTab.java @@ -17,7 +17,7 @@ package org.altusmetrum.AltosDroid; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; import android.location.Location; import android.app.Activity; import android.graphics.Color; diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosMapOffline.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosMapOffline.java index e7edf3c0..0061eba1 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosMapOffline.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosMapOffline.java @@ -20,7 +20,7 @@ package org.altusmetrum.AltosDroid; import java.util.*; import java.io.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; import android.app.Activity; import android.graphics.*; diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosMapOnline.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosMapOnline.java index fcdb930b..9a828df5 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosMapOnline.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosMapOnline.java @@ -19,7 +19,7 @@ package org.altusmetrum.AltosDroid; import java.util.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; import com.google.android.gms.maps.*; import com.google.android.gms.maps.model.*; diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosUsb.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosUsb.java index 4660512a..4b007cb1 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosUsb.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosUsb.java @@ -28,7 +28,7 @@ import android.hardware.usb.*; import android.app.*; import android.os.Handler; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; public class AltosUsb extends AltosDroidLink { diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosVoice.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosVoice.java index 542ba1f5..d7c0f623 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosVoice.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosVoice.java @@ -22,7 +22,7 @@ import android.speech.tts.TextToSpeech; import android.speech.tts.TextToSpeech.OnInitListener; import android.location.Location; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; public class AltosVoice { diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/IdleModeActivity.java b/altosdroid/src/org/altusmetrum/AltosDroid/IdleModeActivity.java index ec12c192..c4e950b6 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/IdleModeActivity.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/IdleModeActivity.java @@ -34,7 +34,7 @@ import android.view.View.OnClickListener; import android.widget.*; import android.widget.AdapterView.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; public class IdleModeActivity extends Activity { private EditText callsign; diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/IgniterActivity.java b/altosdroid/src/org/altusmetrum/AltosDroid/IgniterActivity.java index 931c3cfd..d9229ad6 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/IgniterActivity.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/IgniterActivity.java @@ -32,7 +32,7 @@ import android.view.View.*; import android.widget.*; import android.widget.AdapterView.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; class IgniterItem { public String name; diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/ManageFrequenciesActivity.java b/altosdroid/src/org/altusmetrum/AltosDroid/ManageFrequenciesActivity.java index 401cdc9d..1e92b89f 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/ManageFrequenciesActivity.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/ManageFrequenciesActivity.java @@ -32,7 +32,7 @@ import android.view.inputmethod.*; import android.widget.*; import android.widget.AdapterView.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; class FrequencyItem { public AltosFrequency frequency; diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/MapTypeActivity.java b/altosdroid/src/org/altusmetrum/AltosDroid/MapTypeActivity.java index cfbcdafc..d8bcad75 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/MapTypeActivity.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/MapTypeActivity.java @@ -34,7 +34,7 @@ import android.view.View.OnClickListener; import android.widget.*; import android.widget.AdapterView.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; public class MapTypeActivity extends Activity { private Button hybrid; diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/PreloadMapActivity.java b/altosdroid/src/org/altusmetrum/AltosDroid/PreloadMapActivity.java index 9dfc727e..8e3e7b01 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/PreloadMapActivity.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/PreloadMapActivity.java @@ -41,7 +41,7 @@ import android.location.LocationManager; import android.location.LocationListener; import android.location.Criteria; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; /** * This Activity appears as a dialog. It lists any paired devices and diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/SetupActivity.java b/altosdroid/src/org/altusmetrum/AltosDroid/SetupActivity.java index fdffc2b0..06e74d9b 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/SetupActivity.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/SetupActivity.java @@ -30,7 +30,7 @@ import android.view.View.*; import android.widget.*; import android.widget.AdapterView.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; public class SetupActivity extends Activity { private Spinner select_rate; diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TabFlight.java b/altosdroid/src/org/altusmetrum/AltosDroid/TabFlight.java index 9bbdc060..dc8390e3 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TabFlight.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TabFlight.java @@ -17,7 +17,7 @@ package org.altusmetrum.AltosDroid; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; import android.app.Activity; import android.os.Bundle; diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TabMap.java b/altosdroid/src/org/altusmetrum/AltosDroid/TabMap.java index 19ce86c9..9e3cb530 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TabMap.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TabMap.java @@ -20,7 +20,7 @@ package org.altusmetrum.AltosDroid; import java.util.*; import java.io.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; import android.app.Activity; import android.graphics.*; diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TabPad.java b/altosdroid/src/org/altusmetrum/AltosDroid/TabPad.java index 1194eb00..fffc426a 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TabPad.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TabPad.java @@ -17,7 +17,7 @@ package org.altusmetrum.AltosDroid; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; import android.app.Activity; import android.os.Bundle; diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TabRecover.java b/altosdroid/src/org/altusmetrum/AltosDroid/TabRecover.java index 8742227b..b0fe9e5f 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TabRecover.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TabRecover.java @@ -17,7 +17,7 @@ package org.altusmetrum.AltosDroid; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; import android.app.Activity; import android.os.Bundle; diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryLogger.java b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryLogger.java index bdea0986..c379d3d8 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryLogger.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryLogger.java @@ -1,6 +1,6 @@ package org.altusmetrum.AltosDroid; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; import android.content.BroadcastReceiver; import android.content.Context; diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryReader.java b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryReader.java index 0ac6bb5c..21ac0fbf 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryReader.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryReader.java @@ -25,7 +25,7 @@ import java.util.*; import java.util.concurrent.*; import android.os.Handler; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; public class TelemetryReader extends Thread { diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java index a81e24b0..6519a114 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java @@ -40,7 +40,7 @@ import android.os.Looper; import android.widget.Toast; import android.location.Criteria; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; public class TelemetryService extends Service implements AltosIdleMonitorListener { diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryState.java b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryState.java index d3ccf0a9..e7bef92c 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryState.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryState.java @@ -18,7 +18,7 @@ package org.altusmetrum.AltosDroid; import java.util.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; import android.location.Location; public class TelemetryState { diff --git a/altoslib/AltosAccel.java b/altoslib/AltosAccel.java index 2c563f66..00f3aefc 100644 --- a/altoslib/AltosAccel.java +++ b/altoslib/AltosAccel.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; diff --git a/altoslib/AltosCRCException.java b/altoslib/AltosCRCException.java index 03dad137..87d84370 100644 --- a/altoslib/AltosCRCException.java +++ b/altoslib/AltosCRCException.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public class AltosCRCException extends Exception { public int rssi; diff --git a/altoslib/AltosCSV.java b/altoslib/AltosCSV.java index fa515b31..b38ed8da 100644 --- a/altoslib/AltosCSV.java +++ b/altoslib/AltosCSV.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; import java.util.*; diff --git a/altoslib/AltosCompanion.java b/altoslib/AltosCompanion.java index dc33dacc..381b0a25 100644 --- a/altoslib/AltosCompanion.java +++ b/altoslib/AltosCompanion.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; diff --git a/altoslib/AltosConfigData.java b/altoslib/AltosConfigData.java index 812296f3..aa46f118 100644 --- a/altoslib/AltosConfigData.java +++ b/altoslib/AltosConfigData.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.util.*; import java.text.*; diff --git a/altoslib/AltosConfigDataException.java b/altoslib/AltosConfigDataException.java index 75cd1695..a55f75c2 100644 --- a/altoslib/AltosConfigDataException.java +++ b/altoslib/AltosConfigDataException.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public class AltosConfigDataException extends Exception { diff --git a/altoslib/AltosConfigValues.java b/altoslib/AltosConfigValues.java index aab0892a..babd7a4d 100644 --- a/altoslib/AltosConfigValues.java +++ b/altoslib/AltosConfigValues.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public interface AltosConfigValues { /* set and get all of the dialog values */ diff --git a/altoslib/AltosConvert.java b/altoslib/AltosConvert.java index 265b5f0f..5498ae98 100644 --- a/altoslib/AltosConvert.java +++ b/altoslib/AltosConvert.java @@ -18,7 +18,7 @@ /* * Sensor data conversion functions */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public class AltosConvert { /* diff --git a/altoslib/AltosDebug.java b/altoslib/AltosDebug.java index e93c2d2d..0bb12688 100644 --- a/altoslib/AltosDebug.java +++ b/altoslib/AltosDebug.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; diff --git a/altoslib/AltosDistance.java b/altoslib/AltosDistance.java index 1ec39f8d..d6788fb5 100644 --- a/altoslib/AltosDistance.java +++ b/altoslib/AltosDistance.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public class AltosDistance extends AltosUnits { diff --git a/altoslib/AltosEeprom.java b/altoslib/AltosEeprom.java index 5f0a349f..94009b57 100644 --- a/altoslib/AltosEeprom.java +++ b/altoslib/AltosEeprom.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; import java.util.*; diff --git a/altoslib/AltosEepromChunk.java b/altoslib/AltosEepromChunk.java index 7a80e294..4f956636 100644 --- a/altoslib/AltosEepromChunk.java +++ b/altoslib/AltosEepromChunk.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.text.*; import java.util.concurrent.*; diff --git a/altoslib/AltosEepromDownload.java b/altoslib/AltosEepromDownload.java index 1a02cb9c..fa76574c 100644 --- a/altoslib/AltosEepromDownload.java +++ b/altoslib/AltosEepromDownload.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; import java.util.*; diff --git a/altoslib/AltosEepromFile.java b/altoslib/AltosEepromFile.java index 000bb1be..d23116a6 100644 --- a/altoslib/AltosEepromFile.java +++ b/altoslib/AltosEepromFile.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; import java.util.*; diff --git a/altoslib/AltosEepromGPS.java b/altoslib/AltosEepromGPS.java index a0a074ee..a6d2ef32 100644 --- a/altoslib/AltosEepromGPS.java +++ b/altoslib/AltosEepromGPS.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; import java.util.*; diff --git a/altoslib/AltosEepromHeader.java b/altoslib/AltosEepromHeader.java index 6c8c56d4..1f94ac07 100644 --- a/altoslib/AltosEepromHeader.java +++ b/altoslib/AltosEepromHeader.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; import java.util.*; diff --git a/altoslib/AltosEepromIterable.java b/altoslib/AltosEepromIterable.java index 97bb9285..c0311b99 100644 --- a/altoslib/AltosEepromIterable.java +++ b/altoslib/AltosEepromIterable.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; import java.util.*; diff --git a/altoslib/AltosEepromList.java b/altoslib/AltosEepromList.java index 4d511ead..abc30a71 100644 --- a/altoslib/AltosEepromList.java +++ b/altoslib/AltosEepromList.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; import java.util.*; diff --git a/altoslib/AltosEepromLog.java b/altoslib/AltosEepromLog.java index f0ed2db4..9eb5d230 100644 --- a/altoslib/AltosEepromLog.java +++ b/altoslib/AltosEepromLog.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.text.*; import java.util.concurrent.*; diff --git a/altoslib/AltosEepromMega.java b/altoslib/AltosEepromMega.java index 29f0aa90..09fb4288 100644 --- a/altoslib/AltosEepromMega.java +++ b/altoslib/AltosEepromMega.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; import java.util.*; diff --git a/altoslib/AltosEepromMetrum2.java b/altoslib/AltosEepromMetrum2.java index 5662c8e5..f23bffd2 100644 --- a/altoslib/AltosEepromMetrum2.java +++ b/altoslib/AltosEepromMetrum2.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; import java.util.*; diff --git a/altoslib/AltosEepromMini.java b/altoslib/AltosEepromMini.java index f429a0e8..b06e6c84 100644 --- a/altoslib/AltosEepromMini.java +++ b/altoslib/AltosEepromMini.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; import java.util.*; diff --git a/altoslib/AltosEepromMonitor.java b/altoslib/AltosEepromMonitor.java index a966c631..9f6094a5 100644 --- a/altoslib/AltosEepromMonitor.java +++ b/altoslib/AltosEepromMonitor.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public interface AltosEepromMonitor { diff --git a/altoslib/AltosEepromTM.java b/altoslib/AltosEepromTM.java index 7a27a234..a65bd11e 100644 --- a/altoslib/AltosEepromTM.java +++ b/altoslib/AltosEepromTM.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; import java.util.*; diff --git a/altoslib/AltosEepromTMini.java b/altoslib/AltosEepromTMini.java index 8f01c088..82f5aedf 100644 --- a/altoslib/AltosEepromTMini.java +++ b/altoslib/AltosEepromTMini.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; import java.util.*; diff --git a/altoslib/AltosFile.java b/altoslib/AltosFile.java index d1d17610..dc2dba82 100644 --- a/altoslib/AltosFile.java +++ b/altoslib/AltosFile.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.File; import java.util.*; diff --git a/altoslib/AltosFlash.java b/altoslib/AltosFlash.java index d79edf68..285e31d5 100644 --- a/altoslib/AltosFlash.java +++ b/altoslib/AltosFlash.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; diff --git a/altoslib/AltosFlashListener.java b/altoslib/AltosFlashListener.java index 8d171baf..170bf0b0 100644 --- a/altoslib/AltosFlashListener.java +++ b/altoslib/AltosFlashListener.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public interface AltosFlashListener { public void position(String label, int percent); diff --git a/altoslib/AltosFlightDisplay.java b/altoslib/AltosFlightDisplay.java index 4b57526a..5a6d88d1 100644 --- a/altoslib/AltosFlightDisplay.java +++ b/altoslib/AltosFlightDisplay.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public interface AltosFlightDisplay extends AltosUnitsListener, AltosFontListener { void reset(); diff --git a/altoslib/AltosFlightReader.java b/altoslib/AltosFlightReader.java index 62f24e9f..77711a4c 100644 --- a/altoslib/AltosFlightReader.java +++ b/altoslib/AltosFlightReader.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.text.*; import java.io.*; diff --git a/altoslib/AltosFlightStats.java b/altoslib/AltosFlightStats.java index 1c7d67e0..32314b2b 100644 --- a/altoslib/AltosFlightStats.java +++ b/altoslib/AltosFlightStats.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; diff --git a/altoslib/AltosFontListener.java b/altoslib/AltosFontListener.java index 565f50e4..9a1622d9 100644 --- a/altoslib/AltosFontListener.java +++ b/altoslib/AltosFontListener.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public interface AltosFontListener { void font_size_changed(int font_size); diff --git a/altoslib/AltosFrequency.java b/altoslib/AltosFrequency.java index 9542fe33..ef46bd67 100644 --- a/altoslib/AltosFrequency.java +++ b/altoslib/AltosFrequency.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; import java.util.*; diff --git a/altoslib/AltosGPS.java b/altoslib/AltosGPS.java index c5290a3a..6f7c40b7 100644 --- a/altoslib/AltosGPS.java +++ b/altoslib/AltosGPS.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.text.*; import java.util.concurrent.*; diff --git a/altoslib/AltosGPSSat.java b/altoslib/AltosGPSSat.java index c853b634..abde1c0c 100644 --- a/altoslib/AltosGPSSat.java +++ b/altoslib/AltosGPSSat.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.text.*; import java.util.concurrent.*; import java.io.*; diff --git a/altoslib/AltosGreatCircle.java b/altoslib/AltosGreatCircle.java index de3904bf..03e05678 100644 --- a/altoslib/AltosGreatCircle.java +++ b/altoslib/AltosGreatCircle.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.lang.Math; import java.io.*; diff --git a/altoslib/AltosHeight.java b/altoslib/AltosHeight.java index 2bae2566..01bd4a6b 100644 --- a/altoslib/AltosHeight.java +++ b/altoslib/AltosHeight.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public class AltosHeight extends AltosUnits { diff --git a/altoslib/AltosHexfile.java b/altoslib/AltosHexfile.java index f72d4183..e7f900c4 100644 --- a/altoslib/AltosHexfile.java +++ b/altoslib/AltosHexfile.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; import java.util.LinkedList; diff --git a/altoslib/AltosHexsym.java b/altoslib/AltosHexsym.java index 1d9cbb18..ab2beff5 100644 --- a/altoslib/AltosHexsym.java +++ b/altoslib/AltosHexsym.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public class AltosHexsym { String name; diff --git a/altoslib/AltosIMU.java b/altoslib/AltosIMU.java index 62539e08..26d11591 100644 --- a/altoslib/AltosIMU.java +++ b/altoslib/AltosIMU.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.util.concurrent.*; import java.io.*; diff --git a/altoslib/AltosIdle.java b/altoslib/AltosIdle.java index 07a628c3..36a3ca04 100644 --- a/altoslib/AltosIdle.java +++ b/altoslib/AltosIdle.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; import java.util.*; diff --git a/altoslib/AltosIdleFetch.java b/altoslib/AltosIdleFetch.java index 0095bb73..5677916c 100644 --- a/altoslib/AltosIdleFetch.java +++ b/altoslib/AltosIdleFetch.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; import java.util.*; diff --git a/altoslib/AltosIdleMonitor.java b/altoslib/AltosIdleMonitor.java index c67b4d8a..fde8c101 100644 --- a/altoslib/AltosIdleMonitor.java +++ b/altoslib/AltosIdleMonitor.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; import java.util.concurrent.*; diff --git a/altoslib/AltosIdleMonitorListener.java b/altoslib/AltosIdleMonitorListener.java index 36857f58..27a51466 100644 --- a/altoslib/AltosIdleMonitorListener.java +++ b/altoslib/AltosIdleMonitorListener.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public interface AltosIdleMonitorListener { public void update(AltosState state, AltosListenerState listener_state); diff --git a/altoslib/AltosIgnite.java b/altoslib/AltosIgnite.java index ab9c2da6..f3c07339 100644 --- a/altoslib/AltosIgnite.java +++ b/altoslib/AltosIgnite.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.util.*; import java.io.*; diff --git a/altoslib/AltosImage.java b/altoslib/AltosImage.java index d54335c7..9a0751b6 100644 --- a/altoslib/AltosImage.java +++ b/altoslib/AltosImage.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; diff --git a/altoslib/AltosKML.java b/altoslib/AltosKML.java index ac5e0257..ba053015 100644 --- a/altoslib/AltosKML.java +++ b/altoslib/AltosKML.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; import java.util.*; diff --git a/altoslib/AltosLatLon.java b/altoslib/AltosLatLon.java index d39fe15f..ed1dd64e 100644 --- a/altoslib/AltosLatLon.java +++ b/altoslib/AltosLatLon.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public class AltosLatLon { public double lat; diff --git a/altoslib/AltosLatitude.java b/altoslib/AltosLatitude.java index e0deb504..04931ece 100644 --- a/altoslib/AltosLatitude.java +++ b/altoslib/AltosLatitude.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public class AltosLatitude extends AltosLocation { public String pos() { return "N"; } diff --git a/altoslib/AltosLaunchSite.java b/altoslib/AltosLaunchSite.java index ee2a60e9..831fdf64 100644 --- a/altoslib/AltosLaunchSite.java +++ b/altoslib/AltosLaunchSite.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; import java.lang.*; diff --git a/altoslib/AltosLaunchSiteListener.java b/altoslib/AltosLaunchSiteListener.java index c77eadc5..6167b7cf 100644 --- a/altoslib/AltosLaunchSiteListener.java +++ b/altoslib/AltosLaunchSiteListener.java @@ -14,7 +14,7 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; import java.lang.*; diff --git a/altoslib/AltosLaunchSites.java b/altoslib/AltosLaunchSites.java index 3ebac601..db6a1f80 100644 --- a/altoslib/AltosLaunchSites.java +++ b/altoslib/AltosLaunchSites.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; import java.lang.*; diff --git a/altoslib/AltosLib.java b/altoslib/AltosLib.java index a73a7759..103052cb 100644 --- a/altoslib/AltosLib.java +++ b/altoslib/AltosLib.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.util.*; import java.io.*; diff --git a/altoslib/AltosLine.java b/altoslib/AltosLine.java index 876cb7df..90490192 100644 --- a/altoslib/AltosLine.java +++ b/altoslib/AltosLine.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public class AltosLine { public String line; diff --git a/altoslib/AltosLink.java b/altoslib/AltosLink.java index cd8609c0..32766674 100644 --- a/altoslib/AltosLink.java +++ b/altoslib/AltosLink.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; import java.util.concurrent.*; diff --git a/altoslib/AltosListenerState.java b/altoslib/AltosListenerState.java index 389e392f..f5d1c0cb 100644 --- a/altoslib/AltosListenerState.java +++ b/altoslib/AltosListenerState.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; diff --git a/altoslib/AltosLocation.java b/altoslib/AltosLocation.java index df1c9d63..2ab07ebb 100644 --- a/altoslib/AltosLocation.java +++ b/altoslib/AltosLocation.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public abstract class AltosLocation extends AltosUnits { diff --git a/altoslib/AltosLog.java b/altoslib/AltosLog.java index a6e04215..74017a29 100644 --- a/altoslib/AltosLog.java +++ b/altoslib/AltosLog.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; import java.text.*; diff --git a/altoslib/AltosLongitude.java b/altoslib/AltosLongitude.java index 61d74afc..77fe9c9a 100644 --- a/altoslib/AltosLongitude.java +++ b/altoslib/AltosLongitude.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public class AltosLongitude extends AltosLocation { public String pos() { return "E"; } diff --git a/altoslib/AltosMag.java b/altoslib/AltosMag.java index ce5a48c3..3e82f499 100644 --- a/altoslib/AltosMag.java +++ b/altoslib/AltosMag.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.util.concurrent.*; import java.io.*; diff --git a/altoslib/AltosMap.java b/altoslib/AltosMap.java index 08ac5f3c..0c775f33 100644 --- a/altoslib/AltosMap.java +++ b/altoslib/AltosMap.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; import java.lang.*; diff --git a/altoslib/AltosMapCache.java b/altoslib/AltosMapCache.java index 8100704f..28f6b116 100644 --- a/altoslib/AltosMapCache.java +++ b/altoslib/AltosMapCache.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; import java.net.*; diff --git a/altoslib/AltosMapCacheListener.java b/altoslib/AltosMapCacheListener.java index 4984d9e5..b010d12f 100644 --- a/altoslib/AltosMapCacheListener.java +++ b/altoslib/AltosMapCacheListener.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public interface AltosMapCacheListener { public void map_cache_changed(int map_cache); diff --git a/altoslib/AltosMapInterface.java b/altoslib/AltosMapInterface.java index df09224a..78cd70eb 100644 --- a/altoslib/AltosMapInterface.java +++ b/altoslib/AltosMapInterface.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; import java.net.*; diff --git a/altoslib/AltosMapLine.java b/altoslib/AltosMapLine.java index bd590136..ed2c0844 100644 --- a/altoslib/AltosMapLine.java +++ b/altoslib/AltosMapLine.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; import java.lang.Math; diff --git a/altoslib/AltosMapLoader.java b/altoslib/AltosMapLoader.java index 015c0ad3..d715df38 100644 --- a/altoslib/AltosMapLoader.java +++ b/altoslib/AltosMapLoader.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; import java.util.*; diff --git a/altoslib/AltosMapLoaderListener.java b/altoslib/AltosMapLoaderListener.java index 47d7b858..97c8b7f5 100644 --- a/altoslib/AltosMapLoaderListener.java +++ b/altoslib/AltosMapLoaderListener.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public interface AltosMapLoaderListener { public abstract void loader_start(int max); diff --git a/altoslib/AltosMapMark.java b/altoslib/AltosMapMark.java index db714922..0fac5b37 100644 --- a/altoslib/AltosMapMark.java +++ b/altoslib/AltosMapMark.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; import java.lang.Math; diff --git a/altoslib/AltosMapPath.java b/altoslib/AltosMapPath.java index 6f6db4f4..75664f83 100644 --- a/altoslib/AltosMapPath.java +++ b/altoslib/AltosMapPath.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; import java.lang.Math; diff --git a/altoslib/AltosMapPathPoint.java b/altoslib/AltosMapPathPoint.java index 5b46cb19..89494408 100644 --- a/altoslib/AltosMapPathPoint.java +++ b/altoslib/AltosMapPathPoint.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; import java.lang.Math; diff --git a/altoslib/AltosMapRectangle.java b/altoslib/AltosMapRectangle.java index b6294a4e..566e414f 100644 --- a/altoslib/AltosMapRectangle.java +++ b/altoslib/AltosMapRectangle.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public class AltosMapRectangle { AltosLatLon ul, lr; diff --git a/altoslib/AltosMapStore.java b/altoslib/AltosMapStore.java index ca4c9c75..53bfd517 100644 --- a/altoslib/AltosMapStore.java +++ b/altoslib/AltosMapStore.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; import java.net.*; diff --git a/altoslib/AltosMapStoreListener.java b/altoslib/AltosMapStoreListener.java index 65bd6ef8..bfee5f5c 100644 --- a/altoslib/AltosMapStoreListener.java +++ b/altoslib/AltosMapStoreListener.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public interface AltosMapStoreListener { abstract void notify_store(AltosMapStore store, int status); diff --git a/altoslib/AltosMapTile.java b/altoslib/AltosMapTile.java index b0bac963..b65f6fc1 100644 --- a/altoslib/AltosMapTile.java +++ b/altoslib/AltosMapTile.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; import java.util.*; diff --git a/altoslib/AltosMapTileListener.java b/altoslib/AltosMapTileListener.java index 6d78b205..7939e4bd 100644 --- a/altoslib/AltosMapTileListener.java +++ b/altoslib/AltosMapTileListener.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public interface AltosMapTileListener { abstract public void notify_tile(AltosMapTile tile, int status); diff --git a/altoslib/AltosMapTransform.java b/altoslib/AltosMapTransform.java index b8901127..53f3abac 100644 --- a/altoslib/AltosMapTransform.java +++ b/altoslib/AltosMapTransform.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; import java.lang.Math; diff --git a/altoslib/AltosMapTypeListener.java b/altoslib/AltosMapTypeListener.java index b82bda3f..20740e7d 100644 --- a/altoslib/AltosMapTypeListener.java +++ b/altoslib/AltosMapTypeListener.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public interface AltosMapTypeListener { public void map_type_changed(int map_type); diff --git a/altoslib/AltosMapZoomListener.java b/altoslib/AltosMapZoomListener.java index 51f8c3c5..59c91e8e 100644 --- a/altoslib/AltosMapZoomListener.java +++ b/altoslib/AltosMapZoomListener.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public interface AltosMapZoomListener { abstract public void zoom_changed(int zoom); diff --git a/altoslib/AltosMma655x.java b/altoslib/AltosMma655x.java index b09ec74b..57bc7b91 100644 --- a/altoslib/AltosMma655x.java +++ b/altoslib/AltosMma655x.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.util.concurrent.*; diff --git a/altoslib/AltosMs5607.java b/altoslib/AltosMs5607.java index 1277f267..4f5549a7 100644 --- a/altoslib/AltosMs5607.java +++ b/altoslib/AltosMs5607.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.util.concurrent.*; import java.io.*; diff --git a/altoslib/AltosNoSymbol.java b/altoslib/AltosNoSymbol.java index 5451047e..3f3cbbe7 100644 --- a/altoslib/AltosNoSymbol.java +++ b/altoslib/AltosNoSymbol.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public class AltosNoSymbol extends Exception { public AltosNoSymbol(String name) { diff --git a/altoslib/AltosOrient.java b/altoslib/AltosOrient.java index 8b22c131..edaa304c 100644 --- a/altoslib/AltosOrient.java +++ b/altoslib/AltosOrient.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public class AltosOrient extends AltosUnits { diff --git a/altoslib/AltosParse.java b/altoslib/AltosParse.java index 1cbddcf9..ae88182d 100644 --- a/altoslib/AltosParse.java +++ b/altoslib/AltosParse.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.util.*; import java.text.*; diff --git a/altoslib/AltosPointDouble.java b/altoslib/AltosPointDouble.java index 65bad427..b18c4b48 100644 --- a/altoslib/AltosPointDouble.java +++ b/altoslib/AltosPointDouble.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public class AltosPointDouble { public double x, y; diff --git a/altoslib/AltosPointInt.java b/altoslib/AltosPointInt.java index 34eb6fd3..14b0dabf 100644 --- a/altoslib/AltosPointInt.java +++ b/altoslib/AltosPointInt.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public class AltosPointInt { public int x, y; diff --git a/altoslib/AltosPreferences.java b/altoslib/AltosPreferences.java index fb3026a4..b853e944 100644 --- a/altoslib/AltosPreferences.java +++ b/altoslib/AltosPreferences.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; import java.util.*; diff --git a/altoslib/AltosPreferencesBackend.java b/altoslib/AltosPreferencesBackend.java index 6e1124e2..1f925914 100644 --- a/altoslib/AltosPreferencesBackend.java +++ b/altoslib/AltosPreferencesBackend.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; import java.util.*; diff --git a/altoslib/AltosProgrammer.java b/altoslib/AltosProgrammer.java index 2f8e3bd0..78be8282 100644 --- a/altoslib/AltosProgrammer.java +++ b/altoslib/AltosProgrammer.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; diff --git a/altoslib/AltosPyro.java b/altoslib/AltosPyro.java index 3afd03e0..a1a903fd 100644 --- a/altoslib/AltosPyro.java +++ b/altoslib/AltosPyro.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.util.*; import java.text.*; diff --git a/altoslib/AltosQuaternion.java b/altoslib/AltosQuaternion.java index bc471c9c..351685f8 100644 --- a/altoslib/AltosQuaternion.java +++ b/altoslib/AltosQuaternion.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public class AltosQuaternion { double r; /* real bit */ diff --git a/altoslib/AltosRectangle.java b/altoslib/AltosRectangle.java index 4757687d..e1705548 100644 --- a/altoslib/AltosRectangle.java +++ b/altoslib/AltosRectangle.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public class AltosRectangle { public int x, y, width, height; diff --git a/altoslib/AltosReplayReader.java b/altoslib/AltosReplayReader.java index 0f77c979..f420c958 100644 --- a/altoslib/AltosReplayReader.java +++ b/altoslib/AltosReplayReader.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; import java.util.*; diff --git a/altoslib/AltosRomconfig.java b/altoslib/AltosRomconfig.java index af201939..37585879 100644 --- a/altoslib/AltosRomconfig.java +++ b/altoslib/AltosRomconfig.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; diff --git a/altoslib/AltosRotation.java b/altoslib/AltosRotation.java index e53a3a49..411ecbdf 100644 --- a/altoslib/AltosRotation.java +++ b/altoslib/AltosRotation.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public class AltosRotation { private AltosQuaternion rotation; diff --git a/altoslib/AltosSavedState.java b/altoslib/AltosSavedState.java index 3dbf59a5..a7954043 100644 --- a/altoslib/AltosSavedState.java +++ b/altoslib/AltosSavedState.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; diff --git a/altoslib/AltosSelfFlash.java b/altoslib/AltosSelfFlash.java index f996d7b1..b6056c9c 100644 --- a/altoslib/AltosSelfFlash.java +++ b/altoslib/AltosSelfFlash.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; diff --git a/altoslib/AltosSensorEMini.java b/altoslib/AltosSensorEMini.java index 884800f8..875dad0b 100644 --- a/altoslib/AltosSensorEMini.java +++ b/altoslib/AltosSensorEMini.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.util.concurrent.TimeoutException; diff --git a/altoslib/AltosSensorMM.java b/altoslib/AltosSensorMM.java index 99eca9d8..654f85bd 100644 --- a/altoslib/AltosSensorMM.java +++ b/altoslib/AltosSensorMM.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.util.concurrent.TimeoutException; diff --git a/altoslib/AltosSensorMega.java b/altoslib/AltosSensorMega.java index a4224311..18474e18 100644 --- a/altoslib/AltosSensorMega.java +++ b/altoslib/AltosSensorMega.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.util.concurrent.TimeoutException; diff --git a/altoslib/AltosSensorMetrum.java b/altoslib/AltosSensorMetrum.java index 1b09647f..5f56a899 100644 --- a/altoslib/AltosSensorMetrum.java +++ b/altoslib/AltosSensorMetrum.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.util.concurrent.TimeoutException; diff --git a/altoslib/AltosSensorTGPS.java b/altoslib/AltosSensorTGPS.java index 9f572eca..80b27824 100644 --- a/altoslib/AltosSensorTGPS.java +++ b/altoslib/AltosSensorTGPS.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.util.concurrent.TimeoutException; diff --git a/altoslib/AltosSensorTM.java b/altoslib/AltosSensorTM.java index bb842b52..e80bac6a 100644 --- a/altoslib/AltosSensorTM.java +++ b/altoslib/AltosSensorTM.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.util.concurrent.TimeoutException; diff --git a/altoslib/AltosSensorTMini.java b/altoslib/AltosSensorTMini.java index 9e01b50c..739670f5 100644 --- a/altoslib/AltosSensorTMini.java +++ b/altoslib/AltosSensorTMini.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.util.concurrent.TimeoutException; diff --git a/altoslib/AltosSpeed.java b/altoslib/AltosSpeed.java index e09bbb7a..73851979 100644 --- a/altoslib/AltosSpeed.java +++ b/altoslib/AltosSpeed.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public class AltosSpeed extends AltosUnits { diff --git a/altoslib/AltosState.java b/altoslib/AltosState.java index 7b41e98d..ca28a16d 100644 --- a/altoslib/AltosState.java +++ b/altoslib/AltosState.java @@ -19,7 +19,7 @@ * Track flight state from telemetry or eeprom data stream */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; diff --git a/altoslib/AltosStateIterable.java b/altoslib/AltosStateIterable.java index 2d2d342f..bce2a8d9 100644 --- a/altoslib/AltosStateIterable.java +++ b/altoslib/AltosStateIterable.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; import java.util.*; diff --git a/altoslib/AltosStateUpdate.java b/altoslib/AltosStateUpdate.java index 12d4dd41..1209c2a0 100644 --- a/altoslib/AltosStateUpdate.java +++ b/altoslib/AltosStateUpdate.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public interface AltosStateUpdate { public void update_state(AltosState state) throws InterruptedException, AltosUnknownProduct; diff --git a/altoslib/AltosTelemetry.java b/altoslib/AltosTelemetry.java index 67caa60c..d526e6e5 100644 --- a/altoslib/AltosTelemetry.java +++ b/altoslib/AltosTelemetry.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.text.*; diff --git a/altoslib/AltosTelemetryCompanion.java b/altoslib/AltosTelemetryCompanion.java index b9d32f48..8f0d06b0 100644 --- a/altoslib/AltosTelemetryCompanion.java +++ b/altoslib/AltosTelemetryCompanion.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public class AltosTelemetryCompanion extends AltosTelemetryStandard { AltosCompanion companion; diff --git a/altoslib/AltosTelemetryConfiguration.java b/altoslib/AltosTelemetryConfiguration.java index cd2cb8ca..352f1808 100644 --- a/altoslib/AltosTelemetryConfiguration.java +++ b/altoslib/AltosTelemetryConfiguration.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public class AltosTelemetryConfiguration extends AltosTelemetryStandard { diff --git a/altoslib/AltosTelemetryFile.java b/altoslib/AltosTelemetryFile.java index b80c2dc9..5f512e14 100644 --- a/altoslib/AltosTelemetryFile.java +++ b/altoslib/AltosTelemetryFile.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; import java.util.*; diff --git a/altoslib/AltosTelemetryIterable.java b/altoslib/AltosTelemetryIterable.java index ff395868..256626f3 100644 --- a/altoslib/AltosTelemetryIterable.java +++ b/altoslib/AltosTelemetryIterable.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; import java.util.*; diff --git a/altoslib/AltosTelemetryLegacy.java b/altoslib/AltosTelemetryLegacy.java index 6c0fcfeb..df41b7d9 100644 --- a/altoslib/AltosTelemetryLegacy.java +++ b/altoslib/AltosTelemetryLegacy.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.text.*; diff --git a/altoslib/AltosTelemetryLocation.java b/altoslib/AltosTelemetryLocation.java index 33c36449..1cff3cd4 100644 --- a/altoslib/AltosTelemetryLocation.java +++ b/altoslib/AltosTelemetryLocation.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public class AltosTelemetryLocation extends AltosTelemetryStandard { diff --git a/altoslib/AltosTelemetryMap.java b/altoslib/AltosTelemetryMap.java index 13b5dbea..8e5bcd1c 100644 --- a/altoslib/AltosTelemetryMap.java +++ b/altoslib/AltosTelemetryMap.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.text.*; import java.util.HashMap; diff --git a/altoslib/AltosTelemetryMegaData.java b/altoslib/AltosTelemetryMegaData.java index d71f2802..ed0211a9 100644 --- a/altoslib/AltosTelemetryMegaData.java +++ b/altoslib/AltosTelemetryMegaData.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public class AltosTelemetryMegaData extends AltosTelemetryStandard { int state; diff --git a/altoslib/AltosTelemetryMegaSensor.java b/altoslib/AltosTelemetryMegaSensor.java index f0d16f19..365db92d 100644 --- a/altoslib/AltosTelemetryMegaSensor.java +++ b/altoslib/AltosTelemetryMegaSensor.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public class AltosTelemetryMegaSensor extends AltosTelemetryStandard { int accel; diff --git a/altoslib/AltosTelemetryMetrumData.java b/altoslib/AltosTelemetryMetrumData.java index a4e9116f..0d943836 100644 --- a/altoslib/AltosTelemetryMetrumData.java +++ b/altoslib/AltosTelemetryMetrumData.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public class AltosTelemetryMetrumData extends AltosTelemetryStandard { diff --git a/altoslib/AltosTelemetryMetrumSensor.java b/altoslib/AltosTelemetryMetrumSensor.java index 1b405f2b..0ccc4e15 100644 --- a/altoslib/AltosTelemetryMetrumSensor.java +++ b/altoslib/AltosTelemetryMetrumSensor.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public class AltosTelemetryMetrumSensor extends AltosTelemetryStandard { diff --git a/altoslib/AltosTelemetryMini.java b/altoslib/AltosTelemetryMini.java index 8996d662..8bca55fa 100644 --- a/altoslib/AltosTelemetryMini.java +++ b/altoslib/AltosTelemetryMini.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public class AltosTelemetryMini extends AltosTelemetryStandard { diff --git a/altoslib/AltosTelemetryRaw.java b/altoslib/AltosTelemetryRaw.java index 8cf023a4..c28d04d3 100644 --- a/altoslib/AltosTelemetryRaw.java +++ b/altoslib/AltosTelemetryRaw.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public class AltosTelemetryRaw extends AltosTelemetryStandard { public AltosTelemetryRaw(int[] bytes) { diff --git a/altoslib/AltosTelemetryReader.java b/altoslib/AltosTelemetryReader.java index 2b0a443c..370610b1 100644 --- a/altoslib/AltosTelemetryReader.java +++ b/altoslib/AltosTelemetryReader.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.text.*; import java.io.*; diff --git a/altoslib/AltosTelemetrySatellite.java b/altoslib/AltosTelemetrySatellite.java index de60e63c..d88e6cac 100644 --- a/altoslib/AltosTelemetrySatellite.java +++ b/altoslib/AltosTelemetrySatellite.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public class AltosTelemetrySatellite extends AltosTelemetryStandard { int channels; diff --git a/altoslib/AltosTelemetrySensor.java b/altoslib/AltosTelemetrySensor.java index 74b61d3c..7a4a9f35 100644 --- a/altoslib/AltosTelemetrySensor.java +++ b/altoslib/AltosTelemetrySensor.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public class AltosTelemetrySensor extends AltosTelemetryStandard { diff --git a/altoslib/AltosTelemetryStandard.java b/altoslib/AltosTelemetryStandard.java index 7086abfc..dea9c29e 100644 --- a/altoslib/AltosTelemetryStandard.java +++ b/altoslib/AltosTelemetryStandard.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public abstract class AltosTelemetryStandard extends AltosTelemetry { int[] bytes; diff --git a/altoslib/AltosTemperature.java b/altoslib/AltosTemperature.java index a1e485b3..2b261b70 100644 --- a/altoslib/AltosTemperature.java +++ b/altoslib/AltosTemperature.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public class AltosTemperature extends AltosUnits { diff --git a/altoslib/AltosUnits.java b/altoslib/AltosUnits.java index bc53d4a0..b46b30ad 100644 --- a/altoslib/AltosUnits.java +++ b/altoslib/AltosUnits.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.text.*; diff --git a/altoslib/AltosUnitsListener.java b/altoslib/AltosUnitsListener.java index bb8451b7..89dbdf77 100644 --- a/altoslib/AltosUnitsListener.java +++ b/altoslib/AltosUnitsListener.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public interface AltosUnitsListener { public void units_changed(boolean imperial_units); diff --git a/altoslib/AltosUnitsRange.java b/altoslib/AltosUnitsRange.java index 9239481a..f376a463 100644 --- a/altoslib/AltosUnitsRange.java +++ b/altoslib/AltosUnitsRange.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.text.*; diff --git a/altoslib/AltosUnknownProduct.java b/altoslib/AltosUnknownProduct.java index ff536f57..fe16f441 100644 --- a/altoslib/AltosUnknownProduct.java +++ b/altoslib/AltosUnknownProduct.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public class AltosUnknownProduct extends Exception { public String product; diff --git a/altoslib/AltosVersion.java.in b/altoslib/AltosVersion.java.in index 9ac94dcd..12fecaa0 100644 --- a/altoslib/AltosVersion.java.in +++ b/altoslib/AltosVersion.java.in @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public class AltosVersion { public final static String version = "@VERSION@"; diff --git a/altoslib/AltosVoltage.java b/altoslib/AltosVoltage.java index 1738dd86..5c9cea28 100644 --- a/altoslib/AltosVoltage.java +++ b/altoslib/AltosVoltage.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public class AltosVoltage extends AltosUnits { diff --git a/altoslib/AltosWriter.java b/altoslib/AltosWriter.java index 02b5d669..a3a394d3 100644 --- a/altoslib/AltosWriter.java +++ b/altoslib/AltosWriter.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; public interface AltosWriter { diff --git a/altosui/Altos.java b/altosui/Altos.java index 81bc8c28..1c8bfdb7 100644 --- a/altosui/Altos.java +++ b/altosui/Altos.java @@ -20,8 +20,8 @@ package altosui; import java.awt.*; import libaltosJNI.*; -import org.altusmetrum.altoslib_10.*; -import org.altusmetrum.altosuilib_10.*; +import org.altusmetrum.altoslib_11.*; +import org.altusmetrum.altosuilib_11.*; public class Altos extends AltosUILib { diff --git a/altosui/AltosAscent.java b/altosui/AltosAscent.java index 85260a70..99f7e5ad 100644 --- a/altosui/AltosAscent.java +++ b/altosui/AltosAscent.java @@ -21,8 +21,8 @@ import java.util.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; -import org.altusmetrum.altoslib_10.*; -import org.altusmetrum.altosuilib_10.*; +import org.altusmetrum.altoslib_11.*; +import org.altusmetrum.altosuilib_11.*; public class AltosAscent extends AltosUIFlightTab { JLabel cur, max; diff --git a/altosui/AltosCompanionInfo.java b/altosui/AltosCompanionInfo.java index 251982ad..8bf25715 100644 --- a/altosui/AltosCompanionInfo.java +++ b/altosui/AltosCompanionInfo.java @@ -19,8 +19,8 @@ package altosui; import java.awt.*; import javax.swing.*; -import org.altusmetrum.altoslib_10.*; -import org.altusmetrum.altosuilib_10.*; +import org.altusmetrum.altoslib_11.*; +import org.altusmetrum.altosuilib_11.*; public class AltosCompanionInfo extends JTable implements AltosFlightDisplay { private AltosFlightInfoTableModel model; diff --git a/altosui/AltosConfig.java b/altosui/AltosConfig.java index e47b0e22..63f50206 100644 --- a/altosui/AltosConfig.java +++ b/altosui/AltosConfig.java @@ -22,8 +22,8 @@ import javax.swing.*; import java.io.*; import java.util.concurrent.*; import java.text.*; -import org.altusmetrum.altoslib_10.*; -import org.altusmetrum.altosuilib_10.*; +import org.altusmetrum.altoslib_11.*; +import org.altusmetrum.altosuilib_11.*; public class AltosConfig implements ActionListener { diff --git a/altosui/AltosConfigPyroUI.java b/altosui/AltosConfigPyroUI.java index 125866c6..4bfdb663 100644 --- a/altosui/AltosConfigPyroUI.java +++ b/altosui/AltosConfigPyroUI.java @@ -22,8 +22,8 @@ import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; -import org.altusmetrum.altoslib_10.*; -import org.altusmetrum.altosuilib_10.*; +import org.altusmetrum.altoslib_11.*; +import org.altusmetrum.altosuilib_11.*; public class AltosConfigPyroUI extends AltosUIDialog diff --git a/altosui/AltosConfigTD.java b/altosui/AltosConfigTD.java index eedc18c5..61727498 100644 --- a/altosui/AltosConfigTD.java +++ b/altosui/AltosConfigTD.java @@ -21,8 +21,8 @@ import java.awt.event.*; import javax.swing.*; import java.io.*; import java.util.concurrent.*; -import org.altusmetrum.altoslib_10.*; -import org.altusmetrum.altosuilib_10.*; +import org.altusmetrum.altoslib_11.*; +import org.altusmetrum.altosuilib_11.*; public class AltosConfigTD implements ActionListener { diff --git a/altosui/AltosConfigTDUI.java b/altosui/AltosConfigTDUI.java index 9a76fbe2..1c0e0fef 100644 --- a/altosui/AltosConfigTDUI.java +++ b/altosui/AltosConfigTDUI.java @@ -21,8 +21,8 @@ import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; -import org.altusmetrum.altoslib_10.*; -import org.altusmetrum.altosuilib_10.*; +import org.altusmetrum.altoslib_11.*; +import org.altusmetrum.altosuilib_11.*; public class AltosConfigTDUI extends AltosUIDialog diff --git a/altosui/AltosConfigUI.java b/altosui/AltosConfigUI.java index 09123f4f..cb7af829 100644 --- a/altosui/AltosConfigUI.java +++ b/altosui/AltosConfigUI.java @@ -22,8 +22,8 @@ import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; import java.text.*; -import org.altusmetrum.altoslib_10.*; -import org.altusmetrum.altosuilib_10.*; +import org.altusmetrum.altoslib_11.*; +import org.altusmetrum.altosuilib_11.*; public class AltosConfigUI extends AltosUIDialog diff --git a/altosui/AltosConfigureUI.java b/altosui/AltosConfigureUI.java index 52c50352..b4f423d9 100644 --- a/altosui/AltosConfigureUI.java +++ b/altosui/AltosConfigureUI.java @@ -22,7 +22,7 @@ import java.awt.event.*; import java.beans.*; import javax.swing.*; import javax.swing.event.*; -import org.altusmetrum.altosuilib_10.*; +import org.altusmetrum.altosuilib_11.*; public class AltosConfigureUI extends AltosUIConfigure diff --git a/altosui/AltosDescent.java b/altosui/AltosDescent.java index eeaed19e..44bcecee 100644 --- a/altosui/AltosDescent.java +++ b/altosui/AltosDescent.java @@ -21,8 +21,8 @@ import java.util.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; -import org.altusmetrum.altoslib_10.*; -import org.altusmetrum.altosuilib_10.*; +import org.altusmetrum.altoslib_11.*; +import org.altusmetrum.altosuilib_11.*; public class AltosDescent extends AltosUIFlightTab { diff --git a/altosui/AltosFlightStatus.java b/altosui/AltosFlightStatus.java index 4229e4fc..82c63396 100644 --- a/altosui/AltosFlightStatus.java +++ b/altosui/AltosFlightStatus.java @@ -19,8 +19,8 @@ package altosui; import java.awt.*; import javax.swing.*; -import org.altusmetrum.altoslib_10.*; -import org.altusmetrum.altosuilib_10.*; +import org.altusmetrum.altoslib_11.*; +import org.altusmetrum.altosuilib_11.*; public class AltosFlightStatus extends JComponent implements AltosFlightDisplay { GridBagLayout layout; diff --git a/altosui/AltosFlightStatusTableModel.java b/altosui/AltosFlightStatusTableModel.java index 7bf2bb78..dc5b96a9 100644 --- a/altosui/AltosFlightStatusTableModel.java +++ b/altosui/AltosFlightStatusTableModel.java @@ -27,7 +27,7 @@ import java.util.*; import java.text.*; import java.util.prefs.*; import java.util.concurrent.LinkedBlockingQueue; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; public class AltosFlightStatusTableModel extends AbstractTableModel { private String[] columnNames = { diff --git a/altosui/AltosFlightStatusUpdate.java b/altosui/AltosFlightStatusUpdate.java index d39366da..88d6f0ff 100644 --- a/altosui/AltosFlightStatusUpdate.java +++ b/altosui/AltosFlightStatusUpdate.java @@ -18,7 +18,7 @@ package altosui; import java.awt.event.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; public class AltosFlightStatusUpdate implements ActionListener { diff --git a/altosui/AltosFlightUI.java b/altosui/AltosFlightUI.java index a1526cb5..9b4a18bc 100644 --- a/altosui/AltosFlightUI.java +++ b/altosui/AltosFlightUI.java @@ -22,8 +22,8 @@ import java.awt.event.*; import javax.swing.*; import java.util.*; import java.util.concurrent.*; -import org.altusmetrum.altoslib_10.*; -import org.altusmetrum.altosuilib_10.*; +import org.altusmetrum.altoslib_11.*; +import org.altusmetrum.altosuilib_11.*; public class AltosFlightUI extends AltosUIFrame implements AltosFlightDisplay { AltosVoice voice; diff --git a/altosui/AltosGraphUI.java b/altosui/AltosGraphUI.java index 34d56b24..be63c6e6 100644 --- a/altosui/AltosGraphUI.java +++ b/altosui/AltosGraphUI.java @@ -23,8 +23,8 @@ import java.util.ArrayList; import java.awt.*; import java.awt.event.*; import javax.swing.*; -import org.altusmetrum.altoslib_10.*; -import org.altusmetrum.altosuilib_10.*; +import org.altusmetrum.altoslib_11.*; +import org.altusmetrum.altosuilib_11.*; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; diff --git a/altosui/AltosIdleMonitorUI.java b/altosui/AltosIdleMonitorUI.java index d789de77..8d0d807e 100644 --- a/altosui/AltosIdleMonitorUI.java +++ b/altosui/AltosIdleMonitorUI.java @@ -24,8 +24,8 @@ import javax.swing.event.*; import java.io.*; import java.util.concurrent.*; import java.util.Arrays; -import org.altusmetrum.altoslib_10.*; -import org.altusmetrum.altosuilib_10.*; +import org.altusmetrum.altoslib_11.*; +import org.altusmetrum.altosuilib_11.*; public class AltosIdleMonitorUI extends AltosUIFrame implements AltosFlightDisplay, AltosIdleMonitorListener, DocumentListener { AltosDevice device; diff --git a/altosui/AltosIgniteUI.java b/altosui/AltosIgniteUI.java index eca2a668..84dc54db 100644 --- a/altosui/AltosIgniteUI.java +++ b/altosui/AltosIgniteUI.java @@ -24,8 +24,8 @@ import java.io.*; import java.text.*; import java.util.*; import java.util.concurrent.*; -import org.altusmetrum.altoslib_10.*; -import org.altusmetrum.altosuilib_10.*; +import org.altusmetrum.altoslib_11.*; +import org.altusmetrum.altosuilib_11.*; public class AltosIgniteUI extends AltosUIDialog diff --git a/altosui/AltosIgnitor.java b/altosui/AltosIgnitor.java index 903da5a9..13d99124 100644 --- a/altosui/AltosIgnitor.java +++ b/altosui/AltosIgnitor.java @@ -20,8 +20,8 @@ package altosui; import java.awt.*; import java.awt.event.*; import javax.swing.*; -import org.altusmetrum.altoslib_10.*; -import org.altusmetrum.altosuilib_10.*; +import org.altusmetrum.altoslib_11.*; +import org.altusmetrum.altosuilib_11.*; public class AltosIgnitor extends AltosUIFlightTab { diff --git a/altosui/AltosLanded.java b/altosui/AltosLanded.java index b704651d..77c504b8 100644 --- a/altosui/AltosLanded.java +++ b/altosui/AltosLanded.java @@ -21,8 +21,8 @@ import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; -import org.altusmetrum.altoslib_10.*; -import org.altusmetrum.altosuilib_10.*; +import org.altusmetrum.altoslib_11.*; +import org.altusmetrum.altosuilib_11.*; public class AltosLanded extends AltosUIFlightTab implements ActionListener { diff --git a/altosui/AltosLaunch.java b/altosui/AltosLaunch.java index 503b0621..46a29d45 100644 --- a/altosui/AltosLaunch.java +++ b/altosui/AltosLaunch.java @@ -20,7 +20,7 @@ package altosui; import java.io.*; import java.util.concurrent.*; import java.awt.*; -import org.altusmetrum.altosuilib_10.*; +import org.altusmetrum.altosuilib_11.*; public class AltosLaunch { AltosDevice device; diff --git a/altosui/AltosLaunchUI.java b/altosui/AltosLaunchUI.java index 127a33a3..22608c1b 100644 --- a/altosui/AltosLaunchUI.java +++ b/altosui/AltosLaunchUI.java @@ -23,7 +23,7 @@ import javax.swing.*; import java.io.*; import java.text.*; import java.util.concurrent.*; -import org.altusmetrum.altosuilib_10.*; +import org.altusmetrum.altosuilib_11.*; class FireButton extends JButton { protected void processMouseEvent(MouseEvent e) { diff --git a/altosui/AltosPad.java b/altosui/AltosPad.java index 9a8c8087..b6f1f3c9 100644 --- a/altosui/AltosPad.java +++ b/altosui/AltosPad.java @@ -18,8 +18,8 @@ package altosui; import java.util.*; -import org.altusmetrum.altoslib_10.*; -import org.altusmetrum.altosuilib_10.*; +import org.altusmetrum.altoslib_11.*; +import org.altusmetrum.altosuilib_11.*; public class AltosPad extends AltosUIFlightTab { diff --git a/altosui/AltosUI.java b/altosui/AltosUI.java index 4a390ee6..88ae8530 100644 --- a/altosui/AltosUI.java +++ b/altosui/AltosUI.java @@ -22,8 +22,8 @@ import java.awt.event.*; import javax.swing.*; import java.io.*; import java.util.concurrent.*; -import org.altusmetrum.altoslib_10.*; -import org.altusmetrum.altosuilib_10.*; +import org.altusmetrum.altoslib_11.*; +import org.altusmetrum.altosuilib_11.*; public class AltosUI extends AltosUIFrame { public AltosVoice voice = new AltosVoice(); diff --git a/altosuilib/AltosBTDevice.java b/altosuilib/AltosBTDevice.java index 8c2e0d75..df00bcee 100644 --- a/altosuilib/AltosBTDevice.java +++ b/altosuilib/AltosBTDevice.java @@ -15,10 +15,10 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import libaltosJNI.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; public class AltosBTDevice extends altos_bt_device implements AltosDevice { diff --git a/altosuilib/AltosBTDeviceIterator.java b/altosuilib/AltosBTDeviceIterator.java index ea29b055..75ca18ed 100644 --- a/altosuilib/AltosBTDeviceIterator.java +++ b/altosuilib/AltosBTDeviceIterator.java @@ -15,11 +15,11 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import java.util.*; import libaltosJNI.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; public class AltosBTDeviceIterator implements Iterator { AltosBTDevice current; diff --git a/altosuilib/AltosBTKnown.java b/altosuilib/AltosBTKnown.java index 8ae11f67..11b0d48d 100644 --- a/altosuilib/AltosBTKnown.java +++ b/altosuilib/AltosBTKnown.java @@ -15,10 +15,10 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import java.util.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; public class AltosBTKnown implements Iterable { LinkedList devices = new LinkedList(); diff --git a/altosuilib/AltosBTManage.java b/altosuilib/AltosBTManage.java index e6a1ef64..bdb35d49 100644 --- a/altosuilib/AltosBTManage.java +++ b/altosuilib/AltosBTManage.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import java.awt.*; import java.awt.event.*; @@ -23,7 +23,7 @@ import javax.swing.*; import javax.swing.plaf.basic.*; import java.util.*; import java.util.concurrent.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; public class AltosBTManage extends AltosUIDialog implements ActionListener, Iterable { LinkedBlockingQueue found_devices; diff --git a/altosuilib/AltosCSVUI.java b/altosuilib/AltosCSVUI.java index 3846d3fd..9d67ce8d 100644 --- a/altosuilib/AltosCSVUI.java +++ b/altosuilib/AltosCSVUI.java @@ -15,13 +15,13 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; public class AltosCSVUI extends AltosUIDialog diff --git a/altosuilib/AltosConfigFreqUI.java b/altosuilib/AltosConfigFreqUI.java index 5a689a39..b8477ecd 100644 --- a/altosuilib/AltosConfigFreqUI.java +++ b/altosuilib/AltosConfigFreqUI.java @@ -15,14 +15,14 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import java.awt.*; import java.text.*; import java.awt.event.*; import javax.swing.*; import java.util.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; class AltosEditFreqUI extends AltosUIDialog implements ActionListener { Frame frame; diff --git a/altosuilib/AltosDataChooser.java b/altosuilib/AltosDataChooser.java index 3dfadfe1..f1a5610e 100644 --- a/altosuilib/AltosDataChooser.java +++ b/altosuilib/AltosDataChooser.java @@ -15,12 +15,12 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import javax.swing.*; import javax.swing.filechooser.FileNameExtensionFilter; import java.io.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; public class AltosDataChooser extends JFileChooser { JFrame frame; diff --git a/altosuilib/AltosDevice.java b/altosuilib/AltosDevice.java index dbaf2e36..f51c76c2 100644 --- a/altosuilib/AltosDevice.java +++ b/altosuilib/AltosDevice.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import libaltosJNI.*; diff --git a/altosuilib/AltosDeviceDialog.java b/altosuilib/AltosDeviceDialog.java index 21a8a23f..0cd658c0 100644 --- a/altosuilib/AltosDeviceDialog.java +++ b/altosuilib/AltosDeviceDialog.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import javax.swing.*; import java.awt.*; diff --git a/altosuilib/AltosDeviceUIDialog.java b/altosuilib/AltosDeviceUIDialog.java index 75c3e691..7d1e3618 100644 --- a/altosuilib/AltosDeviceUIDialog.java +++ b/altosuilib/AltosDeviceUIDialog.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import javax.swing.*; import java.awt.*; diff --git a/altosuilib/AltosDisplayThread.java b/altosuilib/AltosDisplayThread.java index 968a0b75..ba48ab82 100644 --- a/altosuilib/AltosDisplayThread.java +++ b/altosuilib/AltosDisplayThread.java @@ -15,13 +15,13 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import java.awt.*; import javax.swing.*; import java.io.*; import java.text.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; public class AltosDisplayThread extends Thread { diff --git a/altosuilib/AltosEepromDelete.java b/altosuilib/AltosEepromDelete.java index 442cee88..026b5da4 100644 --- a/altosuilib/AltosEepromDelete.java +++ b/altosuilib/AltosEepromDelete.java @@ -15,13 +15,13 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import java.awt.event.*; import javax.swing.*; import java.io.*; import java.util.concurrent.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; public class AltosEepromDelete implements Runnable { AltosEepromList flights; diff --git a/altosuilib/AltosEepromManage.java b/altosuilib/AltosEepromManage.java index 5f83e6f4..a4b62ff0 100644 --- a/altosuilib/AltosEepromManage.java +++ b/altosuilib/AltosEepromManage.java @@ -15,13 +15,13 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import java.awt.event.*; import javax.swing.*; import java.io.*; import java.util.concurrent.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; public class AltosEepromManage implements ActionListener { diff --git a/altosuilib/AltosEepromMonitor.java b/altosuilib/AltosEepromMonitor.java index 508e3e3f..7fe5be18 100644 --- a/altosuilib/AltosEepromMonitor.java +++ b/altosuilib/AltosEepromMonitor.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import java.awt.*; import java.awt.event.*; diff --git a/altosuilib/AltosEepromMonitorUI.java b/altosuilib/AltosEepromMonitorUI.java index 905780a5..9492bc31 100644 --- a/altosuilib/AltosEepromMonitorUI.java +++ b/altosuilib/AltosEepromMonitorUI.java @@ -15,12 +15,12 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import java.awt.*; import java.awt.event.*; import javax.swing.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; public class AltosEepromMonitorUI extends AltosUIDialog implements AltosEepromMonitor { JFrame owner; diff --git a/altosuilib/AltosEepromSelect.java b/altosuilib/AltosEepromSelect.java index 67bff710..28b3982b 100644 --- a/altosuilib/AltosEepromSelect.java +++ b/altosuilib/AltosEepromSelect.java @@ -15,13 +15,13 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import javax.swing.*; import javax.swing.border.*; import java.awt.*; import java.awt.event.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; class AltosEepromItem implements ActionListener { AltosEepromLog log; diff --git a/altosuilib/AltosFlashUI.java b/altosuilib/AltosFlashUI.java index 07f04c3e..6574bd99 100644 --- a/altosuilib/AltosFlashUI.java +++ b/altosuilib/AltosFlashUI.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import java.awt.*; import java.awt.event.*; @@ -23,7 +23,7 @@ import javax.swing.*; import javax.swing.filechooser.FileNameExtensionFilter; import java.io.*; import java.util.concurrent.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; public class AltosFlashUI extends AltosUIDialog diff --git a/altosuilib/AltosFlightInfoTableModel.java b/altosuilib/AltosFlightInfoTableModel.java index 9a430743..ca3728a5 100644 --- a/altosuilib/AltosFlightInfoTableModel.java +++ b/altosuilib/AltosFlightInfoTableModel.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import javax.swing.table.*; diff --git a/altosuilib/AltosFlightStatsTable.java b/altosuilib/AltosFlightStatsTable.java index 6171f61a..c0f1ecb6 100644 --- a/altosuilib/AltosFlightStatsTable.java +++ b/altosuilib/AltosFlightStatsTable.java @@ -15,12 +15,12 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import java.awt.*; import javax.swing.*; import java.util.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; public class AltosFlightStatsTable extends JComponent implements AltosFontListener { GridBagLayout layout; diff --git a/altosuilib/AltosGraph.java b/altosuilib/AltosGraph.java index a4334cc6..ad843f7f 100644 --- a/altosuilib/AltosGraph.java +++ b/altosuilib/AltosGraph.java @@ -15,14 +15,14 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import java.io.*; import java.util.ArrayList; import java.awt.*; import javax.swing.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; import org.jfree.ui.*; import org.jfree.chart.*; diff --git a/altosuilib/AltosGraphDataPoint.java b/altosuilib/AltosGraphDataPoint.java index e4a065c6..fcb88388 100644 --- a/altosuilib/AltosGraphDataPoint.java +++ b/altosuilib/AltosGraphDataPoint.java @@ -15,9 +15,9 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; public class AltosGraphDataPoint implements AltosUIDataPoint { diff --git a/altosuilib/AltosGraphDataSet.java b/altosuilib/AltosGraphDataSet.java index 673d1de9..3e3bf479 100644 --- a/altosuilib/AltosGraphDataSet.java +++ b/altosuilib/AltosGraphDataSet.java @@ -15,12 +15,12 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import java.lang.*; import java.io.*; import java.util.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; class AltosGraphIterator implements Iterator { AltosGraphDataSet dataSet; diff --git a/altosuilib/AltosInfoTable.java b/altosuilib/AltosInfoTable.java index 3833b37a..3509f65d 100644 --- a/altosuilib/AltosInfoTable.java +++ b/altosuilib/AltosInfoTable.java @@ -15,13 +15,13 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; public class AltosInfoTable extends JTable implements AltosFlightDisplay, HierarchyListener { private AltosFlightInfoTableModel model; diff --git a/altosuilib/AltosLed.java b/altosuilib/AltosLed.java index 07485cc4..b1dc3220 100644 --- a/altosuilib/AltosLed.java +++ b/altosuilib/AltosLed.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import javax.swing.*; diff --git a/altosuilib/AltosLights.java b/altosuilib/AltosLights.java index f445199c..34293bb4 100644 --- a/altosuilib/AltosLights.java +++ b/altosuilib/AltosLights.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import java.awt.*; import javax.swing.*; diff --git a/altosuilib/AltosPositionListener.java b/altosuilib/AltosPositionListener.java index 06ba4188..8eb4594a 100644 --- a/altosuilib/AltosPositionListener.java +++ b/altosuilib/AltosPositionListener.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; public interface AltosPositionListener { public void position_changed(int position); diff --git a/altosuilib/AltosRomconfigUI.java b/altosuilib/AltosRomconfigUI.java index 3a5188f8..33686b4f 100644 --- a/altosuilib/AltosRomconfigUI.java +++ b/altosuilib/AltosRomconfigUI.java @@ -15,12 +15,12 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import java.awt.*; import java.awt.event.*; import javax.swing.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; public class AltosRomconfigUI extends AltosUIDialog diff --git a/altosuilib/AltosScanUI.java b/altosuilib/AltosScanUI.java index 1d176e82..ee68fbc9 100644 --- a/altosuilib/AltosScanUI.java +++ b/altosuilib/AltosScanUI.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import java.awt.*; import java.awt.event.*; @@ -25,7 +25,7 @@ import java.io.*; import java.util.*; import java.text.*; import java.util.concurrent.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; class AltosScanResult { String callsign; diff --git a/altosuilib/AltosSerial.java b/altosuilib/AltosSerial.java index 85ab4654..1bf4dbbe 100644 --- a/altosuilib/AltosSerial.java +++ b/altosuilib/AltosSerial.java @@ -19,13 +19,13 @@ * Deal with TeleDongle on a serial port */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import java.io.*; import java.util.*; import java.awt.*; import javax.swing.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; import libaltosJNI.*; /* diff --git a/altosuilib/AltosSerialInUseException.java b/altosuilib/AltosSerialInUseException.java index af7edb65..cba5cac0 100644 --- a/altosuilib/AltosSerialInUseException.java +++ b/altosuilib/AltosSerialInUseException.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; public class AltosSerialInUseException extends Exception { public AltosDevice device; diff --git a/altosuilib/AltosUIAxis.java b/altosuilib/AltosUIAxis.java index 24ea23d3..8ec8a114 100644 --- a/altosuilib/AltosUIAxis.java +++ b/altosuilib/AltosUIAxis.java @@ -15,14 +15,14 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import java.io.*; import java.util.ArrayList; import java.awt.*; import javax.swing.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; import org.jfree.ui.*; import org.jfree.chart.*; diff --git a/altosuilib/AltosUIConfigure.java b/altosuilib/AltosUIConfigure.java index 89114c7e..de070473 100644 --- a/altosuilib/AltosUIConfigure.java +++ b/altosuilib/AltosUIConfigure.java @@ -15,14 +15,14 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import java.awt.*; import java.awt.event.*; import java.beans.*; import javax.swing.*; import javax.swing.event.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; class DelegatingRenderer implements ListCellRenderer { diff --git a/altosuilib/AltosUIDataMissing.java b/altosuilib/AltosUIDataMissing.java index 585289ed..44668dff 100644 --- a/altosuilib/AltosUIDataMissing.java +++ b/altosuilib/AltosUIDataMissing.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; public class AltosUIDataMissing extends Exception { public int id; diff --git a/altosuilib/AltosUIDataPoint.java b/altosuilib/AltosUIDataPoint.java index 7feb6d8e..7d905b46 100644 --- a/altosuilib/AltosUIDataPoint.java +++ b/altosuilib/AltosUIDataPoint.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; public interface AltosUIDataPoint { public abstract double x() throws AltosUIDataMissing; diff --git a/altosuilib/AltosUIDataSet.java b/altosuilib/AltosUIDataSet.java index 82809aa5..8c7bcf03 100644 --- a/altosuilib/AltosUIDataSet.java +++ b/altosuilib/AltosUIDataSet.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; public interface AltosUIDataSet { public abstract String name(); diff --git a/altosuilib/AltosUIDialog.java b/altosuilib/AltosUIDialog.java index a2625975..2fd46498 100644 --- a/altosuilib/AltosUIDialog.java +++ b/altosuilib/AltosUIDialog.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import java.awt.*; import java.awt.event.*; diff --git a/altosuilib/AltosUIEnable.java b/altosuilib/AltosUIEnable.java index 7bb80bc1..74de4bf5 100644 --- a/altosuilib/AltosUIEnable.java +++ b/altosuilib/AltosUIEnable.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import java.awt.*; import java.awt.event.*; @@ -23,7 +23,7 @@ import javax.swing.*; import java.io.*; import java.util.concurrent.*; import java.util.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; import org.jfree.ui.*; import org.jfree.chart.*; diff --git a/altosuilib/AltosUIFlightTab.java b/altosuilib/AltosUIFlightTab.java index e098b76f..1e324450 100644 --- a/altosuilib/AltosUIFlightTab.java +++ b/altosuilib/AltosUIFlightTab.java @@ -15,13 +15,13 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import java.util.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; public abstract class AltosUIFlightTab extends JComponent implements AltosFlightDisplay, HierarchyListener { public GridBagLayout layout; diff --git a/altosuilib/AltosUIFrame.java b/altosuilib/AltosUIFrame.java index 295225d6..05266f8d 100644 --- a/altosuilib/AltosUIFrame.java +++ b/altosuilib/AltosUIFrame.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import java.awt.*; import java.awt.event.*; diff --git a/altosuilib/AltosUIFreqList.java b/altosuilib/AltosUIFreqList.java index 7d49e692..c770f654 100644 --- a/altosuilib/AltosUIFreqList.java +++ b/altosuilib/AltosUIFreqList.java @@ -15,10 +15,10 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import javax.swing.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; public class AltosUIFreqList extends JComboBox { diff --git a/altosuilib/AltosUIGraph.java b/altosuilib/AltosUIGraph.java index dca12854..9c257763 100644 --- a/altosuilib/AltosUIGraph.java +++ b/altosuilib/AltosUIGraph.java @@ -15,14 +15,14 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import java.io.*; import java.util.ArrayList; import java.awt.*; import javax.swing.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; import org.jfree.ui.*; import org.jfree.chart.*; diff --git a/altosuilib/AltosUIGrapher.java b/altosuilib/AltosUIGrapher.java index a30609fd..1acf5c46 100644 --- a/altosuilib/AltosUIGrapher.java +++ b/altosuilib/AltosUIGrapher.java @@ -15,14 +15,14 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import java.io.*; import java.util.ArrayList; import java.awt.*; import javax.swing.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; import org.jfree.ui.*; import org.jfree.chart.*; diff --git a/altosuilib/AltosUIImage.java b/altosuilib/AltosUIImage.java index 1907e155..700e095f 100644 --- a/altosuilib/AltosUIImage.java +++ b/altosuilib/AltosUIImage.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import javax.swing.*; import javax.imageio.ImageIO; diff --git a/altosuilib/AltosUIIndicator.java b/altosuilib/AltosUIIndicator.java index 819123a7..a91a7e66 100644 --- a/altosuilib/AltosUIIndicator.java +++ b/altosuilib/AltosUIIndicator.java @@ -15,11 +15,11 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import java.awt.*; import javax.swing.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; public abstract class AltosUIIndicator implements AltosFontListener, AltosUnitsListener { JLabel label; diff --git a/altosuilib/AltosUILib.java b/altosuilib/AltosUILib.java index ff9fd72a..5eefdc98 100644 --- a/altosuilib/AltosUILib.java +++ b/altosuilib/AltosUILib.java @@ -15,12 +15,12 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import java.awt.*; import libaltosJNI.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; public class AltosUILib extends AltosLib { diff --git a/altosuilib/AltosUIListener.java b/altosuilib/AltosUIListener.java index 98d7452f..581711ad 100644 --- a/altosuilib/AltosUIListener.java +++ b/altosuilib/AltosUIListener.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; public interface AltosUIListener { public void ui_changed(String look_and_feel); diff --git a/altosuilib/AltosUIMapNew.java b/altosuilib/AltosUIMapNew.java index 768fd058..42c9aa7a 100644 --- a/altosuilib/AltosUIMapNew.java +++ b/altosuilib/AltosUIMapNew.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import java.awt.*; import java.awt.event.*; @@ -27,7 +27,7 @@ import java.awt.geom.*; import java.util.*; import java.util.concurrent.*; import javax.imageio.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; public class AltosUIMapNew extends JComponent implements AltosFlightDisplay, AltosMapInterface { diff --git a/altosuilib/AltosUIMapPreloadNew.java b/altosuilib/AltosUIMapPreloadNew.java index 7cdba382..b16659da 100644 --- a/altosuilib/AltosUIMapPreloadNew.java +++ b/altosuilib/AltosUIMapPreloadNew.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import java.awt.*; import java.awt.event.*; @@ -26,7 +26,7 @@ import java.text.*; import java.lang.Math; import java.net.URL; import java.net.URLConnection; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; class AltosUIMapPos extends Box { AltosUIFrame owner; diff --git a/altosuilib/AltosUIMarker.java b/altosuilib/AltosUIMarker.java index dc96357a..84130562 100644 --- a/altosuilib/AltosUIMarker.java +++ b/altosuilib/AltosUIMarker.java @@ -15,14 +15,14 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import java.io.*; import java.util.ArrayList; import java.awt.*; import javax.swing.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; import org.jfree.ui.*; import org.jfree.chart.*; diff --git a/altosuilib/AltosUIPreferences.java b/altosuilib/AltosUIPreferences.java index 5fc5f15e..84172711 100644 --- a/altosuilib/AltosUIPreferences.java +++ b/altosuilib/AltosUIPreferences.java @@ -15,13 +15,13 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import java.io.*; import java.util.*; import java.awt.Component; import javax.swing.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; public class AltosUIPreferences extends AltosPreferences { diff --git a/altosuilib/AltosUIPreferencesBackend.java b/altosuilib/AltosUIPreferencesBackend.java index d232edf7..3d212dc5 100644 --- a/altosuilib/AltosUIPreferencesBackend.java +++ b/altosuilib/AltosUIPreferencesBackend.java @@ -15,11 +15,11 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import java.io.File; import java.util.prefs.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; import javax.swing.filechooser.FileSystemView; public class AltosUIPreferencesBackend extends AltosPreferencesBackend { diff --git a/altosuilib/AltosUIRateList.java b/altosuilib/AltosUIRateList.java index 5a18b32f..8919804e 100644 --- a/altosuilib/AltosUIRateList.java +++ b/altosuilib/AltosUIRateList.java @@ -15,10 +15,10 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import javax.swing.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; public class AltosUIRateList extends JComboBox { diff --git a/altosuilib/AltosUISeries.java b/altosuilib/AltosUISeries.java index c9401be0..3a1dde03 100644 --- a/altosuilib/AltosUISeries.java +++ b/altosuilib/AltosUISeries.java @@ -15,14 +15,14 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import java.io.*; import java.util.ArrayList; import java.awt.*; import javax.swing.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; import org.jfree.ui.*; import org.jfree.chart.*; diff --git a/altosuilib/AltosUITelemetryList.java b/altosuilib/AltosUITelemetryList.java index bba14678..a2599acd 100644 --- a/altosuilib/AltosUITelemetryList.java +++ b/altosuilib/AltosUITelemetryList.java @@ -15,11 +15,11 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import java.util.*; import javax.swing.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; public class AltosUITelemetryList extends JComboBox { diff --git a/altosuilib/AltosUIUnitsIndicator.java b/altosuilib/AltosUIUnitsIndicator.java index 1b900e54..63af5725 100644 --- a/altosuilib/AltosUIUnitsIndicator.java +++ b/altosuilib/AltosUIUnitsIndicator.java @@ -15,11 +15,11 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import java.awt.*; import javax.swing.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; public abstract class AltosUIUnitsIndicator extends AltosUIIndicator { diff --git a/altosuilib/AltosUIVoltageIndicator.java b/altosuilib/AltosUIVoltageIndicator.java index ecf8bce9..852b594d 100644 --- a/altosuilib/AltosUIVoltageIndicator.java +++ b/altosuilib/AltosUIVoltageIndicator.java @@ -15,11 +15,11 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import java.awt.*; import javax.swing.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; public abstract class AltosUIVoltageIndicator extends AltosUIUnitsIndicator { diff --git a/altosuilib/AltosUSBDevice.java b/altosuilib/AltosUSBDevice.java index c93a3211..ea4f9f3c 100644 --- a/altosuilib/AltosUSBDevice.java +++ b/altosuilib/AltosUSBDevice.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import java.util.*; import libaltosJNI.*; diff --git a/altosuilib/AltosVoice.java b/altosuilib/AltosVoice.java index 1b65acdc..33a06a4e 100644 --- a/altosuilib/AltosVoice.java +++ b/altosuilib/AltosVoice.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import com.sun.speech.freetts.Voice; import com.sun.speech.freetts.VoiceManager; diff --git a/altosuilib/GrabNDrag.java b/altosuilib/GrabNDrag.java index 725bbab6..804425a3 100644 --- a/altosuilib/GrabNDrag.java +++ b/altosuilib/GrabNDrag.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import java.awt.*; import java.awt.event.*; diff --git a/altosuilib/OSXAdapter.java b/altosuilib/OSXAdapter.java index c2915081..de5d5836 100755 --- a/altosuilib/OSXAdapter.java +++ b/altosuilib/OSXAdapter.java @@ -55,7 +55,7 @@ Copyright © 2003-2007 Apple, Inc., All Rights Reserved */ -package org.altusmetrum.altosuilib_10; +package org.altusmetrum.altosuilib_11; import java.lang.reflect.*; import java.util.HashMap; diff --git a/configure.ac b/configure.ac index d5284fa1..0eff4fb1 100644 --- a/configure.ac +++ b/configure.ac @@ -31,8 +31,8 @@ AC_SUBST(ANDROID_VERSION) dnl ========================================================================== dnl Java library versions -ALTOSUILIB_VERSION=10 -ALTOSLIB_VERSION=10 +ALTOSUILIB_VERSION=11 +ALTOSLIB_VERSION=11 AC_SUBST(ALTOSLIB_VERSION) AC_DEFINE(ALTOSLIB_VERSION,$ALTOSLIB_VERSION,[Version of the AltosLib package]) diff --git a/micropeak/MicroData.java b/micropeak/MicroData.java index 60bf8ad7..e763be27 100644 --- a/micropeak/MicroData.java +++ b/micropeak/MicroData.java @@ -20,8 +20,8 @@ package org.altusmetrum.micropeak; import java.lang.*; import java.io.*; import java.util.*; -import org.altusmetrum.altoslib_10.*; -import org.altusmetrum.altosuilib_10.*; +import org.altusmetrum.altoslib_11.*; +import org.altusmetrum.altosuilib_11.*; class MicroIterator implements Iterator { int i; diff --git a/micropeak/MicroDataPoint.java b/micropeak/MicroDataPoint.java index 2775165f..fd6b4a8b 100644 --- a/micropeak/MicroDataPoint.java +++ b/micropeak/MicroDataPoint.java @@ -17,7 +17,7 @@ package org.altusmetrum.micropeak; -import org.altusmetrum.altosuilib_10.*; +import org.altusmetrum.altosuilib_11.*; public class MicroDataPoint implements AltosUIDataPoint { public double time; diff --git a/micropeak/MicroDeviceDialog.java b/micropeak/MicroDeviceDialog.java index 005e154e..8b2c747f 100644 --- a/micropeak/MicroDeviceDialog.java +++ b/micropeak/MicroDeviceDialog.java @@ -21,7 +21,7 @@ import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.*; -import org.altusmetrum.altosuilib_10.*; +import org.altusmetrum.altosuilib_11.*; public class MicroDeviceDialog extends AltosDeviceDialog { diff --git a/micropeak/MicroDownload.java b/micropeak/MicroDownload.java index 49bcaf54..9e0299b0 100644 --- a/micropeak/MicroDownload.java +++ b/micropeak/MicroDownload.java @@ -23,8 +23,8 @@ import javax.swing.*; import java.io.*; import java.util.concurrent.*; import java.util.*; -import org.altusmetrum.altoslib_10.*; -import org.altusmetrum.altosuilib_10.*; +import org.altusmetrum.altoslib_11.*; +import org.altusmetrum.altosuilib_11.*; public class MicroDownload extends AltosUIDialog implements Runnable, ActionListener, MicroSerialLog, WindowListener { MicroPeak owner; diff --git a/micropeak/MicroExport.java b/micropeak/MicroExport.java index 1c48a0d3..406f7286 100644 --- a/micropeak/MicroExport.java +++ b/micropeak/MicroExport.java @@ -23,8 +23,8 @@ import java.util.ArrayList; import java.awt.*; import javax.swing.*; import javax.swing.filechooser.FileNameExtensionFilter; -import org.altusmetrum.altoslib_10.*; -import org.altusmetrum.altosuilib_10.*; +import org.altusmetrum.altoslib_11.*; +import org.altusmetrum.altosuilib_11.*; public class MicroExport extends JFileChooser { diff --git a/micropeak/MicroFile.java b/micropeak/MicroFile.java index 0ef021a1..00c59931 100644 --- a/micropeak/MicroFile.java +++ b/micropeak/MicroFile.java @@ -19,8 +19,8 @@ package org.altusmetrum.micropeak; import java.io.*; import java.util.*; -import org.altusmetrum.altoslib_10.*; -import org.altusmetrum.altosuilib_10.*; +import org.altusmetrum.altoslib_11.*; +import org.altusmetrum.altosuilib_11.*; public class MicroFile { diff --git a/micropeak/MicroFileChooser.java b/micropeak/MicroFileChooser.java index 013d1128..394b4317 100644 --- a/micropeak/MicroFileChooser.java +++ b/micropeak/MicroFileChooser.java @@ -20,8 +20,8 @@ package org.altusmetrum.micropeak; import javax.swing.*; import javax.swing.filechooser.FileNameExtensionFilter; import java.io.*; -import org.altusmetrum.altoslib_10.*; -import org.altusmetrum.altosuilib_10.*; +import org.altusmetrum.altoslib_11.*; +import org.altusmetrum.altosuilib_11.*; public class MicroFileChooser extends JFileChooser { JFrame frame; diff --git a/micropeak/MicroFrame.java b/micropeak/MicroFrame.java index 9f3c0426..618c839e 100644 --- a/micropeak/MicroFrame.java +++ b/micropeak/MicroFrame.java @@ -21,7 +21,7 @@ import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.*; -import org.altusmetrum.altosuilib_10.*; +import org.altusmetrum.altosuilib_11.*; public class MicroFrame extends AltosUIFrame { static String[] micro_icon_names = { diff --git a/micropeak/MicroGraph.java b/micropeak/MicroGraph.java index 4941070c..bc9fb0dc 100644 --- a/micropeak/MicroGraph.java +++ b/micropeak/MicroGraph.java @@ -22,8 +22,8 @@ import java.util.ArrayList; import java.awt.*; import javax.swing.*; -import org.altusmetrum.altoslib_10.*; -import org.altusmetrum.altosuilib_10.*; +import org.altusmetrum.altoslib_11.*; +import org.altusmetrum.altosuilib_11.*; import org.jfree.ui.*; import org.jfree.chart.*; diff --git a/micropeak/MicroPeak.java b/micropeak/MicroPeak.java index fb4fe1cb..c624246f 100644 --- a/micropeak/MicroPeak.java +++ b/micropeak/MicroPeak.java @@ -23,8 +23,8 @@ import javax.swing.*; import java.io.*; import java.util.concurrent.*; import java.util.*; -import org.altusmetrum.altoslib_10.*; -import org.altusmetrum.altosuilib_10.*; +import org.altusmetrum.altoslib_11.*; +import org.altusmetrum.altosuilib_11.*; public class MicroPeak extends MicroFrame implements ActionListener, ItemListener { diff --git a/micropeak/MicroRaw.java b/micropeak/MicroRaw.java index 767ff9e1..8857958f 100644 --- a/micropeak/MicroRaw.java +++ b/micropeak/MicroRaw.java @@ -20,8 +20,8 @@ package org.altusmetrum.micropeak; import java.awt.*; import java.io.*; import javax.swing.*; -import org.altusmetrum.altoslib_10.*; -import org.altusmetrum.altosuilib_10.*; +import org.altusmetrum.altoslib_11.*; +import org.altusmetrum.altosuilib_11.*; public class MicroRaw extends JTextArea { diff --git a/micropeak/MicroSave.java b/micropeak/MicroSave.java index a38e2b46..6822a961 100644 --- a/micropeak/MicroSave.java +++ b/micropeak/MicroSave.java @@ -24,8 +24,8 @@ import javax.swing.filechooser.FileNameExtensionFilter; import java.io.*; import java.util.concurrent.*; import java.util.*; -import org.altusmetrum.altoslib_10.*; -import org.altusmetrum.altosuilib_10.*; +import org.altusmetrum.altoslib_11.*; +import org.altusmetrum.altosuilib_11.*; public class MicroSave extends JFileChooser { diff --git a/micropeak/MicroSerial.java b/micropeak/MicroSerial.java index ea68aa1a..93c40d71 100644 --- a/micropeak/MicroSerial.java +++ b/micropeak/MicroSerial.java @@ -20,7 +20,7 @@ package org.altusmetrum.micropeak; import java.util.*; import java.io.*; import libaltosJNI.*; -import org.altusmetrum.altosuilib_10.*; +import org.altusmetrum.altosuilib_11.*; public class MicroSerial extends InputStream { SWIGTYPE_p_altos_file file; diff --git a/micropeak/MicroSerialLog.java b/micropeak/MicroSerialLog.java index e8accaeb..55d759e5 100644 --- a/micropeak/MicroSerialLog.java +++ b/micropeak/MicroSerialLog.java @@ -20,7 +20,7 @@ package org.altusmetrum.micropeak; import java.util.*; import java.io.*; import libaltosJNI.*; -import org.altusmetrum.altosuilib_10.*; +import org.altusmetrum.altosuilib_11.*; public interface MicroSerialLog { diff --git a/micropeak/MicroStats.java b/micropeak/MicroStats.java index d2f80a8f..75480445 100644 --- a/micropeak/MicroStats.java +++ b/micropeak/MicroStats.java @@ -18,8 +18,8 @@ package org.altusmetrum.micropeak; import java.io.*; -import org.altusmetrum.altoslib_10.*; -import org.altusmetrum.altosuilib_10.*; +import org.altusmetrum.altoslib_11.*; +import org.altusmetrum.altosuilib_11.*; public class MicroStats { double coast_height; diff --git a/micropeak/MicroStatsTable.java b/micropeak/MicroStatsTable.java index 1adef54a..7ffae2f2 100644 --- a/micropeak/MicroStatsTable.java +++ b/micropeak/MicroStatsTable.java @@ -19,8 +19,8 @@ package org.altusmetrum.micropeak; import java.awt.*; import javax.swing.*; -import org.altusmetrum.altoslib_10.*; -import org.altusmetrum.altosuilib_10.*; +import org.altusmetrum.altoslib_11.*; +import org.altusmetrum.altosuilib_11.*; public class MicroStatsTable extends JComponent implements AltosFontListener { GridBagLayout layout; diff --git a/micropeak/MicroUSB.java b/micropeak/MicroUSB.java index 9ceae1cb..4a72ba58 100644 --- a/micropeak/MicroUSB.java +++ b/micropeak/MicroUSB.java @@ -19,8 +19,8 @@ package org.altusmetrum.micropeak; import java.util.*; import libaltosJNI.*; -import org.altusmetrum.altoslib_10.*; -import org.altusmetrum.altosuilib_10.*; +import org.altusmetrum.altoslib_11.*; +import org.altusmetrum.altosuilib_11.*; public class MicroUSB extends altos_device implements AltosDevice { diff --git a/telegps/TeleGPS.java b/telegps/TeleGPS.java index 122b1182..c97ef5e4 100644 --- a/telegps/TeleGPS.java +++ b/telegps/TeleGPS.java @@ -24,8 +24,8 @@ import java.io.*; import java.util.concurrent.*; import java.util.*; import java.text.*; -import org.altusmetrum.altoslib_10.*; -import org.altusmetrum.altosuilib_10.*; +import org.altusmetrum.altoslib_11.*; +import org.altusmetrum.altosuilib_11.*; public class TeleGPS extends AltosUIFrame diff --git a/telegps/TeleGPSConfig.java b/telegps/TeleGPSConfig.java index daef1cac..f8bb1cf1 100644 --- a/telegps/TeleGPSConfig.java +++ b/telegps/TeleGPSConfig.java @@ -22,8 +22,8 @@ import javax.swing.*; import java.io.*; import java.util.concurrent.*; import java.text.*; -import org.altusmetrum.altoslib_10.*; -import org.altusmetrum.altosuilib_10.*; +import org.altusmetrum.altoslib_11.*; +import org.altusmetrum.altosuilib_11.*; public class TeleGPSConfig implements ActionListener { diff --git a/telegps/TeleGPSConfigUI.java b/telegps/TeleGPSConfigUI.java index 075fd8bb..fcba6195 100644 --- a/telegps/TeleGPSConfigUI.java +++ b/telegps/TeleGPSConfigUI.java @@ -22,8 +22,8 @@ import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; -import org.altusmetrum.altoslib_10.*; -import org.altusmetrum.altosuilib_10.*; +import org.altusmetrum.altoslib_11.*; +import org.altusmetrum.altosuilib_11.*; public class TeleGPSConfigUI extends AltosUIDialog diff --git a/telegps/TeleGPSDisplayThread.java b/telegps/TeleGPSDisplayThread.java index e44b4fed..0daccc20 100644 --- a/telegps/TeleGPSDisplayThread.java +++ b/telegps/TeleGPSDisplayThread.java @@ -21,8 +21,8 @@ import java.awt.*; import javax.swing.*; import java.io.*; import java.text.*; -import org.altusmetrum.altoslib_10.*; -import org.altusmetrum.altosuilib_10.*; +import org.altusmetrum.altoslib_11.*; +import org.altusmetrum.altosuilib_11.*; public class TeleGPSDisplayThread extends Thread { diff --git a/telegps/TeleGPSGraphUI.java b/telegps/TeleGPSGraphUI.java index 233c8c1a..701a7e30 100644 --- a/telegps/TeleGPSGraphUI.java +++ b/telegps/TeleGPSGraphUI.java @@ -26,8 +26,8 @@ import javax.swing.*; import java.io.*; import java.util.concurrent.*; import java.util.*; -import org.altusmetrum.altoslib_10.*; -import org.altusmetrum.altosuilib_10.*; +import org.altusmetrum.altoslib_11.*; +import org.altusmetrum.altosuilib_11.*; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; diff --git a/telegps/TeleGPSInfo.java b/telegps/TeleGPSInfo.java index 590f1d1a..e17bdbaa 100644 --- a/telegps/TeleGPSInfo.java +++ b/telegps/TeleGPSInfo.java @@ -21,8 +21,8 @@ import java.util.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; -import org.altusmetrum.altoslib_10.*; -import org.altusmetrum.altosuilib_10.*; +import org.altusmetrum.altoslib_11.*; +import org.altusmetrum.altosuilib_11.*; public class TeleGPSInfo extends AltosUIFlightTab { diff --git a/telegps/TeleGPSPreferences.java b/telegps/TeleGPSPreferences.java index c03b42d3..2a5b2b69 100644 --- a/telegps/TeleGPSPreferences.java +++ b/telegps/TeleGPSPreferences.java @@ -22,7 +22,7 @@ import java.awt.event.*; import java.beans.*; import javax.swing.*; import javax.swing.event.*; -import org.altusmetrum.altosuilib_10.*; +import org.altusmetrum.altosuilib_11.*; public class TeleGPSPreferences extends AltosUIConfigure diff --git a/telegps/TeleGPSState.java b/telegps/TeleGPSState.java index 46e48fc4..a0ff5727 100644 --- a/telegps/TeleGPSState.java +++ b/telegps/TeleGPSState.java @@ -21,8 +21,8 @@ import java.util.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; -import org.altusmetrum.altoslib_10.*; -import org.altusmetrum.altosuilib_10.*; +import org.altusmetrum.altoslib_11.*; +import org.altusmetrum.altosuilib_11.*; public class TeleGPSState extends AltosUIFlightTab { diff --git a/telegps/TeleGPSStatus.java b/telegps/TeleGPSStatus.java index 81a1b305..765a8ce4 100644 --- a/telegps/TeleGPSStatus.java +++ b/telegps/TeleGPSStatus.java @@ -19,8 +19,8 @@ package org.altusmetrum.telegps; import java.awt.*; import javax.swing.*; -import org.altusmetrum.altoslib_10.*; -import org.altusmetrum.altosuilib_10.*; +import org.altusmetrum.altoslib_11.*; +import org.altusmetrum.altosuilib_11.*; public class TeleGPSStatus extends JComponent implements AltosFlightDisplay { GridBagLayout layout; diff --git a/telegps/TeleGPSStatusUpdate.java b/telegps/TeleGPSStatusUpdate.java index 6740ff70..6cd440c5 100644 --- a/telegps/TeleGPSStatusUpdate.java +++ b/telegps/TeleGPSStatusUpdate.java @@ -18,7 +18,7 @@ package org.altusmetrum.telegps; import java.awt.event.*; -import org.altusmetrum.altoslib_10.*; +import org.altusmetrum.altoslib_11.*; public class TeleGPSStatusUpdate implements ActionListener { -- cgit v1.2.3 From b13037fad0905c5933d1ff579122ba1357b02eea Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Thu, 12 May 2016 19:13:05 -0700 Subject: altoslib: Store common frequencies in library version-independent form Serializable Objects in java are very specific to the class being serialized. As we bump the name of the library on a regular basis to note API/ABI issues, this mean a saved a Serializable object in the preferences database will fail to load across library version upgrades. The saved tracker state and saved common frequencies were the only objects saved in this form; this patch adds infrastructure for writing objects in a version-independent form, and then adds support for saving frequencies in that form. Signed-off-by: Keith Packard --- altoslib/AltosFrequency.java | 13 ++++ altoslib/AltosHashSet.java | 173 +++++++++++++++++++++++++++++++++++++++++ altoslib/AltosParse.java | 8 ++ altoslib/AltosPreferences.java | 29 ++++++- altoslib/Makefile.am | 1 + 5 files changed, 220 insertions(+), 4 deletions(-) create mode 100644 altoslib/AltosHashSet.java (limited to 'altoslib') diff --git a/altoslib/AltosFrequency.java b/altoslib/AltosFrequency.java index ef46bd67..88997152 100644 --- a/altoslib/AltosFrequency.java +++ b/altoslib/AltosFrequency.java @@ -58,8 +58,21 @@ public class AltosFrequency implements Serializable { return diff < 0.010; } + public AltosHashSet hashSet() { + AltosHashSet h = new AltosHashSet(); + + h.putDouble("frequency", frequency); + h.putString("description", description); + return h; + } + public AltosFrequency(double f, String d) { frequency = f; description = d; } + + public AltosFrequency(AltosHashSet h) { + frequency = h.getDouble("frequency", 0.0); + description = h.getString("description", ""); + } } diff --git a/altoslib/AltosHashSet.java b/altoslib/AltosHashSet.java new file mode 100644 index 00000000..488d52e8 --- /dev/null +++ b/altoslib/AltosHashSet.java @@ -0,0 +1,173 @@ +/* + * Copyright © 2016 Keith Packard + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +package org.altusmetrum.altoslib_11; + +import java.io.*; +import java.util.*; +import java.text.*; + +public class AltosHashSet extends Hashtable { + private StringWriter writer; + + static private int get(StringReader reader) throws IOException { + return reader.read(); + } + + static private String get_token(StringReader reader) throws IOException { + int c = get(reader); + + if (c == -1) + return null; + + ArrayList chars = new ArrayList(); + + for (;;) { + chars.add(c); + c = get(reader); + if (c == -1 || c == ';') + break; + if (c == '\\') + c = get(reader); + } + int[] ch = new int[chars.size()]; + for (int i = 0; i < ch.length; i++) + ch[i] = chars.get(i); + return new String(ch, 0, ch.length); + } + + static private void put(StringWriter writer, int c) throws IOException { + writer.write(c); + } + + static private void put_token(StringWriter writer, String token) throws IOException { + for (int i = 0; i < token.length(); i++) { + int c = token.codePointAt(i); + + switch (c) { + case ';': + case '\\': + put(writer, '\\'); + } + put(writer, c); + } + put(writer, ';'); + } + + public String toString() { + try { + StringWriter writer = new StringWriter(); + + for (String key : keySet()) { + String value = get(key); + put_token(writer, key); + put_token(writer, value); + } + return writer.toString(); + } catch (IOException ie) { + return null; + } + } + + public void putInt(String key, int value) { + put(key, Integer.toString(value)); + } + + public int getInt(String key, int def) { + String value = get(key); + + if (value == null) + return def; + try { + return AltosParse.parse_int(value); + } catch (ParseException pe) { + return def; + } + } + + public void putDouble(String key, double value) { + put(key, AltosParse.format_double_net(value)); + } + + public double getDouble(String key, double def) { + String value = get(key); + + if (value == null) + return def; + try { + return AltosParse.parse_double_net(value); + } catch (ParseException pe) { + return def; + } + } + + public String getString(String key, String def) { + String value = get(key); + + if (value == null) + return def; + return value; + } + + public void putString(String key, String value) { + put(key, value); + } + + public AltosHashSet (String string) throws IOException { + StringReader reader = new StringReader(string); + String key, value; + + for (;;) { + key = get_token(reader); + value = get_token(reader); + if (key == null || value == null) + break; + put(key, value); + } + } + + public AltosHashSet() { + } + + static public AltosHashSet[] array(String string) throws IOException { + + if (string == null) + return null; + + StringReader reader = new StringReader(string); + ArrayList array = new ArrayList(); + String element; + + while ((element = get_token(reader)) != null) + array.add(new AltosHashSet(element)); + return array.toArray(new AltosHashSet[0]); + } + + static public String toString(AltosHashSet[] sets) throws IOException { + + if (sets == null) + return null; + + StringWriter writer = new StringWriter(); + + for (AltosHashSet h : sets) { + String element = h.toString(); + put_token(writer, element); + } + return writer.toString(); + } +} diff --git a/altoslib/AltosParse.java b/altoslib/AltosParse.java index ae88182d..12499b7b 100644 --- a/altoslib/AltosParse.java +++ b/altoslib/AltosParse.java @@ -53,6 +53,10 @@ public class AltosParse { } } + public static String format_double_locale(double number) { + return nf_locale.format(number); + } + public static double parse_double_net(String str) throws ParseException { try { return nf_net.parse(str.trim()).doubleValue(); @@ -61,6 +65,10 @@ public class AltosParse { } } + public static String format_double_net(double number) { + return nf_net.format(number); + } + public static double parse_coord(String coord) throws ParseException { String[] dsf = coord.split("\\D+"); diff --git a/altoslib/AltosPreferences.java b/altoslib/AltosPreferences.java index b853e944..f8101ce6 100644 --- a/altoslib/AltosPreferences.java +++ b/altoslib/AltosPreferences.java @@ -116,7 +116,7 @@ public class AltosPreferences { public final static String frequency_count = "COUNT"; public final static String frequency_format = "FREQUENCY-%d"; public final static String description_format = "DESCRIPTION-%d"; - public final static String frequenciesPreference = "FREQUENCIES"; + public final static String frequenciesPreference = "FREQUENCIES-1"; /* Units preference */ @@ -136,7 +136,17 @@ public class AltosPreferences { AltosFrequency[] frequencies = null; - frequencies = (AltosFrequency[]) backend.getSerializable(frequenciesPreference, null); + try { + AltosHashSet[] sets = AltosHashSet.array(backend.getString(frequenciesPreference,null)); + if (sets != null) { + frequencies = new AltosFrequency[sets.length]; + for (int i = 0; i < frequencies.length; i++) + frequencies[i] = new AltosFrequency(sets[i]); + } + + } catch (IOException ie) { + frequencies = null; + } if (frequencies == null) { if (backend.nodeExists(common_frequencies_node_name)) { @@ -165,6 +175,17 @@ public class AltosPreferences { return frequencies; } + public static void save_common_frequencies() { + try { + AltosHashSet[] sets = new AltosHashSet[common_frequencies.length]; + for (int i = 0; i < sets.length; i++) + sets[i] = common_frequencies[i].hashSet(); + backend.putString(frequenciesPreference, AltosHashSet.toString(sets)); + } catch (IOException ie) { + } + flush_preferences(); + } + public static int launcher_serial; public static int launcher_channel; @@ -512,8 +533,8 @@ public class AltosPreferences { public static void set_common_frequencies(AltosFrequency[] frequencies) { synchronized(backend) { common_frequencies = frequencies; - backend.putSerializable(frequenciesPreference, frequencies); - flush_preferences(); + + save_common_frequencies(); } } diff --git a/altoslib/Makefile.am b/altoslib/Makefile.am index f3219839..512e1cca 100644 --- a/altoslib/Makefile.am +++ b/altoslib/Makefile.am @@ -160,6 +160,7 @@ altoslib_JAVA = \ AltosMapLoaderListener.java \ AltosMapLoader.java \ AltosMapTypeListener.java \ + AltosHashSet.java \ AltosVersion.java JAR=altoslib_$(ALTOSLIB_VERSION).jar -- cgit v1.2.3 From b1a90adac9f6e2a609ce1ccd6749462bb5c9adbe Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Thu, 12 May 2016 23:33:53 -0700 Subject: altoslib: Store saved state in version-independent format Use AltosHashSet for AltosState so that AltosDroid doesn't lose tracker information when the application is upgraded. Signed-off-by: Keith Packard --- .../src/org/altusmetrum/AltosDroid/AltosDroid.java | 8 +- .../altusmetrum/AltosDroid/TelemetryService.java | 6 +- altoslib/AltosAccel.java | 2 +- altoslib/AltosCompanion.java | 28 +- altoslib/AltosConfigData.java | 2 +- altoslib/AltosFrequency.java | 10 +- altoslib/AltosGPS.java | 63 +++- altoslib/AltosGPSSat.java | 62 +++- altoslib/AltosGreatCircle.java | 29 +- altoslib/AltosHashSet.java | 183 ++++++++-- altoslib/AltosHashable.java | 25 ++ altoslib/AltosIMU.java | 37 +- altoslib/AltosLib.java | 7 +- altoslib/AltosListenerState.java | 2 +- altoslib/AltosMag.java | 28 +- altoslib/AltosMs5607.java | 44 ++- altoslib/AltosParse.java | 8 + altoslib/AltosPreferences.java | 50 +-- altoslib/AltosPreferencesBackend.java | 40 +-- altoslib/AltosPyro.java | 2 +- altoslib/AltosQuaternion.java | 22 +- altoslib/AltosRotation.java | 20 +- altoslib/AltosSavedState.java | 2 +- altoslib/AltosState.java | 398 ++++++++++++++++++++- altoslib/Makefile.am | 1 + altosui/AltosLaunch.java | 4 +- 26 files changed, 965 insertions(+), 118 deletions(-) create mode 100644 altoslib/AltosHashable.java (limited to 'altoslib') diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java index 385348ea..a62bf7fe 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java @@ -825,9 +825,9 @@ public class AltosDroid extends FragmentActivity implements AltosUnitsListener, } } - private void disconnectDevice() { + private void disconnectDevice(boolean remember) { try { - mService.send(Message.obtain(null, TelemetryService.MSG_DISCONNECT, null)); + mService.send(Message.obtain(null, TelemetryService.MSG_DISCONNECT, (Boolean) remember)); } catch (RemoteException e) { } } @@ -978,11 +978,11 @@ public class AltosDroid extends FragmentActivity implements AltosUnitsListener, case R.id.disconnect: /* Disconnect the device */ - disconnectDevice(); + disconnectDevice(false); return true; case R.id.quit: AltosDebug.debug("R.id.quit"); - disconnectDevice(); + disconnectDevice(true); finish(); return true; case R.id.setup: diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java index 6519a114..dc39c899 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java @@ -129,7 +129,8 @@ public class TelemetryService extends Service implements AltosIdleMonitorListene case MSG_DISCONNECT: AltosDebug.debug("Disconnect command received"); s.address = null; - AltosDroidPreferences.set_active_device(null); + if (!(Boolean) msg.obj) + AltosDroidPreferences.set_active_device(null); s.disconnect(true); break; case MSG_DELETE_SERIAL: @@ -613,6 +614,8 @@ public class TelemetryService extends Service implements AltosIdleMonitorListene telemetry_state.latest_serial = AltosPreferences.latest_state(); + AltosDebug.debug("latest serial %d\n", telemetry_state.latest_serial); + for (int serial : serials) { AltosState saved_state = AltosPreferences.state(serial); if (saved_state != null) { @@ -629,6 +632,7 @@ public class TelemetryService extends Service implements AltosIdleMonitorListene telemetry_state.states.put(serial, saved_state); } else { AltosDebug.debug("Failed to recover state for %d", serial); + AltosPreferences.remove_state(serial); } } } diff --git a/altoslib/AltosAccel.java b/altoslib/AltosAccel.java index 00f3aefc..c6a2da11 100644 --- a/altoslib/AltosAccel.java +++ b/altoslib/AltosAccel.java @@ -19,7 +19,7 @@ package org.altusmetrum.altoslib_11; import java.io.*; -public class AltosAccel extends AltosUnits implements Serializable { +public class AltosAccel extends AltosUnits { public double value(double v, boolean imperial_units) { if (imperial_units) diff --git a/altoslib/AltosCompanion.java b/altoslib/AltosCompanion.java index 381b0a25..6f18d93e 100644 --- a/altoslib/AltosCompanion.java +++ b/altoslib/AltosCompanion.java @@ -19,7 +19,7 @@ package org.altusmetrum.altoslib_11; import java.io.*; -public class AltosCompanion implements Serializable { +public class AltosCompanion implements AltosHashable { public final static int board_id_telescience = 0x0a; public final static int MAX_CHANNELS = 12; @@ -37,4 +37,30 @@ public class AltosCompanion implements Serializable { channels = MAX_CHANNELS; companion_data = new int[channels]; } + + public AltosHashSet hashSet() { + AltosHashSet h = new AltosHashSet(); + + h.putInt("tick", tick); + h.putInt("board_id", board_id); + h.putInt("update_period", update_period); + h.putInt("channels", channels); + h.putIntArray("companion_data", companion_data); + return h; + } + + public AltosCompanion(AltosHashSet h) { + tick = h.getInt("tick", tick); + board_id = h.getInt("board_id", board_id); + update_period = h.getInt("update_period", update_period); + channels = h.getInt("channels", channels); + companion_data = h.getIntArray("companion_data", new int[channels]); + } + + public static AltosCompanion fromHashSet(AltosHashSet h, AltosCompanion def) { + if (h == null) + return def; + + return new AltosCompanion(h); + } } diff --git a/altoslib/AltosConfigData.java b/altoslib/AltosConfigData.java index aa46f118..ce430d7a 100644 --- a/altoslib/AltosConfigData.java +++ b/altoslib/AltosConfigData.java @@ -204,7 +204,7 @@ public class AltosConfigData implements Iterable { for (int i = 0; i < parts.length; i++) { try { - r[i] = AltosLib.fromdec(parts[i]); + r[i] = (int) AltosLib.fromdec(parts[i]); } catch (NumberFormatException n) { r[i] = 0; } diff --git a/altoslib/AltosFrequency.java b/altoslib/AltosFrequency.java index 88997152..f9aa6de6 100644 --- a/altoslib/AltosFrequency.java +++ b/altoslib/AltosFrequency.java @@ -21,7 +21,7 @@ import java.io.*; import java.util.*; import java.text.*; -public class AltosFrequency implements Serializable { +public class AltosFrequency { public double frequency; public String description; @@ -71,8 +71,14 @@ public class AltosFrequency implements Serializable { description = d; } - public AltosFrequency(AltosHashSet h) { + private AltosFrequency(AltosHashSet h) { frequency = h.getDouble("frequency", 0.0); description = h.getString("description", ""); } + + public static AltosFrequency fromHashSet(AltosHashSet h, AltosFrequency def) { + if (h == null) + return def; + return new AltosFrequency(h); + } } diff --git a/altoslib/AltosGPS.java b/altoslib/AltosGPS.java index 6f7c40b7..371fd7bf 100644 --- a/altoslib/AltosGPS.java +++ b/altoslib/AltosGPS.java @@ -21,7 +21,7 @@ import java.text.*; import java.util.concurrent.*; import java.io.*; -public class AltosGPS implements Cloneable, Serializable { +public class AltosGPS implements Cloneable, AltosHashable { public final static int MISSING = AltosLib.MISSING; @@ -388,4 +388,65 @@ public class AltosGPS implements Cloneable, Serializable { break; } } + + public AltosHashSet hashSet() { + AltosHashSet h = new AltosHashSet(); + + h.putInt("nsat", nsat); + h.putBoolean("locked", locked); + h.putBoolean("connected", connected); + h.putDouble("lat", lat); + h.putDouble("lon", lon); + h.putDouble("alt", alt); + h.putInt("year", year); + h.putInt("month", month); + h.putInt("day", day); + h.putInt("hour", hour); + h.putInt("minute", minute); + h.putInt("second", second); + + h.putDouble("ground_speed", ground_speed); + h.putInt("course", course); + h.putDouble("climb_rate", climb_rate); + h.putDouble("pdop", pdop); + h.putDouble("hdop", hdop); + h.putDouble("vdop", vdop); + h.putDouble("h_error", h_error); + h.putDouble("v_error", v_error); + h.putString("cc_gps_sat", AltosGPSSat.toString(cc_gps_sat)); + return h; + } + + public AltosGPS(AltosHashSet h) { + init(); + nsat = h.getInt("nsat", nsat); + locked = h.getBoolean("locked", locked); + connected = h.getBoolean("connected", connected); + lat = h.getDouble("lat", lat); + lon = h.getDouble("lon", lon); + alt = h.getDouble("alt", alt); + year = h.getInt("year", year); + month = h.getInt("month", month); + day = h.getInt("day", day); + hour = h.getInt("hour", hour); + minute = h.getInt("minute", minute); + second = h.getInt("second", second); + + ground_speed = h.getDouble("ground_speed", ground_speed); + course = h.getInt("course", course); + climb_rate = h.getDouble("climb_rate", climb_rate); + pdop = h.getDouble("pdop", pdop); + hdop = h.getDouble("hdop", hdop); + vdop = h.getDouble("vdop", vdop); + h_error = h.getDouble("h_error", h_error); + v_error = h.getDouble("v_error", v_error); + cc_gps_sat = AltosGPSSat.array(h.getString("cc_gps_sat", null)); + } + + public static AltosGPS fromHashSet(AltosHashSet h, AltosGPS def) { + if (h == null) + return def; + + return new AltosGPS(h); + } } diff --git a/altoslib/AltosGPSSat.java b/altoslib/AltosGPSSat.java index abde1c0c..ad7a8647 100644 --- a/altoslib/AltosGPSSat.java +++ b/altoslib/AltosGPSSat.java @@ -16,11 +16,13 @@ */ package org.altusmetrum.altoslib_11; + +import java.io.*; import java.text.*; +import java.util.*; import java.util.concurrent.*; -import java.io.*; -public class AltosGPSSat implements Serializable { +public class AltosGPSSat { public int svid; public int c_n0; @@ -31,5 +33,61 @@ public class AltosGPSSat implements Serializable { public AltosGPSSat() { } + + public AltosHashSet hashSet() { + AltosHashSet h = new AltosHashSet(); + h.putInt("svid", svid); + h.putInt("c_n0", c_n0); + return h; + } + + private AltosGPSSat(AltosHashSet h) { + svid = h.getInt("svid", 0); + c_n0 = h.getInt("c_n0", 0); + } + + static public AltosGPSSat fromHashSet(AltosHashSet h, AltosGPSSat def) { + if (h == null) + return def; + return new AltosGPSSat(h); + } + + static public AltosGPSSat[] array(String string) { + + if (string == null) + return null; + + try { + StringReader reader = new StringReader(string); + ArrayList array = new ArrayList(); + String element; + + while ((element = AltosHashSet.get_token(reader)) != null) { + AltosGPSSat sat = AltosGPSSat.fromHashSet(AltosHashSet.fromString(element), null); + if (sat != null) + array.add(sat); + } + return array.toArray(new AltosGPSSat[0]); + } catch (IOException ie) { + return null; + } + } + + public static String toString(AltosGPSSat[] sats) { + if (sats == null) + return null; + + try { + StringWriter writer = new StringWriter(); + + for (AltosGPSSat g : sats) { + String element = g.hashSet().toString(); + AltosHashSet.put_token(writer, element); + } + return writer.toString(); + } catch (IOException ie) { + return null; + } + } } diff --git a/altoslib/AltosGreatCircle.java b/altoslib/AltosGreatCircle.java index 03e05678..9ec808a5 100644 --- a/altoslib/AltosGreatCircle.java +++ b/altoslib/AltosGreatCircle.java @@ -20,7 +20,7 @@ package org.altusmetrum.altoslib_11; import java.lang.Math; import java.io.*; -public class AltosGreatCircle implements Cloneable, Serializable { +public class AltosGreatCircle implements Cloneable, AltosHashable { public double distance; public double bearing; public double range; @@ -103,4 +103,31 @@ public class AltosGreatCircle implements Cloneable, Serializable { range = 0; elevation = 0; } + + public AltosHashSet hashSet() { + AltosHashSet h = new AltosHashSet(); + + h.putDouble("distance", distance); + h.putDouble("bearing", bearing); + h.putDouble("range", range); + h.putDouble("elevation", elevation); + + return h; + } + + public AltosGreatCircle(AltosHashSet h) { + this(); + + distance = h.getDouble("distance", distance); + bearing = h.getDouble("bearing", bearing); + range = h.getDouble("range", range); + elevation = h.getDouble("elevation", elevation); + } + + public static AltosGreatCircle fromHashSet(AltosHashSet h, AltosGreatCircle def) { + if (h == null) + return def; + + return new AltosGreatCircle(h); + } } diff --git a/altoslib/AltosHashSet.java b/altoslib/AltosHashSet.java index 488d52e8..4b89f8cc 100644 --- a/altoslib/AltosHashSet.java +++ b/altoslib/AltosHashSet.java @@ -22,13 +22,11 @@ import java.util.*; import java.text.*; public class AltosHashSet extends Hashtable { - private StringWriter writer; - static private int get(StringReader reader) throws IOException { return reader.read(); } - static private String get_token(StringReader reader) throws IOException { + static public String get_token(StringReader reader) throws IOException { int c = get(reader); if (c == -1) @@ -54,7 +52,7 @@ public class AltosHashSet extends Hashtable { writer.write(c); } - static private void put_token(StringWriter writer, String token) throws IOException { + static public void put_token(StringWriter writer, String token) throws IOException { for (int i = 0; i < token.length(); i++) { int c = token.codePointAt(i); @@ -83,6 +81,22 @@ public class AltosHashSet extends Hashtable { } } + public void putBoolean(String key, boolean value) { + put(key, value ? "t" : "f"); + } + + public boolean getBoolean(String key, boolean def) { + String value = get(key); + + if (value == null) + return def; + if (value.equals("t")) + return true; + if (value.equals("f")) + return false; + return def; + } + public void putInt(String key, int value) { put(key, Integer.toString(value)); } @@ -99,6 +113,59 @@ public class AltosHashSet extends Hashtable { } } + public void putIntArray(String key, int value[]) { + if (value == null) + return; + + StringWriter writer = new StringWriter(); + + try { + for (int i = 0; i < value.length; i++) + put_token(writer, Integer.toString(value[i])); + put(key, writer.toString()); + } catch (IOException ie) { + } + } + + public int[] getIntArray(String key, int[] def) { + String value = get(key); + + if (value == null) + return def; + try { + StringReader reader = new StringReader(value); + ArrayList array = new ArrayList(); + String elt; + + while ((elt = get_token(reader)) != null) + array.add(AltosParse.parse_int(elt)); + int[] ret = new int[array.size()]; + for (int i = 0; i < ret.length; i++) + ret[i] = array.get(i); + return ret; + } catch (ParseException pe) { + return def; + } catch (IOException ie) { + return def; + } + } + + public void putLong(String key, long value) { + put(key, Long.toString(value)); + } + + public long getLong(String key, long def) { + String value = get(key); + + if (value == null) + return def; + try { + return AltosParse.parse_long(value); + } catch (ParseException pe) { + return def; + } + } + public void putDouble(String key, double value) { put(key, AltosParse.format_double_net(value)); } @@ -115,6 +182,43 @@ public class AltosHashSet extends Hashtable { } } + public void putDoubleArray(String key, double value[]) { + if (value == null) + return; + + StringWriter writer = new StringWriter(); + + try { + for (int i = 0; i < value.length; i++) + put_token(writer, AltosParse.format_double_net(value[i])); + put(key, writer.toString()); + } catch (IOException ie) { + } + } + + public double[] getDoubleArray(String key, double[] def) { + String value = get(key); + + if (value == null) + return def; + try { + StringReader reader = new StringReader(value); + ArrayList array = new ArrayList(); + String elt; + + while ((elt = get_token(reader)) != null) + array.add(AltosParse.parse_double_net(elt)); + double[] ret = new double[array.size()]; + for (int i = 0; i < ret.length; i++) + ret[i] = array.get(i); + return ret; + } catch (ParseException pe) { + return def; + } catch (IOException ie) { + return def; + } + } + public String getString(String key, String def) { String value = get(key); @@ -124,10 +228,34 @@ public class AltosHashSet extends Hashtable { } public void putString(String key, String value) { - put(key, value); + if (value != null) + put(key, value); } - public AltosHashSet (String string) throws IOException { + public AltosHashSet getHash(String key) { + String value = get(key); + + if (value == null) + return null; + try { + return new AltosHashSet(value); + } catch (IOException ie) { + return null; + } + } + + public void putHash(String key, AltosHashSet h) { + put(key, h.toString()); + } + + public void putHashable(String key, AltosHashable h) { + if (h == null) + return; + + put(key, h.hashSet().toString()); + } + + private AltosHashSet (String string) throws IOException { StringReader reader = new StringReader(string); String key, value; @@ -143,31 +271,46 @@ public class AltosHashSet extends Hashtable { public AltosHashSet() { } - static public AltosHashSet[] array(String string) throws IOException { + static public AltosHashSet fromString(String string) { + try { + return new AltosHashSet(string); + } catch (IOException ie) { + return null; + } + } + + static public AltosHashSet[] array(String string) { if (string == null) return null; - StringReader reader = new StringReader(string); - ArrayList array = new ArrayList(); - String element; + try { + StringReader reader = new StringReader(string); + ArrayList array = new ArrayList(); + String element; - while ((element = get_token(reader)) != null) - array.add(new AltosHashSet(element)); - return array.toArray(new AltosHashSet[0]); + while ((element = get_token(reader)) != null) + array.add(new AltosHashSet(element)); + return array.toArray(new AltosHashSet[0]); + } catch (IOException ie) { + return null; + } } - static public String toString(AltosHashSet[] sets) throws IOException { - + static public String toString(AltosHashSet[] sets) { if (sets == null) return null; - StringWriter writer = new StringWriter(); + try { + StringWriter writer = new StringWriter(); - for (AltosHashSet h : sets) { - String element = h.toString(); - put_token(writer, element); + for (AltosHashSet h : sets) { + String element = h.toString(); + put_token(writer, element); + } + return writer.toString(); + } catch (IOException ie) { + return null; } - return writer.toString(); } } diff --git a/altoslib/AltosHashable.java b/altoslib/AltosHashable.java new file mode 100644 index 00000000..e228543d --- /dev/null +++ b/altoslib/AltosHashable.java @@ -0,0 +1,25 @@ +/* + * Copyright © 2016 Keith Packard + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +package org.altusmetrum.altoslib_11; + +import java.io.*; + +public interface AltosHashable { + + public AltosHashSet hashSet(); +} diff --git a/altoslib/AltosIMU.java b/altoslib/AltosIMU.java index 26d11591..df6c4ed3 100644 --- a/altoslib/AltosIMU.java +++ b/altoslib/AltosIMU.java @@ -20,7 +20,7 @@ package org.altusmetrum.altoslib_11; import java.util.concurrent.*; import java.io.*; -public class AltosIMU implements Cloneable, Serializable { +public class AltosIMU implements Cloneable, AltosHashable { public int accel_along; public int accel_across; public int accel_through; @@ -29,13 +29,13 @@ public class AltosIMU implements Cloneable, Serializable { public int gyro_pitch; public int gyro_yaw; - public static double counts_per_g = 2048.0; + public static final double counts_per_g = 2048.0; public static double convert_accel(double counts) { return counts / counts_per_g * (-AltosConvert.GRAVITATIONAL_ACCELERATION); } - public static double counts_per_degsec = 16.4; + public static final double counts_per_degsec = 16.4; public static double convert_gyro(double counts) { return counts / counts_per_degsec; @@ -115,4 +115,35 @@ public class AltosIMU implements Cloneable, Serializable { break; } } + + public AltosIMU (AltosHashSet h) { + this(); + + accel_along = h.getInt("accel_along", accel_along); + accel_across = h.getInt("accel_across", accel_across); + accel_through = h.getInt("accel_through", accel_through); + + gyro_roll = h.getInt("gyro_roll", gyro_roll); + gyro_pitch = h.getInt("gyro_pitch", gyro_pitch); + gyro_yaw = h.getInt("gyro_yaw", gyro_yaw); + } + + static public AltosIMU fromHashSet(AltosHashSet h, AltosIMU def) { + if (h == null) + return def; + return new AltosIMU(h); + } + + public AltosHashSet hashSet() { + AltosHashSet h = new AltosHashSet(); + + h.putInt("accel_along", accel_along); + h.putInt("accel_across", accel_across); + h.putInt("accel_through", accel_through); + + h.putInt("gyro_roll", gyro_roll); + h.putInt("gyro_pitch", gyro_pitch); + h.putInt("gyro_yaw", gyro_yaw); + return h; + } } diff --git a/altoslib/AltosLib.java b/altoslib/AltosLib.java index 103052cb..044caf8d 100644 --- a/altoslib/AltosLib.java +++ b/altoslib/AltosLib.java @@ -493,9 +493,10 @@ public class AltosLib { return r; } - public static int fromdec(String s) throws NumberFormatException { - int c, v = 0; - int sign = 1; + public static long fromdec(String s) throws NumberFormatException { + int c; + long v = 0; + long sign = 1; for (int i = 0; i < s.length(); i++) { c = s.charAt(i); if (i == 0 && c == '-') { diff --git a/altoslib/AltosListenerState.java b/altoslib/AltosListenerState.java index f5d1c0cb..7d9ec2a4 100644 --- a/altoslib/AltosListenerState.java +++ b/altoslib/AltosListenerState.java @@ -19,7 +19,7 @@ package org.altusmetrum.altoslib_11; import java.io.*; -public class AltosListenerState implements Serializable { +public class AltosListenerState { public int crc_errors; public double battery; public boolean running; diff --git a/altoslib/AltosMag.java b/altoslib/AltosMag.java index 3e82f499..c350ae46 100644 --- a/altoslib/AltosMag.java +++ b/altoslib/AltosMag.java @@ -20,12 +20,12 @@ package org.altusmetrum.altoslib_11; import java.util.concurrent.*; import java.io.*; -public class AltosMag implements Cloneable, Serializable { +public class AltosMag implements Cloneable, AltosHashable { public int along; public int across; public int through; - public static double counts_per_gauss = 1090; + public static final double counts_per_gauss = 1090; public static double convert_gauss(double counts) { return counts / counts_per_gauss; @@ -93,4 +93,28 @@ public class AltosMag implements Cloneable, Serializable { break; } } + + public AltosHashSet hashSet() { + AltosHashSet h = new AltosHashSet(); + + h.putInt("along", along); + h.putInt("across", across); + h.putInt("through", through); + return h; + } + + public AltosMag(AltosHashSet h) { + this(); + + along = h.getInt("along", along); + across = h.getInt("across", across); + through = h.getInt("through", through); + } + + public static AltosMag fromHashSet(AltosHashSet h, AltosMag def) { + if (h == null) + return def; + + return new AltosMag(h); + } } diff --git a/altoslib/AltosMs5607.java b/altoslib/AltosMs5607.java index 4f5549a7..88a97828 100644 --- a/altoslib/AltosMs5607.java +++ b/altoslib/AltosMs5607.java @@ -20,7 +20,7 @@ package org.altusmetrum.altoslib_11; import java.util.concurrent.*; import java.io.*; -public class AltosMs5607 implements Serializable { +public class AltosMs5607 implements AltosHashable { public int reserved; public int sens; public int off; @@ -166,4 +166,46 @@ public class AltosMs5607 implements Serializable { } convert(); } + + public AltosHashSet hashSet() { + AltosHashSet h = new AltosHashSet(); + + h.putInt("reserved", reserved); + h.putInt("sens", sens); + h.putInt("off", off); + h.putInt("tcs", tcs); + h.putInt("tco", tco); + h.putInt("tref", tref); + h.putInt("tempsens", tempsens); + h.putInt("crc", crc); + h.putInt("raw_pres", raw_pres); + h.putInt("raw_temp", raw_temp); + h.putInt("pa", pa); + h.putInt("cc", cc); + return h; + } + + public AltosMs5607(AltosHashSet h) { + this(); + + reserved = h.getInt("reserved", reserved); + sens = h.getInt("sens", sens); + off = h.getInt("off", off); + tcs = h.getInt("tcs", tcs); + tco = h.getInt("tco", tco); + tref = h.getInt("tref", tref); + tempsens = h.getInt("tempsens", tempsens); + crc = h.getInt("crc", crc); + raw_pres = h.getInt("raw_pres", raw_pres); + raw_temp = h.getInt("raw_temp", raw_temp); + pa = h.getInt("pa", pa); + cc = h.getInt("cc", cc); + } + + public static AltosMs5607 fromHashSet(AltosHashSet h, AltosMs5607 def) { + if (h == null) + return def; + + return new AltosMs5607(h); + } } diff --git a/altoslib/AltosParse.java b/altoslib/AltosParse.java index 12499b7b..fbd049ae 100644 --- a/altoslib/AltosParse.java +++ b/altoslib/AltosParse.java @@ -26,6 +26,14 @@ public class AltosParse { } public static int parse_int(String v) throws ParseException { + try { + return (int) AltosLib.fromdec(v); + } catch (NumberFormatException e) { + throw new ParseException("error parsing int " + v, 0); + } + } + + public static long parse_long(String v) throws ParseException { try { return AltosLib.fromdec(v); } catch (NumberFormatException e) { diff --git a/altoslib/AltosPreferences.java b/altoslib/AltosPreferences.java index f8101ce6..3f8e7a07 100644 --- a/altoslib/AltosPreferences.java +++ b/altoslib/AltosPreferences.java @@ -136,16 +136,16 @@ public class AltosPreferences { AltosFrequency[] frequencies = null; - try { - AltosHashSet[] sets = AltosHashSet.array(backend.getString(frequenciesPreference,null)); - if (sets != null) { - frequencies = new AltosFrequency[sets.length]; - for (int i = 0; i < frequencies.length; i++) - frequencies[i] = new AltosFrequency(sets[i]); + AltosHashSet[] sets = AltosHashSet.array(backend.getString(frequenciesPreference,null)); + if (sets != null) { + ArrayList freqs = new ArrayList(); + + for (int i = 0; i < sets.length; i++) { + AltosFrequency f = AltosFrequency.fromHashSet(sets[i], null); + if (f != null) + freqs.add(f); } - - } catch (IOException ie) { - frequencies = null; + frequencies = freqs.toArray(new AltosFrequency[0]); } if (frequencies == null) { @@ -153,14 +153,16 @@ public class AltosPreferences { AltosPreferencesBackend node = backend.node(common_frequencies_node_name); int count = node.getInt(frequency_count, 0); - frequencies = new AltosFrequency[count]; - for (int i = 0; i < count; i++) { - double frequency; - String description; + if (count > 0) { + frequencies = new AltosFrequency[count]; + for (int i = 0; i < count; i++) { + double frequency; + String description; - frequency = node.getDouble(String.format(frequency_format, i), 0.0); - description = node.getString(String.format(description_format, i), null); - frequencies[i] = new AltosFrequency(frequency, description); + frequency = node.getDouble(String.format(frequency_format, i), 0.0); + description = node.getString(String.format(description_format, i), null); + frequencies[i] = new AltosFrequency(frequency, description); + } } } } @@ -176,13 +178,10 @@ public class AltosPreferences { } public static void save_common_frequencies() { - try { - AltosHashSet[] sets = new AltosHashSet[common_frequencies.length]; - for (int i = 0; i < sets.length; i++) - sets[i] = common_frequencies[i].hashSet(); - backend.putString(frequenciesPreference, AltosHashSet.toString(sets)); - } catch (IOException ie) { - } + AltosHashSet[] sets = new AltosHashSet[common_frequencies.length]; + for (int i = 0; i < sets.length; i++) + sets[i] = common_frequencies[i].hashSet(); + backend.putString(frequenciesPreference, AltosHashSet.toString(sets)); flush_preferences(); } @@ -374,7 +373,7 @@ public class AltosPreferences { public static void set_state(AltosState state) { synchronized(backend) { - backend.putSerializable(String.format(statePreferenceFormat, state.serial), state); + backend.putHashSet(String.format(statePreferenceFormat, state.serial), state.hashSet()); backend.putInt(statePreferenceLatest, state.serial); flush_preferences(); } @@ -399,6 +398,7 @@ public class AltosPreferences { public static void remove_state(int serial) { synchronized(backend) { backend.remove(String.format(statePreferenceFormat, serial)); + flush_preferences(); } } @@ -413,7 +413,7 @@ public class AltosPreferences { public static AltosState state(int serial) { synchronized(backend) { try { - return (AltosState) backend.getSerializable(String.format(statePreferenceFormat, serial), null); + return AltosState.fromHashSet(backend.getHashSet(String.format(statePreferenceFormat, serial))); } catch (Exception e) { return null; } diff --git a/altoslib/AltosPreferencesBackend.java b/altoslib/AltosPreferencesBackend.java index 1f925914..9131ad39 100644 --- a/altoslib/AltosPreferencesBackend.java +++ b/altoslib/AltosPreferencesBackend.java @@ -38,40 +38,16 @@ public abstract class AltosPreferencesBackend { public abstract byte[] getBytes(String key, byte[] def); public abstract void putBytes(String key, byte[] value); - public Serializable getSerializable(String key, Serializable def) { - byte[] bytes = null; - - bytes = getBytes(key, null); - if (bytes == null) - return def; - - ByteArrayInputStream bais = new ByteArrayInputStream(bytes); - - try { - ObjectInputStream ois = new ObjectInputStream(bais); - Serializable object = (Serializable) ois.readObject(); - return object; - } catch (IOException ie) { - debug("IO exception %s\n", ie.toString()); - } catch (ClassNotFoundException ce) { - debug("ClassNotFoundException %s\n", ce.toString()); - } - return def; - } - - public void putSerializable(String key, Serializable object) { - ByteArrayOutputStream baos = new ByteArrayOutputStream(); + public AltosHashSet getHashSet(String key) { + String value = getString(key, null); - try { - ObjectOutputStream oos = new ObjectOutputStream(baos); - - oos.writeObject(object); - byte[] bytes = baos.toByteArray(); + if (value == null) + return null; + return AltosHashSet.fromString(value); + } - putBytes(key, bytes); - } catch (IOException ie) { - debug("set_state failed %s\n", ie.toString()); - } + public void putHashSet(String key, AltosHashSet h) { + putString(key, h.toString()); } public abstract boolean nodeExists(String key); diff --git a/altoslib/AltosPyro.java b/altoslib/AltosPyro.java index a1a903fd..c948ce21 100644 --- a/altoslib/AltosPyro.java +++ b/altoslib/AltosPyro.java @@ -277,7 +277,7 @@ public class AltosPyro { int value = 0; ++i; try { - value = AltosLib.fromdec(tokens[i]); + value = (int) AltosLib.fromdec(tokens[i]); } catch (NumberFormatException n) { throw new ParseException(String.format("Invalid pyro value \"%s\"", tokens[i]), i); diff --git a/altoslib/AltosQuaternion.java b/altoslib/AltosQuaternion.java index 351685f8..af9eb475 100644 --- a/altoslib/AltosQuaternion.java +++ b/altoslib/AltosQuaternion.java @@ -17,7 +17,7 @@ package org.altusmetrum.altoslib_11; -public class AltosQuaternion { +public class AltosQuaternion implements AltosHashable { double r; /* real bit */ double x, y, z; /* imaginary bits */ @@ -147,4 +147,24 @@ public class AltosQuaternion { c_x * s_y * c_z + s_x * c_y * s_z, c_x * c_y * s_z - s_x * s_y * c_z); } + + public AltosHashSet hashSet() { + AltosHashSet h = new AltosHashSet(); + + h.putDouble("r", r); + h.putDouble("x", x); + h.putDouble("y", y); + h.putDouble("z", z); + return h; + } + + public AltosQuaternion(AltosHashSet h) { + if (h == null) + return; + + r = h.getDouble("r", 1); + x = h.getDouble("x", 0); + y = h.getDouble("y", 0); + z = h.getDouble("z", 0); + } } diff --git a/altoslib/AltosRotation.java b/altoslib/AltosRotation.java index 411ecbdf..e9c447ad 100644 --- a/altoslib/AltosRotation.java +++ b/altoslib/AltosRotation.java @@ -17,7 +17,7 @@ package org.altusmetrum.altoslib_11; -public class AltosRotation { +public class AltosRotation implements AltosHashable { private AltosQuaternion rotation; public double tilt() { @@ -47,4 +47,22 @@ public class AltosRotation { AltosQuaternion up = new AltosQuaternion(0, 0, 0, sky); rotation = up.vectors_to_rotation(orient); } + + public AltosHashSet hashSet() { + AltosHashSet h = new AltosHashSet(); + + h.putHashable("rotation", rotation); + return h; + } + + public AltosRotation(AltosHashSet h) { + rotation = new AltosQuaternion(h.getHash("rotation")); + } + + public static AltosRotation fromHashSet(AltosHashSet h, AltosRotation def) { + if (h == null) + return def; + + return new AltosRotation(h); + } } diff --git a/altoslib/AltosSavedState.java b/altoslib/AltosSavedState.java index a7954043..f1d3e993 100644 --- a/altoslib/AltosSavedState.java +++ b/altoslib/AltosSavedState.java @@ -19,7 +19,7 @@ package org.altusmetrum.altoslib_11; import java.io.*; -public class AltosSavedState implements Serializable { +public class AltosSavedState { public AltosState state; public AltosListenerState listener_state; diff --git a/altoslib/AltosState.java b/altoslib/AltosState.java index ca28a16d..0970a88e 100644 --- a/altoslib/AltosState.java +++ b/altoslib/AltosState.java @@ -23,7 +23,7 @@ package org.altusmetrum.altoslib_11; import java.io.*; -public class AltosState implements Cloneable, Serializable { +public class AltosState implements Cloneable, AltosHashable { public static final int set_position = 1; public static final int set_gps = 2; @@ -46,7 +46,7 @@ public class AltosState implements Cloneable, Serializable { private int prev_tick; public int boost_tick; - class AltosValue implements Serializable{ + class AltosValue implements AltosHashable { double value; double prev_value; private double max_value; @@ -177,19 +177,56 @@ public class AltosState implements Cloneable, Serializable { prev_set_time = set_time; } + public AltosHashSet hashSet() { + AltosHashSet h = new AltosHashSet(); + + h.putDouble("value", value); + h.putDouble("prev_value", prev_value); + h.putDouble("max_value", max_value); + h.putDouble("set_time", set_time); + h.putDouble("prev_set_time", prev_set_time); + return h; + } + + AltosValue(AltosHashSet h) { + this(); + if (h != null) { + value = h.getDouble("value", value); + prev_value = h.getDouble("prev_value", prev_value); + max_value = h.getDouble("max_value", max_value); + set_time = h.getDouble("set_time", 0); + prev_set_time = h.getDouble("prev_set_time", 0); + } + } + AltosValue() { value = AltosLib.MISSING; prev_value = AltosLib.MISSING; max_value = AltosLib.MISSING; } + + } + + AltosValue AltosValue_fromHashSet(AltosHashSet h, AltosValue def) { + if (h == null) + return def; + return new AltosValue(h); } - class AltosCValue implements Serializable { + class AltosCValue implements AltosHashable { - class AltosIValue extends AltosValue implements Serializable { + class AltosIValue extends AltosValue implements AltosHashable { boolean can_max() { return c_can_max(); } + + AltosIValue() { + super(); + } + + AltosIValue(AltosHashSet h) { + super(h); + } }; public AltosIValue measured; @@ -282,6 +319,26 @@ public class AltosState implements Cloneable, Serializable { measured = new AltosIValue(); computed = new AltosIValue(); } + + + public AltosHashSet hashSet() { + AltosHashSet h = new AltosHashSet(); + + h.putHashable("measured", measured); + h.putHashable("computed", computed); + return h; + } + + AltosCValue(AltosHashSet h) { + measured = new AltosIValue(h.getHash("measured")); + computed = new AltosIValue(h.getHash("computed")); + } + } + + AltosCValue AltosCValue_fromHashSet(AltosHashSet h, AltosCValue def) { + if (h == null) + return def; + return new AltosCValue(h); } private int state; @@ -317,7 +374,7 @@ public class AltosState implements Cloneable, Serializable { ground_altitude.set_measured(a, time); } - class AltosGpsGroundAltitude extends AltosValue implements Serializable { + class AltosGpsGroundAltitude extends AltosValue { void set(double a, double t) { super.set(a, t); pad_alt = value(); @@ -329,6 +386,19 @@ public class AltosState implements Cloneable, Serializable { pad_alt = value(); gps_altitude.set_gps_height(); } + + AltosGpsGroundAltitude() { + super(); + } + + AltosGpsGroundAltitude (AltosHashSet h) { + super(h); + } + } + + AltosGpsGroundAltitude AltosGpsGroundAltitude_fromHashSet(AltosHashSet h, AltosGpsGroundAltitude def) { + if (h == null) return def; + return new AltosGpsGroundAltitude(h); } private AltosGpsGroundAltitude gps_ground_altitude; @@ -341,7 +411,7 @@ public class AltosState implements Cloneable, Serializable { gps_ground_altitude.set(a, time); } - class AltosGroundPressure extends AltosCValue implements Serializable { + class AltosGroundPressure extends AltosCValue { void set_filtered(double p, double time) { computed.set_filtered(p, time); if (!is_measured()) @@ -352,6 +422,19 @@ public class AltosState implements Cloneable, Serializable { super.set_measured(p, time); ground_altitude.set_computed(pressure_to_altitude(p), time); } + + AltosGroundPressure () { + super(); + } + + AltosGroundPressure (AltosHashSet h) { + super(h); + } + } + + AltosGroundPressure AltosGroundPressure_fromHashSet(AltosHashSet h, AltosGroundPressure def) { + if (h == null) return def; + return new AltosGroundPressure(h); } private AltosGroundPressure ground_pressure; @@ -364,7 +447,7 @@ public class AltosState implements Cloneable, Serializable { ground_pressure.set_measured(pressure, time); } - class AltosAltitude extends AltosCValue implements Serializable { + class AltosAltitude extends AltosCValue implements AltosHashable { private void set_speed(AltosValue v) { if (!acceleration.is_measured() || !ascent) @@ -382,11 +465,24 @@ public class AltosState implements Cloneable, Serializable { set_speed(measured); set |= set_position; } + + AltosAltitude() { + super(); + } + + AltosAltitude (AltosHashSet h) { + super(h); + } + } + + AltosAltitude AltosAltitude_fromHashSet(AltosHashSet h, AltosAltitude def) { + if (h == null) return def; + return new AltosAltitude(h); } private AltosAltitude altitude; - class AltosGpsAltitude extends AltosValue implements Serializable { + class AltosGpsAltitude extends AltosValue implements AltosHashable { private void set_gps_height() { double a = value(); @@ -402,6 +498,19 @@ public class AltosState implements Cloneable, Serializable { super.set(a, t); set_gps_height(); } + + AltosGpsAltitude() { + super(); + } + + AltosGpsAltitude (AltosHashSet h) { + super(h); + } + } + + AltosGpsAltitude AltosGpsAltitude_fromHashSet(AltosHashSet h, AltosGpsAltitude def) { + if (h == null) return def; + return new AltosGpsAltitude(h); } private AltosGpsAltitude gps_altitude; @@ -469,7 +578,7 @@ public class AltosState implements Cloneable, Serializable { return gps_speed.max(); } - class AltosPressure extends AltosValue implements Serializable { + class AltosPressure extends AltosValue { void set(double p, double time) { super.set(p, time); if (state == AltosLib.ao_flight_pad) @@ -477,6 +586,19 @@ public class AltosState implements Cloneable, Serializable { double a = pressure_to_altitude(p); altitude.set_computed(a, time); } + + AltosPressure() { + super(); + } + + AltosPressure (AltosHashSet h) { + super(h); + } + } + + AltosPressure AltosPressure_fromHashSet(AltosHashSet h, AltosPressure def) { + if (h == null) return def; + return new AltosPressure(h); } private AltosPressure pressure; @@ -539,7 +661,7 @@ public class AltosState implements Cloneable, Serializable { return AltosLib.MISSING; } - class AltosSpeed extends AltosCValue implements Serializable { + class AltosSpeed extends AltosCValue implements AltosHashable { boolean can_max() { return state < AltosLib.ao_flight_fast || state == AltosLib.ao_flight_stateless; @@ -563,6 +685,19 @@ public class AltosState implements Cloneable, Serializable { super.set_measured(new_value, time); set_accel(); } + + AltosSpeed() { + super(); + } + + AltosSpeed (AltosHashSet h) { + super(h); + } + } + + AltosSpeed AltosSpeed_fromHashSet(AltosHashSet h, AltosSpeed def) { + if (h == null) return def; + return new AltosSpeed(h); } private AltosSpeed speed; @@ -593,7 +728,7 @@ public class AltosState implements Cloneable, Serializable { return AltosLib.MISSING; } - class AltosAccel extends AltosCValue implements Serializable { + class AltosAccel extends AltosCValue implements AltosHashable { boolean can_max() { return state < AltosLib.ao_flight_fast || state == AltosLib.ao_flight_stateless; @@ -604,6 +739,19 @@ public class AltosState implements Cloneable, Serializable { if (ascent) speed.set_integral(this.measured); } + + AltosAccel() { + super(); + } + + AltosAccel (AltosHashSet h) { + super(h); + } + } + + AltosAccel AltosAccel_fromHashSet(AltosHashSet h, AltosAccel def) { + if (h == null) return def; + return new AltosAccel(h); } AltosAccel acceleration; @@ -1483,10 +1631,238 @@ public class AltosState implements Cloneable, Serializable { public AltosState clone() { AltosState s = new AltosState(); s.copy(this); + + AltosHashSet hash = hashSet(); + String onetrip = hash.toString(); + AltosHashSet back = AltosHashSet.fromString(onetrip); + AltosState tripstate = AltosState.fromHashSet(back); + AltosHashSet triphash = tripstate.hashSet(); + String twotrip = triphash.toString(); + + if (!onetrip.equals(twotrip)) { + System.out.printf("%s\n%s\n", onetrip, twotrip); + System.exit(1); + } return s; } public AltosState () { init(); } + + public AltosHashSet hashSet() { + AltosHashSet h = new AltosHashSet(); + + h.putBoolean("valid", true); + h.putInt("set", set); + h.putLong("received_time", received_time); + h.putDouble("time", time); + h.putDouble("prev_time", prev_time); + h.putDouble("time_change", time_change); + h.putInt("tick", tick); + h.putInt("prev_tick", prev_tick); + h.putInt("boost_tick", boost_tick); + h.putInt("state", state); + h.putInt("flight", flight); + h.putInt("serial", serial); + h.putInt("altitude_32", altitude_32); + h.putInt("receiver_serial", receiver_serial); + h.putBoolean("landed", landed); + h.putBoolean("ascent", ascent); + h.putBoolean("boost", boost); + h.putInt("rssi", rssi); + h.putInt("status", status); + h.putInt("device_type", device_type); + h.putInt("config_major", config_major); + h.putInt("config_minor", config_minor); + h.putInt("apogee_delay", apogee_delay); + h.putInt("main_deploy", main_deploy); + h.putInt("flight_log_max", flight_log_max); + h.putHashable("ground_altitude", ground_altitude); + h.putHashable("gps_ground_altitude", gps_ground_altitude); + h.putHashable("ground_pressure", ground_pressure); + h.putHashable("altitude", altitude); + h.putHashable("gps_altitude", gps_altitude); + h.putHashable("gps_ground_speed", gps_ground_speed); + h.putHashable("gps_ascent_rate", gps_ascent_rate); + h.putHashable("gps_course", gps_course); + h.putHashable("gps_speed", gps_speed); + h.putHashable("pressure", pressure); + h.putHashable("speed", speed); + h.putHashable("acceleration", acceleration); + h.putHashable("orient", orient); + h.putHashable("kalman_height", kalman_height); + h.putHashable("kalman_speed", kalman_speed); + h.putHashable("kalman_acceleration", kalman_acceleration); + + h.putDouble("battery_voltage",battery_voltage); + h.putDouble("pyro_voltage",pyro_voltage); + h.putDouble("temperature",temperature); + h.putDouble("apogee_voltage",apogee_voltage); + h.putDouble("main_voltage",main_voltage); + h.putDoubleArray("ignitor_voltage",ignitor_voltage); + h.putHashable("gps", gps); + h.putHashable("temp_gps", temp_gps); + h.putInt("temp_gps_sat_tick", temp_gps_sat_tick); + h.putBoolean("gps_pending", gps_pending); + h.putInt("gps_sequence", gps_sequence); + h.putHashable("imu", imu); + h.putHashable("mag", mag); + + h.putInt("npad", npad); + h.putInt("gps_waiting", gps_waiting); + h.putBoolean("gps_ready", gps_ready); + h.putInt("ngps", ngps); + h.putHashable("from_pad", from_pad); + h.putDouble("elevation", elevation); + h.putDouble("range", range); + h.putDouble("gps_height", gps_height); + h.putDouble("pad_lat", pad_lat); + h.putDouble("pad_lon", pad_lon); + h.putDouble("pad_alt", pad_alt); + h.putInt("speak_tick", speak_tick); + h.putDouble("speak_altitude", speak_altitude); + h.putString("callsign", callsign); + h.putString("firmware_version", firmware_version); + h.putDouble("accel_plus_g", accel_plus_g); + h.putDouble("accel_minus_g", accel_minus_g); + h.putDouble("accel", accel); + h.putDouble("ground_accel", ground_accel); + h.putDouble("ground_accel_avg", ground_accel_avg); + h.putInt("log_format", log_format); + h.putString("product", product); + h.putHashable("baro", baro); + h.putHashable("companion", companion); + h.putInt("pyro_fired", pyro_fired); + h.putDouble("accel_zero_along", accel_zero_along); + h.putDouble("accel_zero_across", accel_zero_across); + h.putDouble("accel_zero_through", accel_zero_through); + + h.putHashable("rotation", rotation); + h.putHashable("ground_rotation", ground_rotation); + + h.putInt("pad_orientation", pad_orientation); + + h.putDouble("accel_ground_along", accel_ground_along); + h.putDouble("accel_ground_across", accel_ground_across); + h.putDouble("accel_ground_through", accel_ground_through); + + h.putDouble("gyro_zero_roll", gyro_zero_roll); + h.putDouble("gyro_zero_pitch", gyro_zero_pitch); + h.putDouble("gyro_zero_yaw", gyro_zero_yaw); + + h.putDouble("last_imu_time", last_imu_time); + return h; + } + + public AltosState(AltosHashSet h) { + this(); + + set = h.getInt("set", set); + received_time = h.getLong("received_time", received_time); + time = h.getDouble("time", time); + prev_time = h.getDouble("prev_time", prev_time); + time_change = h.getDouble("time_change", time_change); + tick = h.getInt("tick", tick); + prev_tick = h.getInt("prev_tick", prev_tick); + boost_tick = h.getInt("boost_tick", boost_tick); + state = h.getInt("state", state); + flight = h.getInt("flight", flight); + serial = h.getInt("serial", serial); + altitude_32 = h.getInt("altitude_32", altitude_32); + receiver_serial = h.getInt("receiver_serial", receiver_serial); + landed = h.getBoolean("landed", landed); + ascent = h.getBoolean("ascent", ascent); + boost = h.getBoolean("boost", boost); + rssi = h.getInt("rssi", rssi); + status = h.getInt("status", status); + device_type = h.getInt("device_type", device_type); + config_major = h.getInt("config_major", config_major); + config_minor = h.getInt("config_minor", config_minor); + apogee_delay = h.getInt("apogee_delay", apogee_delay); + main_deploy = h.getInt("main_deploy", main_deploy); + flight_log_max = h.getInt("flight_log_max", flight_log_max); + ground_altitude = AltosCValue_fromHashSet(h.getHash("ground_altitude"), ground_altitude); + gps_ground_altitude = AltosGpsGroundAltitude_fromHashSet(h.getHash("gps_ground_altitude"), gps_ground_altitude); + ground_pressure = AltosGroundPressure_fromHashSet(h.getHash("ground_pressure"), ground_pressure); + altitude = AltosAltitude_fromHashSet(h.getHash("altitude"), altitude); + gps_altitude = AltosGpsAltitude_fromHashSet(h.getHash("gps_altitude"), gps_altitude); + gps_ground_speed = AltosValue_fromHashSet(h.getHash("gps_ground_speed"), gps_ground_speed); + gps_ascent_rate = AltosValue_fromHashSet(h.getHash("gps_ascent_rate"), gps_ascent_rate); + gps_course = AltosValue_fromHashSet(h.getHash("gps_course"), gps_course); + gps_speed = AltosValue_fromHashSet(h.getHash("gps_speed"), gps_speed); + pressure = AltosPressure_fromHashSet(h.getHash("pressure"), pressure); + speed = AltosSpeed_fromHashSet(h.getHash("speed"), speed); + acceleration = AltosAccel_fromHashSet(h.getHash("acceleration"), acceleration); + orient = AltosCValue_fromHashSet(h.getHash("orient"), orient); + kalman_height = AltosValue_fromHashSet(h.getHash("kalman_height"), kalman_height); + kalman_speed = AltosValue_fromHashSet(h.getHash("kalman_speed"), kalman_speed); + kalman_acceleration = AltosValue_fromHashSet(h.getHash("kalman_acceleration"), kalman_acceleration); + + battery_voltage = h.getDouble("battery_voltage", battery_voltage); + pyro_voltage = h.getDouble("pyro_voltage", pyro_voltage); + temperature = h.getDouble("temperature", temperature); + apogee_voltage = h.getDouble("apogee_voltage", apogee_voltage); + main_voltage= h.getDouble("main_voltage", main_voltage); + ignitor_voltage = h.getDoubleArray("ignitor_voltage", ignitor_voltage); + gps = AltosGPS.fromHashSet(h.getHash("gps"), gps); + temp_gps = AltosGPS.fromHashSet(h.getHash("temp_gps"), temp_gps); + temp_gps_sat_tick = h.getInt("temp_gps_sat_tick", temp_gps_sat_tick); + gps_pending = h.getBoolean("gps_pending", gps_pending); + gps_sequence = h.getInt("gps_sequence", gps_sequence); + imu = AltosIMU.fromHashSet(h.getHash("imu"), imu); + mag = AltosMag.fromHashSet(h.getHash("mag"), mag); + + npad = h.getInt("npad", npad); + gps_waiting = h.getInt("gps_waiting", gps_waiting); + gps_ready = h.getBoolean("gps_ready", gps_ready); + ngps = h.getInt("ngps", ngps); + from_pad = AltosGreatCircle.fromHashSet(h.getHash("from_pad"), from_pad); + elevation = h.getDouble("elevation", elevation); + range = h.getDouble("range", range); + gps_height = h.getDouble("gps_height", gps_height); + pad_lat = h.getDouble("pad_lat", pad_lat); + pad_lon = h.getDouble("pad_lon", pad_lon); + pad_alt = h.getDouble("pad_alt", pad_alt); + speak_tick = h.getInt("speak_tick", speak_tick); + speak_altitude = h.getDouble("speak_altitude", speak_altitude); + callsign = h.getString("callsign", callsign); + firmware_version = h.getString("firmware_version", firmware_version); + accel_plus_g = h.getDouble("accel_plus_g", accel_plus_g); + accel_minus_g = h.getDouble("accel_minus_g", accel_minus_g); + accel = h.getDouble("accel", accel); + ground_accel = h.getDouble("ground_accel", ground_accel); + ground_accel_avg = h.getDouble("ground_accel_avg", ground_accel_avg); + log_format = h.getInt("log_format", log_format); + product = h.getString("product", product); + baro = AltosMs5607.fromHashSet(h.getHash("baro"), baro); + companion = AltosCompanion.fromHashSet(h.getHash("companion"), companion); + pyro_fired = h.getInt("pyro_fired", pyro_fired); + accel_zero_along = h.getDouble("accel_zero_along", accel_zero_along); + accel_zero_across = h.getDouble("accel_zero_across", accel_zero_across); + accel_zero_through = h.getDouble("accel_zero_through", accel_zero_through); + + rotation = AltosRotation.fromHashSet(h.getHash("rotation"), rotation); + ground_rotation = AltosRotation.fromHashSet(h.getHash("ground_rotation"), ground_rotation); + + pad_orientation = h.getInt("pad_orientation", pad_orientation); + + accel_ground_along = h.getDouble("accel_ground_along", accel_ground_along); + accel_ground_across = h.getDouble("accel_ground_across", accel_ground_across); + accel_ground_through = h.getDouble("accel_ground_through", accel_ground_through); + + gyro_zero_roll = h.getDouble("gyro_zero_roll", gyro_zero_roll); + gyro_zero_pitch = h.getDouble("gyro_zero_pitch", gyro_zero_pitch); + gyro_zero_yaw = h.getDouble("gyro_zero_yaw", gyro_zero_yaw); + + last_imu_time = h.getDouble("last_imu_time", last_imu_time); + } + + public static AltosState fromHashSet(AltosHashSet h) { + if (h == null) + return null; + if (!h.getBoolean("valid", false)) + return null; + return new AltosState(h); + } } diff --git a/altoslib/Makefile.am b/altoslib/Makefile.am index 512e1cca..edc443b0 100644 --- a/altoslib/Makefile.am +++ b/altoslib/Makefile.am @@ -161,6 +161,7 @@ altoslib_JAVA = \ AltosMapLoader.java \ AltosMapTypeListener.java \ AltosHashSet.java \ + AltosHashable.java \ AltosVersion.java JAR=altoslib_$(ALTOSLIB_VERSION).jar diff --git a/altosui/AltosLaunch.java b/altosui/AltosLaunch.java index 46a29d45..fb2cd883 100644 --- a/altosui/AltosLaunch.java +++ b/altosui/AltosLaunch.java @@ -91,7 +91,7 @@ public class AltosLaunch { throw new TimeoutException(); if (get_string(line, "Rssi: ", status_name)) { try { - rssi = Altos.fromdec(status_name.get()); + rssi = (int) Altos.fromdec(status_name.get()); } catch (NumberFormatException ne) { } break; @@ -194,4 +194,4 @@ public class AltosLaunch { device = in_device; serial = new AltosSerial(device); } -} \ No newline at end of file +} -- cgit v1.2.3 From 29123a60272777916e5aae08369d0f03c2f135b6 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Sun, 15 May 2016 13:53:38 -0700 Subject: altoslib: Allow empty values in AltosHashSet representation Check for value termination before appending the first character. Signed-off-by: Keith Packard --- altoslib/AltosHashSet.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'altoslib') diff --git a/altoslib/AltosHashSet.java b/altoslib/AltosHashSet.java index 4b89f8cc..77bd48c2 100644 --- a/altoslib/AltosHashSet.java +++ b/altoslib/AltosHashSet.java @@ -35,12 +35,12 @@ public class AltosHashSet extends Hashtable { ArrayList chars = new ArrayList(); for (;;) { - chars.add(c); - c = get(reader); if (c == -1 || c == ';') break; if (c == '\\') c = get(reader); + chars.add(c); + c = get(reader); } int[] ch = new int[chars.size()]; for (int i = 0; i < ch.length; i++) -- cgit v1.2.3 From f484216e72f81decb2aaa7289d6f69678990b7af Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Sun, 15 May 2016 13:55:12 -0700 Subject: altoslib: Set version and log space from AltosIdleFetch Just more data for monitor idle mode Signed-off-by: Keith Packard --- altoslib/AltosIdleFetch.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'altoslib') diff --git a/altoslib/AltosIdleFetch.java b/altoslib/AltosIdleFetch.java index 5677916c..5102c16b 100644 --- a/altoslib/AltosIdleFetch.java +++ b/altoslib/AltosIdleFetch.java @@ -134,9 +134,6 @@ public class AltosIdleFetch implements AltosStateUpdate { AltosLink link; - double frequency; - String callsign; - public void update_state(AltosState state) throws InterruptedException, AltosUnknownProduct { try { boolean matched = false; @@ -148,6 +145,8 @@ public class AltosIdleFetch implements AltosStateUpdate { state.set_ground_accel(config_data.accel_cal_plus); state.set_accel_g(config_data.accel_cal_plus, config_data.accel_cal_minus); state.set_product(config_data.product); + state.set_firmware_version(config_data.version); + state.set_log_space(config_data.log_space); for (AltosIdler idler : idlers) { if (idler.matches(config_data)) { idler.update_state(state, link, config_data); -- cgit v1.2.3 From 3c4278a29082a2af5911e22e59f8f52549f549e3 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Sun, 15 May 2016 13:56:21 -0700 Subject: altoslib: Add log_space to AltosState TeleGPS doesn't have flight_log_max value, but does have log_space which we can use for the same thing in monitor idle mode. Signed-off-by: Keith Packard --- altoslib/AltosState.java | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'altoslib') diff --git a/altoslib/AltosState.java b/altoslib/AltosState.java index 0970a88e..d359d67a 100644 --- a/altoslib/AltosState.java +++ b/altoslib/AltosState.java @@ -832,6 +832,7 @@ public class AltosState implements Cloneable, AltosHashable { public double ground_accel_avg; public int log_format; + public int log_space; public String product; public AltosMs5607 baro; @@ -949,6 +950,7 @@ public class AltosState implements Cloneable, AltosHashable { ground_accel_avg = AltosLib.MISSING; log_format = AltosLib.MISSING; + log_space = AltosLib.MISSING; product = null; serial = AltosLib.MISSING; receiver_serial = AltosLib.MISSING; @@ -1108,6 +1110,7 @@ public class AltosState implements Cloneable, AltosHashable { ground_accel_avg = old.ground_accel_avg; log_format = old.log_format; + log_space = old.log_space; product = old.product; serial = old.serial; receiver_serial = old.receiver_serial; @@ -1226,6 +1229,10 @@ public class AltosState implements Cloneable, AltosHashable { } } + public void set_log_space(int log_space) { + this.log_space = log_space; + } + public void set_flight_params(int apogee_delay, int main_deploy) { this.apogee_delay = apogee_delay; this.main_deploy = main_deploy; @@ -1730,6 +1737,7 @@ public class AltosState implements Cloneable, AltosHashable { h.putDouble("ground_accel", ground_accel); h.putDouble("ground_accel_avg", ground_accel_avg); h.putInt("log_format", log_format); + h.putInt("log_space", log_space); h.putString("product", product); h.putHashable("baro", baro); h.putHashable("companion", companion); @@ -1834,6 +1842,7 @@ public class AltosState implements Cloneable, AltosHashable { ground_accel = h.getDouble("ground_accel", ground_accel); ground_accel_avg = h.getDouble("ground_accel_avg", ground_accel_avg); log_format = h.getInt("log_format", log_format); + log_space = h.getInt("log_space", log_space); product = h.getString("product", product); baro = AltosMs5607.fromHashSet(h.getHash("baro"), baro); companion = AltosCompanion.fromHashSet(h.getHash("companion"), companion); -- cgit v1.2.3 From 9287122edc0e2dec6b2542f4cc8cb9cf2900bb33 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Sun, 15 May 2016 13:57:28 -0700 Subject: altoslib: Add AltosIdleReader This provides an AltosFlightReader interface for monitor idle mode, making that easier to provide in TeleGPS Signed-off-by: Keith Packard --- altoslib/AltosIdleReader.java | 121 ++++++++++++++++++++++++++++++++++++++++++ altoslib/Makefile.am | 1 + 2 files changed, 122 insertions(+) create mode 100644 altoslib/AltosIdleReader.java (limited to 'altoslib') diff --git a/altoslib/AltosIdleReader.java b/altoslib/AltosIdleReader.java new file mode 100644 index 00000000..795593f7 --- /dev/null +++ b/altoslib/AltosIdleReader.java @@ -0,0 +1,121 @@ +/* + * Copyright © 2016 Keith Packard + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +package org.altusmetrum.altoslib_11; + +import java.text.*; +import java.io.*; +import java.util.concurrent.*; + +public class AltosIdleReader extends AltosFlightReader { + AltosLink link; + boolean remote; + AltosState state = null; + AltosIdleFetch fetch; + long next_millis; + static final long report_interval = 5 * 1000; + static final long minimum_delay = 1 * 1000; + + private void start_link() throws InterruptedException, TimeoutException { + if (remote) { + link.start_remote(); + } else + link.flush_input(); + } + + private boolean stop_link() throws InterruptedException, TimeoutException { + if (remote) + link.stop_remote(); + return link.reply_abort; + } + + public AltosState read() throws InterruptedException, ParseException, AltosCRCException, IOException { + boolean worked = false; + boolean aborted = false; + + if (state == null) + state = new AltosState(); + else + state = state.clone(); + + long delay = next_millis - System.currentTimeMillis(); + + if (delay > 0) + Thread.sleep(delay); + next_millis = System.currentTimeMillis() + report_interval; + try { + try { + start_link(); + fetch.update_state(state); + if (!link.has_error && !link.reply_abort) + worked = true; + } catch (TimeoutException te) { + } catch (AltosUnknownProduct ue) { + worked = true; + } + } finally { + try { + aborted = stop_link(); + } catch (TimeoutException te) { + aborted = true; + } + if (worked) { + if (remote) { + try { + state.set_rssi(link.rssi(), 0); + } catch (TimeoutException te) { + state.set_rssi(0, 0); + } + } + } + } + + long finish = System.currentTimeMillis(); + + if (next_millis - finish < minimum_delay) + next_millis = finish + minimum_delay; + + return state; + } + + public void close(boolean interrupted) { + try { + link.close(); + } catch (InterruptedException ie) { + } + } + + public void set_frequency(double frequency) throws InterruptedException, TimeoutException { + link.set_radio_frequency(frequency); + } + + public void save_frequency() { + AltosPreferences.set_frequency(link.serial, link.frequency); + } + + public void set_callsign(String callsign) throws InterruptedException, TimeoutException { + link.set_callsign(callsign); + } + + public AltosIdleReader (AltosLink link, boolean remote) + throws IOException, InterruptedException, TimeoutException { + this.link = link; + this.remote = remote; + this.next_millis = System.currentTimeMillis(); + fetch = new AltosIdleFetch(link); + } +} diff --git a/altoslib/Makefile.am b/altoslib/Makefile.am index edc443b0..d4554df3 100644 --- a/altoslib/Makefile.am +++ b/altoslib/Makefile.am @@ -64,6 +64,7 @@ altoslib_JAVA = \ AltosIdleFetch.java \ AltosIdleMonitor.java \ AltosIdleMonitorListener.java \ + AltosIdleReader.java \ AltosIgnite.java \ AltosIMU.java \ AltosKML.java \ -- cgit v1.2.3 From 7b5521966119fcc290591bf1b397506ef44cedea Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Tue, 24 May 2016 23:40:03 -0700 Subject: altoslib: use miles for distances > 1000ft. This makes both the map line and the other distance displays use miles for distances greater than 1000 feet. Signed-off-by: Keith Packard --- altoslib/AltosDistance.java | 2 +- altoslib/AltosMapLine.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'altoslib') diff --git a/altoslib/AltosDistance.java b/altoslib/AltosDistance.java index d6788fb5..1ade5abb 100644 --- a/altoslib/AltosDistance.java +++ b/altoslib/AltosDistance.java @@ -95,7 +95,7 @@ public class AltosDistance extends AltosUnits { } }; - range_imperial[1] = new AltosUnitsRange(AltosConvert.feet_to_meters(5280), + range_imperial[1] = new AltosUnitsRange(AltosConvert.feet_to_meters(1000), "mi", "miles") { double value(double v) { return AltosConvert.meters_to_miles(v); diff --git a/altoslib/AltosMapLine.java b/altoslib/AltosMapLine.java index ed2c0844..187aa6d9 100644 --- a/altoslib/AltosMapLine.java +++ b/altoslib/AltosMapLine.java @@ -50,7 +50,7 @@ public abstract class AltosMapLine { if (AltosConvert.imperial_units) { distance = AltosConvert.meters_to_feet(distance); - if (distance < 10000) { + if (distance < 1000) { format = "%4.0fft"; } else { distance /= 5280; @@ -64,7 +64,7 @@ public abstract class AltosMapLine { format = "%5.0fmi"; } } else { - if (distance < 10000) { + if (distance < 1000) { format = "%4.0fm"; } else { distance /= 1000; -- cgit v1.2.3 From 1b5ea911049a8afae6af475a4a2bf62a6e3aa57b Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Wed, 15 Jun 2016 22:40:27 -0700 Subject: altoslib: Switch preserved state format to JSON This is much easier to debug than the icky strings with backslashes everywhere. Signed-off-by: Keith Packard --- altoslib/AltosCompanion.java | 28 ++- altoslib/AltosFrequency.java | 21 +- altoslib/AltosGPS.java | 63 +++++- altoslib/AltosGPSSat.java | 25 ++- altoslib/AltosGreatCircle.java | 29 ++- altoslib/AltosIMU.java | 33 ++- altoslib/AltosMag.java | 26 ++- altoslib/AltosMs5607.java | 44 +++- altoslib/AltosParse.java | 26 ++- altoslib/AltosPreferences.java | 34 ++-- altoslib/AltosPreferencesBackend.java | 16 ++ altoslib/AltosQuaternion.java | 22 +- altoslib/AltosRotation.java | 17 +- altoslib/AltosState.java | 373 ++++++++++++++++++++++++++++++++-- altoslib/Makefile.am | 2 + 15 files changed, 716 insertions(+), 43 deletions(-) (limited to 'altoslib') diff --git a/altoslib/AltosCompanion.java b/altoslib/AltosCompanion.java index 6f18d93e..abb98830 100644 --- a/altoslib/AltosCompanion.java +++ b/altoslib/AltosCompanion.java @@ -19,7 +19,7 @@ package org.altusmetrum.altoslib_11; import java.io.*; -public class AltosCompanion implements AltosHashable { +public class AltosCompanion implements AltosHashable, AltosJsonable { public final static int board_id_telescience = 0x0a; public final static int MAX_CHANNELS = 12; @@ -49,6 +49,17 @@ public class AltosCompanion implements AltosHashable { return h; } + public AltosJson json() { + AltosJson j = new AltosJson(); + + j.put("tick", tick); + j.put("board_id", board_id); + j.put("update_period", update_period); + j.put("channels", channels); + j.put("companion_data", companion_data); + return j; + } + public AltosCompanion(AltosHashSet h) { tick = h.getInt("tick", tick); board_id = h.getInt("board_id", board_id); @@ -63,4 +74,19 @@ public class AltosCompanion implements AltosHashable { return new AltosCompanion(h); } + + public AltosCompanion(AltosJson j) { + tick = j.get_int("tick", tick); + board_id = j.get_int("board_id", board_id); + update_period = j.get_int("update_period", update_period); + channels = j.get_int("channels", channels); + companion_data = j.get_int_array("companion_data", new int[channels]); + } + + public static AltosCompanion fromJson(AltosJson j, AltosCompanion def) { + if (j == null) + return def; + + return new AltosCompanion(j); + } } diff --git a/altoslib/AltosFrequency.java b/altoslib/AltosFrequency.java index f9aa6de6..99828d53 100644 --- a/altoslib/AltosFrequency.java +++ b/altoslib/AltosFrequency.java @@ -21,7 +21,7 @@ import java.io.*; import java.util.*; import java.text.*; -public class AltosFrequency { +public class AltosFrequency implements AltosJsonable { public double frequency; public String description; @@ -66,6 +66,14 @@ public class AltosFrequency { return h; } + public AltosJson json() { + AltosJson j = new AltosJson(); + + j.put("frequency", frequency); + j.put("description", description); + return j; + } + public AltosFrequency(double f, String d) { frequency = f; description = d; @@ -81,4 +89,15 @@ public class AltosFrequency { return def; return new AltosFrequency(h); } + + private AltosFrequency(AltosJson j) { + frequency = j.get_double("frequency", 0.0); + description = j.get_string("description", ""); + } + + public static AltosFrequency fromJson(AltosJson j, AltosFrequency def) { + if (j == null) + return def; + return new AltosFrequency(j); + } } diff --git a/altoslib/AltosGPS.java b/altoslib/AltosGPS.java index 371fd7bf..d3710e4e 100644 --- a/altoslib/AltosGPS.java +++ b/altoslib/AltosGPS.java @@ -21,7 +21,7 @@ import java.text.*; import java.util.concurrent.*; import java.io.*; -public class AltosGPS implements Cloneable, AltosHashable { +public class AltosGPS implements Cloneable, AltosHashable, AltosJsonable { public final static int MISSING = AltosLib.MISSING; @@ -417,6 +417,34 @@ public class AltosGPS implements Cloneable, AltosHashable { return h; } + public AltosJson json() { + AltosJson j = new AltosJson(); + + j.put("nsat", nsat); + j.put("locked", locked); + j.put("connected", connected); + j.put("lat", lat); + j.put("lon", lon); + j.put("alt", alt); + j.put("year", year); + j.put("month", month); + j.put("day", day); + j.put("hour", hour); + j.put("minute", minute); + j.put("second", second); + + j.put("ground_speed", ground_speed); + j.put("course", course); + j.put("climb_rate", climb_rate); + j.put("pdop", pdop); + j.put("hdop", hdop); + j.put("vdop", vdop); + j.put("h_error", h_error); + j.put("v_error", v_error); + j.put("cc_gps_sat", cc_gps_sat); + return j; + } + public AltosGPS(AltosHashSet h) { init(); nsat = h.getInt("nsat", nsat); @@ -443,10 +471,43 @@ public class AltosGPS implements Cloneable, AltosHashable { cc_gps_sat = AltosGPSSat.array(h.getString("cc_gps_sat", null)); } + public AltosGPS(AltosJson j) { + init(); + nsat = j.get_int("nsat", nsat); + locked = j.get_boolean("locked", locked); + connected = j.get_boolean("connected", connected); + lat = j.get_double("lat", lat); + lon = j.get_double("lon", lon); + alt = j.get_double("alt", alt); + year = j.get_int("year", year); + month = j.get_int("month", month); + day = j.get_int("day", day); + hour = j.get_int("hour", hour); + minute = j.get_int("minute", minute); + second = j.get_int("second", second); + + ground_speed = j.get_double("ground_speed", ground_speed); + course = j.get_int("course", course); + climb_rate = j.get_double("climb_rate", climb_rate); + pdop = j.get_double("pdop", pdop); + hdop = j.get_double("hdop", hdop); + vdop = j.get_double("vdop", vdop); + h_error = j.get_double("h_error", h_error); + v_error = j.get_double("v_error", v_error); + cc_gps_sat = AltosGPSSat.json_array(j.get("cc_gps_sat")); + } + public static AltosGPS fromHashSet(AltosHashSet h, AltosGPS def) { if (h == null) return def; return new AltosGPS(h); } + + public static AltosGPS fromJson(AltosJson j, AltosGPS def) { + if (j == null) + return def; + + return new AltosGPS(j); + } } diff --git a/altoslib/AltosGPSSat.java b/altoslib/AltosGPSSat.java index ad7a8647..319fe7f1 100644 --- a/altoslib/AltosGPSSat.java +++ b/altoslib/AltosGPSSat.java @@ -22,7 +22,7 @@ import java.text.*; import java.util.*; import java.util.concurrent.*; -public class AltosGPSSat { +public class AltosGPSSat implements AltosJsonable { public int svid; public int c_n0; @@ -41,17 +41,40 @@ public class AltosGPSSat { return h; } + public AltosJson json() { + AltosJson j = new AltosJson(); + j.put("svid", svid); + j.put("c_n0", c_n0); + return j; + } + private AltosGPSSat(AltosHashSet h) { svid = h.getInt("svid", 0); c_n0 = h.getInt("c_n0", 0); } + private AltosGPSSat(AltosJson j) { + svid = j.get_int("svid", 0); + c_n0 = j.get_int("c_n0", 0); + } + static public AltosGPSSat fromHashSet(AltosHashSet h, AltosGPSSat def) { if (h == null) return def; return new AltosGPSSat(h); } + static public AltosGPSSat[] json_array(AltosJson j) { + if (j == null) + return null; + + int size = j.size(); + AltosGPSSat[] sats = new AltosGPSSat[size]; + for (int i = 0; i < size; i++) + sats[i] = new AltosGPSSat(j.get(i)); + return sats; + } + static public AltosGPSSat[] array(String string) { if (string == null) diff --git a/altoslib/AltosGreatCircle.java b/altoslib/AltosGreatCircle.java index 9ec808a5..8fd380a1 100644 --- a/altoslib/AltosGreatCircle.java +++ b/altoslib/AltosGreatCircle.java @@ -20,7 +20,7 @@ package org.altusmetrum.altoslib_11; import java.lang.Math; import java.io.*; -public class AltosGreatCircle implements Cloneable, AltosHashable { +public class AltosGreatCircle implements Cloneable, AltosHashable, AltosJsonable { public double distance; public double bearing; public double range; @@ -115,6 +115,17 @@ public class AltosGreatCircle implements Cloneable, AltosHashable { return h; } + public AltosJson json() { + AltosJson j = new AltosJson(); + + j.put("distance", distance); + j.put("bearing", bearing); + j.put("range", range); + j.put("elevation", elevation); + + return j; + } + public AltosGreatCircle(AltosHashSet h) { this(); @@ -130,4 +141,20 @@ public class AltosGreatCircle implements Cloneable, AltosHashable { return new AltosGreatCircle(h); } + + public AltosGreatCircle(AltosJson j) { + this(); + + distance = j.get_double("distance", distance); + bearing = j.get_double("bearing", bearing); + range = j.get_double("range", range); + elevation = j.get_double("elevation", elevation); + } + + public static AltosGreatCircle fromJson(AltosJson j, AltosGreatCircle def) { + if (j == null) + return def; + + return new AltosGreatCircle(j); + } } diff --git a/altoslib/AltosIMU.java b/altoslib/AltosIMU.java index df6c4ed3..ecc02f15 100644 --- a/altoslib/AltosIMU.java +++ b/altoslib/AltosIMU.java @@ -20,7 +20,7 @@ package org.altusmetrum.altoslib_11; import java.util.concurrent.*; import java.io.*; -public class AltosIMU implements Cloneable, AltosHashable { +public class AltosIMU implements Cloneable, AltosHashable, AltosJsonable { public int accel_along; public int accel_across; public int accel_through; @@ -128,12 +128,30 @@ public class AltosIMU implements Cloneable, AltosHashable { gyro_yaw = h.getInt("gyro_yaw", gyro_yaw); } + public AltosIMU (AltosJson j) { + this(); + + accel_along = j.get_int("accel_along", accel_along); + accel_across = j.get_int("accel_across", accel_across); + accel_through = j.get_int("accel_through", accel_through); + + gyro_roll = j.get_int("gyro_roll", gyro_roll); + gyro_pitch = j.get_int("gyro_pitch", gyro_pitch); + gyro_yaw = j.get_int("gyro_yaw", gyro_yaw); + } + static public AltosIMU fromHashSet(AltosHashSet h, AltosIMU def) { if (h == null) return def; return new AltosIMU(h); } + static public AltosIMU fromJson(AltosJson j, AltosIMU def) { + if (j == null) + return def; + return new AltosIMU(j); + } + public AltosHashSet hashSet() { AltosHashSet h = new AltosHashSet(); @@ -146,4 +164,17 @@ public class AltosIMU implements Cloneable, AltosHashable { h.putInt("gyro_yaw", gyro_yaw); return h; } + + public AltosJson json() { + AltosJson j = new AltosJson(); + + j.put("accel_along", accel_along); + j.put("accel_across", accel_across); + j.put("accel_through", accel_through); + + j.put("gyro_roll", gyro_roll); + j.put("gyro_pitch", gyro_pitch); + j.put("gyro_yaw", gyro_yaw); + return j; + } } diff --git a/altoslib/AltosMag.java b/altoslib/AltosMag.java index c350ae46..ec98882f 100644 --- a/altoslib/AltosMag.java +++ b/altoslib/AltosMag.java @@ -20,7 +20,7 @@ package org.altusmetrum.altoslib_11; import java.util.concurrent.*; import java.io.*; -public class AltosMag implements Cloneable, AltosHashable { +public class AltosMag implements Cloneable, AltosHashable, AltosJsonable { public int along; public int across; public int through; @@ -103,6 +103,15 @@ public class AltosMag implements Cloneable, AltosHashable { return h; } + public AltosJson json() { + AltosJson j = new AltosJson(); + + j.put("along", along); + j.put("across", across); + j.put("through", through); + return j; + } + public AltosMag(AltosHashSet h) { this(); @@ -117,4 +126,19 @@ public class AltosMag implements Cloneable, AltosHashable { return new AltosMag(h); } + + public AltosMag(AltosJson j) { + this(); + + along = j.get_int("along", along); + across = j.get_int("across", across); + through = j.get_int("through", through); + } + + public static AltosMag fromJson(AltosJson j, AltosMag def) { + if (j == null) + return def; + + return new AltosMag(j); + } } diff --git a/altoslib/AltosMs5607.java b/altoslib/AltosMs5607.java index 88a97828..6d2f2203 100644 --- a/altoslib/AltosMs5607.java +++ b/altoslib/AltosMs5607.java @@ -20,7 +20,7 @@ package org.altusmetrum.altoslib_11; import java.util.concurrent.*; import java.io.*; -public class AltosMs5607 implements AltosHashable { +public class AltosMs5607 implements AltosHashable, AltosJsonable { public int reserved; public int sens; public int off; @@ -185,6 +185,24 @@ public class AltosMs5607 implements AltosHashable { return h; } + public AltosJson json() { + AltosJson j = new AltosJson(); + + j.put("reserved", reserved); + j.put("sens", sens); + j.put("off", off); + j.put("tcs", tcs); + j.put("tco", tco); + j.put("tref", tref); + j.put("tempsens", tempsens); + j.put("crc", crc); + j.put("raw_pres", raw_pres); + j.put("raw_temp", raw_temp); + j.put("pa", pa); + j.put("cc", cc); + return j; + } + public AltosMs5607(AltosHashSet h) { this(); @@ -208,4 +226,28 @@ public class AltosMs5607 implements AltosHashable { return new AltosMs5607(h); } + + public AltosMs5607(AltosJson j) { + this(); + + reserved = j.get_int("reserved", reserved); + sens = j.get_int("sens", sens); + off = j.get_int("off", off); + tcs = j.get_int("tcs", tcs); + tco = j.get_int("tco", tco); + tref = j.get_int("tref", tref); + tempsens = j.get_int("tempsens", tempsens); + crc = j.get_int("crc", crc); + raw_pres = j.get_int("raw_pres", raw_pres); + raw_temp = j.get_int("raw_temp", raw_temp); + pa = j.get_int("pa", pa); + cc = j.get_int("cc", cc); + } + + public static AltosMs5607 fromJson(AltosJson j, AltosMs5607 def) { + if (j == null) + return def; + + return new AltosMs5607(j); + } } diff --git a/altoslib/AltosParse.java b/altoslib/AltosParse.java index fbd049ae..45ef7dac 100644 --- a/altoslib/AltosParse.java +++ b/altoslib/AltosParse.java @@ -49,9 +49,23 @@ public class AltosParse { } } - static NumberFormat nf_locale = NumberFormat.getInstance(); + static NumberFormat get_nf_locale() { + NumberFormat nf = NumberFormat.getInstance(); + nf.setParseIntegerOnly(false); + nf.setGroupingUsed(false); + return nf; + } + + static NumberFormat nf_locale = get_nf_locale(); + + static NumberFormat get_nf_net() { + NumberFormat nf = NumberFormat.getInstance(Locale.ROOT); + nf.setParseIntegerOnly(false); + nf.setGroupingUsed(false); + return nf; + } - static NumberFormat nf_net = NumberFormat.getInstance(Locale.ROOT); + static NumberFormat nf_net = get_nf_net(); public static double parse_double_locale(String str) throws ParseException { try { @@ -67,14 +81,18 @@ public class AltosParse { public static double parse_double_net(String str) throws ParseException { try { - return nf_net.parse(str.trim()).doubleValue(); + String t = str.trim(); +// System.out.printf("Parse string \"%s\" trim \"%s\"\n", str, t); + return nf_net.parse(t).doubleValue(); } catch (ParseException pe) { throw new ParseException("error parsing double " + str, 0); } } public static String format_double_net(double number) { - return nf_net.format(number); + String ret = nf_net.format(number); +// System.out.printf("format double %f \"%s\"\n", number, ret); + return ret; } public static double parse_coord(String coord) throws ParseException { diff --git a/altoslib/AltosPreferences.java b/altoslib/AltosPreferences.java index 3f8e7a07..8e625674 100644 --- a/altoslib/AltosPreferences.java +++ b/altoslib/AltosPreferences.java @@ -133,19 +133,25 @@ public class AltosPreferences { static int map_type; public static AltosFrequency[] load_common_frequencies() { - AltosFrequency[] frequencies = null; - AltosHashSet[] sets = AltosHashSet.array(backend.getString(frequenciesPreference,null)); - if (sets != null) { - ArrayList freqs = new ArrayList(); + AltosJson sets; + + try { + sets = AltosJson.fromString(backend.getString(frequenciesPreference,null)); - for (int i = 0; i < sets.length; i++) { - AltosFrequency f = AltosFrequency.fromHashSet(sets[i], null); - if (f != null) - freqs.add(f); + if (sets != null) { + ArrayList freqs = new ArrayList(); + + for (int i = 0; i < sets.size(); i++) { + AltosFrequency f = AltosFrequency.fromJson(sets.get(i), null); + if (f != null) + freqs.add(f); + } + frequencies = freqs.toArray(new AltosFrequency[0]); } - frequencies = freqs.toArray(new AltosFrequency[0]); + } catch (Exception e) { + sets = null; } if (frequencies == null) { @@ -178,10 +184,8 @@ public class AltosPreferences { } public static void save_common_frequencies() { - AltosHashSet[] sets = new AltosHashSet[common_frequencies.length]; - for (int i = 0; i < sets.length; i++) - sets[i] = common_frequencies[i].hashSet(); - backend.putString(frequenciesPreference, AltosHashSet.toString(sets)); + AltosJson json = new AltosJson(common_frequencies); + backend.putString(frequenciesPreference, json.toString()); flush_preferences(); } @@ -373,7 +377,7 @@ public class AltosPreferences { public static void set_state(AltosState state) { synchronized(backend) { - backend.putHashSet(String.format(statePreferenceFormat, state.serial), state.hashSet()); + backend.putJson(String.format(statePreferenceFormat, state.serial), state.json()); backend.putInt(statePreferenceLatest, state.serial); flush_preferences(); } @@ -413,7 +417,7 @@ public class AltosPreferences { public static AltosState state(int serial) { synchronized(backend) { try { - return AltosState.fromHashSet(backend.getHashSet(String.format(statePreferenceFormat, serial))); + return AltosState.fromJson(backend.getJson(String.format(statePreferenceFormat, serial))); } catch (Exception e) { return null; } diff --git a/altoslib/AltosPreferencesBackend.java b/altoslib/AltosPreferencesBackend.java index 9131ad39..d4c3d7e5 100644 --- a/altoslib/AltosPreferencesBackend.java +++ b/altoslib/AltosPreferencesBackend.java @@ -50,6 +50,22 @@ public abstract class AltosPreferencesBackend { putString(key, h.toString()); } + public AltosJson getJson(String key) { + String value = getString(key, null); + + if (value == null) + return null; + try { + return AltosJson.fromString(value); + } catch (IllegalArgumentException ie) { + return null; + } + } + + public void putJson(String key, AltosJson j) { + putString(key, j.toString()); + } + public abstract boolean nodeExists(String key); public abstract AltosPreferencesBackend node(String key); diff --git a/altoslib/AltosQuaternion.java b/altoslib/AltosQuaternion.java index af9eb475..6a09bb8e 100644 --- a/altoslib/AltosQuaternion.java +++ b/altoslib/AltosQuaternion.java @@ -17,7 +17,7 @@ package org.altusmetrum.altoslib_11; -public class AltosQuaternion implements AltosHashable { +public class AltosQuaternion implements AltosHashable, AltosJsonable { double r; /* real bit */ double x, y, z; /* imaginary bits */ @@ -158,6 +158,16 @@ public class AltosQuaternion implements AltosHashable { return h; } + public AltosJson json() { + AltosJson j = new AltosJson(); + + j.put("r", r); + j.put("x", x); + j.put("y", y); + j.put("z", z); + return j; + } + public AltosQuaternion(AltosHashSet h) { if (h == null) return; @@ -167,4 +177,14 @@ public class AltosQuaternion implements AltosHashable { y = h.getDouble("y", 0); z = h.getDouble("z", 0); } + + public AltosQuaternion(AltosJson j) { + if (j == null) + return; + + r = j.get_double("r", 1); + x = j.get_double("x", 0); + y = j.get_double("y", 0); + z = j.get_double("z", 0); + } } diff --git a/altoslib/AltosRotation.java b/altoslib/AltosRotation.java index e9c447ad..4b7ab407 100644 --- a/altoslib/AltosRotation.java +++ b/altoslib/AltosRotation.java @@ -17,7 +17,7 @@ package org.altusmetrum.altoslib_11; -public class AltosRotation implements AltosHashable { +public class AltosRotation implements AltosHashable, AltosJsonable { private AltosQuaternion rotation; public double tilt() { @@ -55,6 +55,10 @@ public class AltosRotation implements AltosHashable { return h; } + public AltosJson json() { + return rotation.json(); + } + public AltosRotation(AltosHashSet h) { rotation = new AltosQuaternion(h.getHash("rotation")); } @@ -65,4 +69,15 @@ public class AltosRotation implements AltosHashable { return new AltosRotation(h); } + + public AltosRotation(AltosJson j) { + rotation = new AltosQuaternion(j); + } + + public static AltosRotation fromJson(AltosJson j, AltosRotation def) { + if (j == null) + return def; + + return new AltosRotation(j); + } } diff --git a/altoslib/AltosState.java b/altoslib/AltosState.java index d359d67a..a3c6cc34 100644 --- a/altoslib/AltosState.java +++ b/altoslib/AltosState.java @@ -46,7 +46,7 @@ public class AltosState implements Cloneable, AltosHashable { private int prev_tick; public int boost_tick; - class AltosValue implements AltosHashable { + class AltosValue implements AltosHashable, AltosJsonable { double value; double prev_value; private double max_value; @@ -188,6 +188,17 @@ public class AltosState implements Cloneable, AltosHashable { return h; } + public AltosJson json() { + AltosJson j = new AltosJson(); + + j.put("value", value); + j.put("prev_value", prev_value); + j.put("max_value", max_value); + j.put("set_time", set_time); + j.put("prev_set_time", prev_set_time); + return j; + } + AltosValue(AltosHashSet h) { this(); if (h != null) { @@ -199,6 +210,17 @@ public class AltosState implements Cloneable, AltosHashable { } } + AltosValue(AltosJson j) { + this(); + if (j != null) { + value = j.get_double("value", value); + prev_value = j.get_double("prev_value", prev_value); + max_value = j.get_double("max_value", max_value); + set_time = j.get_double("set_time", 0); + prev_set_time = j.get_double("prev_set_time", 0); + } + } + AltosValue() { value = AltosLib.MISSING; prev_value = AltosLib.MISSING; @@ -213,9 +235,15 @@ public class AltosState implements Cloneable, AltosHashable { return new AltosValue(h); } - class AltosCValue implements AltosHashable { + AltosValue AltosValue_fromJson(AltosJson j, AltosValue def) { + if (j == null) + return def; + return new AltosValue(j); + } + + class AltosCValue implements AltosHashable, AltosJsonable { - class AltosIValue extends AltosValue implements AltosHashable { + class AltosIValue extends AltosValue implements AltosHashable, AltosJsonable { boolean can_max() { return c_can_max(); } @@ -227,6 +255,10 @@ public class AltosState implements Cloneable, AltosHashable { AltosIValue(AltosHashSet h) { super(h); } + + AltosIValue(AltosJson j) { + super(j); + } }; public AltosIValue measured; @@ -320,7 +352,6 @@ public class AltosState implements Cloneable, AltosHashable { computed = new AltosIValue(); } - public AltosHashSet hashSet() { AltosHashSet h = new AltosHashSet(); @@ -329,10 +360,23 @@ public class AltosState implements Cloneable, AltosHashable { return h; } + public AltosJson json() { + AltosJson j = new AltosJson(); + + j.put("measured", measured.json()); + j.put("computed", computed.json()); + return j; + } + AltosCValue(AltosHashSet h) { measured = new AltosIValue(h.getHash("measured")); computed = new AltosIValue(h.getHash("computed")); } + + AltosCValue(AltosJson j) { + measured = new AltosIValue(j.get("measured")); + computed = new AltosIValue(j.get("computed")); + } } AltosCValue AltosCValue_fromHashSet(AltosHashSet h, AltosCValue def) { @@ -341,6 +385,12 @@ public class AltosState implements Cloneable, AltosHashable { return new AltosCValue(h); } + AltosCValue AltosCValue_fromJson(AltosJson j, AltosCValue def) { + if (j == null) + return def; + return new AltosCValue(j); + } + private int state; public int flight; public int serial; @@ -394,6 +444,10 @@ public class AltosState implements Cloneable, AltosHashable { AltosGpsGroundAltitude (AltosHashSet h) { super(h); } + + AltosGpsGroundAltitude (AltosJson j) { + super(j); + } } AltosGpsGroundAltitude AltosGpsGroundAltitude_fromHashSet(AltosHashSet h, AltosGpsGroundAltitude def) { @@ -401,6 +455,11 @@ public class AltosState implements Cloneable, AltosHashable { return new AltosGpsGroundAltitude(h); } + AltosGpsGroundAltitude AltosGpsGroundAltitude_fromJson(AltosJson j, AltosGpsGroundAltitude def) { + if (j == null) return def; + return new AltosGpsGroundAltitude(j); + } + private AltosGpsGroundAltitude gps_ground_altitude; public double gps_ground_altitude() { @@ -430,6 +489,10 @@ public class AltosState implements Cloneable, AltosHashable { AltosGroundPressure (AltosHashSet h) { super(h); } + + AltosGroundPressure (AltosJson j) { + super(j); + } } AltosGroundPressure AltosGroundPressure_fromHashSet(AltosHashSet h, AltosGroundPressure def) { @@ -437,6 +500,11 @@ public class AltosState implements Cloneable, AltosHashable { return new AltosGroundPressure(h); } + AltosGroundPressure AltosGroundPressure_fromJson(AltosJson j, AltosGroundPressure def) { + if (j == null) return def; + return new AltosGroundPressure(j); + } + private AltosGroundPressure ground_pressure; public double ground_pressure() { @@ -473,6 +541,10 @@ public class AltosState implements Cloneable, AltosHashable { AltosAltitude (AltosHashSet h) { super(h); } + + AltosAltitude (AltosJson j) { + super(j); + } } AltosAltitude AltosAltitude_fromHashSet(AltosHashSet h, AltosAltitude def) { @@ -480,6 +552,11 @@ public class AltosState implements Cloneable, AltosHashable { return new AltosAltitude(h); } + AltosAltitude AltosAltitude_fromJson(AltosJson j, AltosAltitude def) { + if (j == null) return def; + return new AltosAltitude(j); + } + private AltosAltitude altitude; class AltosGpsAltitude extends AltosValue implements AltosHashable { @@ -506,6 +583,10 @@ public class AltosState implements Cloneable, AltosHashable { AltosGpsAltitude (AltosHashSet h) { super(h); } + + AltosGpsAltitude (AltosJson j) { + super(j); + } } AltosGpsAltitude AltosGpsAltitude_fromHashSet(AltosHashSet h, AltosGpsAltitude def) { @@ -513,6 +594,11 @@ public class AltosState implements Cloneable, AltosHashable { return new AltosGpsAltitude(h); } + AltosGpsAltitude AltosGpsAltitude_fromJson(AltosJson j, AltosGpsAltitude def) { + if (j == null) return def; + return new AltosGpsAltitude(j); + } + private AltosGpsAltitude gps_altitude; private AltosValue gps_ground_speed; @@ -594,6 +680,10 @@ public class AltosState implements Cloneable, AltosHashable { AltosPressure (AltosHashSet h) { super(h); } + + AltosPressure (AltosJson j) { + super(j); + } } AltosPressure AltosPressure_fromHashSet(AltosHashSet h, AltosPressure def) { @@ -601,6 +691,11 @@ public class AltosState implements Cloneable, AltosHashable { return new AltosPressure(h); } + AltosPressure AltosPressure_fromJson(AltosJson j, AltosPressure def) { + if (j == null) return def; + return new AltosPressure(j); + } + private AltosPressure pressure; public double pressure() { @@ -693,6 +788,10 @@ public class AltosState implements Cloneable, AltosHashable { AltosSpeed (AltosHashSet h) { super(h); } + + AltosSpeed (AltosJson j) { + super(j); + } } AltosSpeed AltosSpeed_fromHashSet(AltosHashSet h, AltosSpeed def) { @@ -700,6 +799,11 @@ public class AltosState implements Cloneable, AltosHashable { return new AltosSpeed(h); } + AltosSpeed AltosSpeed_fromJson(AltosJson j, AltosSpeed def) { + if (j == null) return def; + return new AltosSpeed(j); + } + private AltosSpeed speed; public double speed() { @@ -747,6 +851,10 @@ public class AltosState implements Cloneable, AltosHashable { AltosAccel (AltosHashSet h) { super(h); } + + AltosAccel (AltosJson j) { + super(j); + } } AltosAccel AltosAccel_fromHashSet(AltosHashSet h, AltosAccel def) { @@ -754,6 +862,11 @@ public class AltosState implements Cloneable, AltosHashable { return new AltosAccel(h); } + AltosAccel AltosAccel_fromJson(AltosJson j, AltosAccel def) { + if (j == null) return def; + return new AltosAccel(j); + } + AltosAccel acceleration; public double acceleration() { @@ -1639,16 +1752,31 @@ public class AltosState implements Cloneable, AltosHashable { AltosState s = new AltosState(); s.copy(this); - AltosHashSet hash = hashSet(); - String onetrip = hash.toString(); - AltosHashSet back = AltosHashSet.fromString(onetrip); - AltosState tripstate = AltosState.fromHashSet(back); - AltosHashSet triphash = tripstate.hashSet(); - String twotrip = triphash.toString(); - - if (!onetrip.equals(twotrip)) { - System.out.printf("%s\n%s\n", onetrip, twotrip); - System.exit(1); + if (false) { + AltosJson json = json(); + String onetrip = json.toPrettyString(); + AltosJson back = AltosJson.fromString(onetrip); + AltosState tripstate = AltosState.fromJson(back); + AltosJson tripjson = tripstate.json(); + String twotrip = tripjson.toPrettyString(); + + if (!onetrip.equals(twotrip)) { + System.out.printf("one:\n%s\ntwo:\n%s\n", onetrip, twotrip); + System.exit(1); + } + } + if (false) { + AltosHashSet hash = hashSet(); + String onetrip = hash.toString(); + AltosHashSet back = AltosHashSet.fromString(onetrip); + AltosState tripstate = AltosState.fromHashSet(back); + AltosHashSet triphash = tripstate.hashSet(); + String twotrip = triphash.toString(); + + if (!onetrip.equals(twotrip)) { + System.out.printf("%s\n%s\n", onetrip, twotrip); + System.exit(1); + } } return s; } @@ -1763,6 +1891,112 @@ public class AltosState implements Cloneable, AltosHashable { return h; } + public AltosJson json() { + AltosJson j = new AltosJson(); + + j.put("valid", true); + j.put("set", set); + j.put("received_time", received_time); + j.put("time", time); + j.put("prev_time", prev_time); + j.put("time_change", time_change); + j.put("tick", tick); + j.put("prev_tick", prev_tick); + j.put("boost_tick", boost_tick); + j.put("state", state); + j.put("flight", flight); + j.put("serial", serial); + j.put("altitude_32", altitude_32); + j.put("receiver_serial", receiver_serial); + j.put("landed", landed); + j.put("ascent", ascent); + j.put("boost", boost); + j.put("rssi", rssi); + j.put("status", status); + j.put("device_type", device_type); + j.put("config_major", config_major); + j.put("config_minor", config_minor); + j.put("apogee_delay", apogee_delay); + j.put("main_deploy", main_deploy); + j.put("flight_log_max", flight_log_max); + j.put("ground_altitude", ground_altitude); + j.put("gps_ground_altitude", gps_ground_altitude); + j.put("ground_pressure", ground_pressure); + j.put("altitude", altitude); + j.put("gps_altitude", gps_altitude); + j.put("gps_ground_speed", gps_ground_speed); + j.put("gps_ascent_rate", gps_ascent_rate); + j.put("gps_course", gps_course); + j.put("gps_speed", gps_speed); + j.put("pressure", pressure); + j.put("speed", speed); + j.put("acceleration", acceleration); + j.put("orient", orient); + j.put("kalman_height", kalman_height); + j.put("kalman_speed", kalman_speed); + j.put("kalman_acceleration", kalman_acceleration); + + j.put("battery_voltage",battery_voltage); + j.put("pyro_voltage",pyro_voltage); + j.put("temperature",temperature); + j.put("apogee_voltage",apogee_voltage); + j.put("main_voltage",main_voltage); + j.put("ignitor_voltage",ignitor_voltage); + j.put("gps", gps); + j.put("temp_gps", temp_gps); + j.put("temp_gps_sat_tick", temp_gps_sat_tick); + j.put("gps_pending", gps_pending); + j.put("gps_sequence", gps_sequence); + j.put("imu", imu); + j.put("mag", mag); + + j.put("npad", npad); + j.put("gps_waiting", gps_waiting); + j.put("gps_ready", gps_ready); + j.put("ngps", ngps); + j.put("from_pad", from_pad); + j.put("elevation", elevation); + j.put("range", range); + j.put("gps_height", gps_height); + j.put("pad_lat", pad_lat); + j.put("pad_lon", pad_lon); + j.put("pad_alt", pad_alt); + j.put("speak_tick", speak_tick); + j.put("speak_altitude", speak_altitude); + j.put("callsign", callsign); + j.put("firmware_version", firmware_version); + j.put("accel_plus_g", accel_plus_g); + j.put("accel_minus_g", accel_minus_g); + j.put("accel", accel); + j.put("ground_accel", ground_accel); + j.put("ground_accel_avg", ground_accel_avg); + j.put("log_format", log_format); + j.put("log_space", log_space); + j.put("product", product); + j.put("baro", baro); + j.put("companion", companion); + j.put("pyro_fired", pyro_fired); + j.put("accel_zero_along", accel_zero_along); + j.put("accel_zero_across", accel_zero_across); + j.put("accel_zero_through", accel_zero_through); + + j.put("rotation", rotation); + j.put("ground_rotation", ground_rotation); + + j.put("pad_orientation", pad_orientation); + + j.put("accel_ground_along", accel_ground_along); + j.put("accel_ground_across", accel_ground_across); + j.put("accel_ground_through", accel_ground_through); + + j.put("gyro_zero_roll", gyro_zero_roll); + j.put("gyro_zero_pitch", gyro_zero_pitch); + j.put("gyro_zero_yaw", gyro_zero_yaw); + + j.put("last_imu_time", last_imu_time); + return j; + } + public AltosState(AltosHashSet h) { this(); @@ -1867,6 +2101,109 @@ public class AltosState implements Cloneable, AltosHashable { last_imu_time = h.getDouble("last_imu_time", last_imu_time); } + public AltosState(AltosJson j) { + this(); + + set = j.get_int("set", set); + received_time = j.get_long("received_time", received_time); + time = j.get_double("time", time); + prev_time = j.get_double("prev_time", prev_time); + time_change = j.get_double("time_change", time_change); + tick = j.get_int("tick", tick); + prev_tick = j.get_int("prev_tick", prev_tick); + boost_tick = j.get_int("boost_tick", boost_tick); + state = j.get_int("state", state); + flight = j.get_int("flight", flight); + serial = j.get_int("serial", serial); + altitude_32 = j.get_int("altitude_32", altitude_32); + receiver_serial = j.get_int("receiver_serial", receiver_serial); + landed = j.get_boolean("landed", landed); + ascent = j.get_boolean("ascent", ascent); + boost = j.get_boolean("boost", boost); + rssi = j.get_int("rssi", rssi); + status = j.get_int("status", status); + device_type = j.get_int("device_type", device_type); + config_major = j.get_int("config_major", config_major); + config_minor = j.get_int("config_minor", config_minor); + apogee_delay = j.get_int("apogee_delay", apogee_delay); + main_deploy = j.get_int("main_deploy", main_deploy); + flight_log_max = j.get_int("flight_log_max", flight_log_max); + ground_altitude = AltosCValue_fromJson(j.get("ground_altitude"), ground_altitude); + gps_ground_altitude = AltosGpsGroundAltitude_fromJson(j.get("gps_ground_altitude"), gps_ground_altitude); + ground_pressure = AltosGroundPressure_fromJson(j.get("ground_pressure"), ground_pressure); + altitude = AltosAltitude_fromJson(j.get("altitude"), altitude); + gps_altitude = AltosGpsAltitude_fromJson(j.get("gps_altitude"), gps_altitude); + gps_ground_speed = AltosValue_fromJson(j.get("gps_ground_speed"), gps_ground_speed); + gps_ascent_rate = AltosValue_fromJson(j.get("gps_ascent_rate"), gps_ascent_rate); + gps_course = AltosValue_fromJson(j.get("gps_course"), gps_course); + gps_speed = AltosValue_fromJson(j.get("gps_speed"), gps_speed); + pressure = AltosPressure_fromJson(j.get("pressure"), pressure); + speed = AltosSpeed_fromJson(j.get("speed"), speed); + acceleration = AltosAccel_fromJson(j.get("acceleration"), acceleration); + orient = AltosCValue_fromJson(j.get("orient"), orient); + kalman_height = AltosValue_fromJson(j.get("kalman_height"), kalman_height); + kalman_speed = AltosValue_fromJson(j.get("kalman_speed"), kalman_speed); + kalman_acceleration = AltosValue_fromJson(j.get("kalman_acceleration"), kalman_acceleration); + + battery_voltage = j.get_double("battery_voltage", battery_voltage); + pyro_voltage = j.get_double("pyro_voltage", pyro_voltage); + temperature = j.get_double("temperature", temperature); + apogee_voltage = j.get_double("apogee_voltage", apogee_voltage); + main_voltage= j.get_double("main_voltage", main_voltage); + ignitor_voltage = j.get_double_array("ignitor_voltage", ignitor_voltage); + gps = AltosGPS.fromJson(j.get("gps"), gps); + temp_gps = AltosGPS.fromJson(j.get("temp_gps"), temp_gps); + temp_gps_sat_tick = j.get_int("temp_gps_sat_tick", temp_gps_sat_tick); + gps_pending = j.get_boolean("gps_pending", gps_pending); + gps_sequence = j.get_int("gps_sequence", gps_sequence); + imu = AltosIMU.fromJson(j.get("imu"), imu); + mag = AltosMag.fromJson(j.get("mag"), mag); + + npad = j.get_int("npad", npad); + gps_waiting = j.get_int("gps_waiting", gps_waiting); + gps_ready = j.get_boolean("gps_ready", gps_ready); + ngps = j.get_int("ngps", ngps); + from_pad = AltosGreatCircle.fromJson(j.get("from_pad"), from_pad); + elevation = j.get_double("elevation", elevation); + range = j.get_double("range", range); + gps_height = j.get_double("gps_height", gps_height); + pad_lat = j.get_double("pad_lat", pad_lat); + pad_lon = j.get_double("pad_lon", pad_lon); + pad_alt = j.get_double("pad_alt", pad_alt); + speak_tick = j.get_int("speak_tick", speak_tick); + speak_altitude = j.get_double("speak_altitude", speak_altitude); + callsign = j.get_string("callsign", callsign); + firmware_version = j.get_string("firmware_version", firmware_version); + accel_plus_g = j.get_double("accel_plus_g", accel_plus_g); + accel_minus_g = j.get_double("accel_minus_g", accel_minus_g); + accel = j.get_double("accel", accel); + ground_accel = j.get_double("ground_accel", ground_accel); + ground_accel_avg = j.get_double("ground_accel_avg", ground_accel_avg); + log_format = j.get_int("log_format", log_format); + log_space = j.get_int("log_space", log_space); + product = j.get_string("product", product); + baro = AltosMs5607.fromJson(j.get("baro"), baro); + companion = AltosCompanion.fromJson(j.get("companion"), companion); + pyro_fired = j.get_int("pyro_fired", pyro_fired); + accel_zero_along = j.get_double("accel_zero_along", accel_zero_along); + accel_zero_across = j.get_double("accel_zero_across", accel_zero_across); + accel_zero_through = j.get_double("accel_zero_through", accel_zero_through); + + rotation = AltosRotation.fromJson(j.get("rotation"), rotation); + ground_rotation = AltosRotation.fromJson(j.get("ground_rotation"), ground_rotation); + + pad_orientation = j.get_int("pad_orientation", pad_orientation); + + accel_ground_along = j.get_double("accel_ground_along", accel_ground_along); + accel_ground_across = j.get_double("accel_ground_across", accel_ground_across); + accel_ground_through = j.get_double("accel_ground_through", accel_ground_through); + + gyro_zero_roll = j.get_double("gyro_zero_roll", gyro_zero_roll); + gyro_zero_pitch = j.get_double("gyro_zero_pitch", gyro_zero_pitch); + gyro_zero_yaw = j.get_double("gyro_zero_yaw", gyro_zero_yaw); + + last_imu_time = j.get_double("last_imu_time", last_imu_time); + } public static AltosState fromHashSet(AltosHashSet h) { if (h == null) return null; @@ -1874,4 +2211,12 @@ public class AltosState implements Cloneable, AltosHashable { return null; return new AltosState(h); } + + public static AltosState fromJson(AltosJson j) { + if (j == null) + return null; + if (!j.get_boolean("valid", false)) + return null; + return new AltosState(j); + } } diff --git a/altoslib/Makefile.am b/altoslib/Makefile.am index d4554df3..534d2047 100644 --- a/altoslib/Makefile.am +++ b/altoslib/Makefile.am @@ -163,6 +163,8 @@ altoslib_JAVA = \ AltosMapTypeListener.java \ AltosHashSet.java \ AltosHashable.java \ + AltosJson.java \ + AltosJsonable.java \ AltosVersion.java JAR=altoslib_$(ALTOSLIB_VERSION).jar -- cgit v1.2.3 From f7e2f7f430e612c682bf55478860054ce94b995f Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Wed, 15 Jun 2016 22:52:08 -0700 Subject: altoslib: Remove AltosHashSet code Everything has switched to JSON now. Signed-off-by: Keith Packard --- altoslib/AltosCompanion.java | 28 +-- altoslib/AltosFrequency.java | 19 -- altoslib/AltosGPS.java | 63 +----- altoslib/AltosGPSSat.java | 56 ------ altoslib/AltosGreatCircle.java | 29 +-- altoslib/AltosHashSet.java | 316 ----------------------------- altoslib/AltosHashable.java | 25 --- altoslib/AltosIMU.java | 33 +--- altoslib/AltosMag.java | 26 +-- altoslib/AltosMs5607.java | 44 +---- altoslib/AltosPreferencesBackend.java | 12 -- altoslib/AltosQuaternion.java | 22 +-- altoslib/AltosRotation.java | 20 +- altoslib/AltosState.java | 360 +--------------------------------- altoslib/Makefile.am | 2 - 15 files changed, 16 insertions(+), 1039 deletions(-) delete mode 100644 altoslib/AltosHashSet.java delete mode 100644 altoslib/AltosHashable.java (limited to 'altoslib') diff --git a/altoslib/AltosCompanion.java b/altoslib/AltosCompanion.java index abb98830..2db8ea1b 100644 --- a/altoslib/AltosCompanion.java +++ b/altoslib/AltosCompanion.java @@ -19,7 +19,7 @@ package org.altusmetrum.altoslib_11; import java.io.*; -public class AltosCompanion implements AltosHashable, AltosJsonable { +public class AltosCompanion implements AltosJsonable { public final static int board_id_telescience = 0x0a; public final static int MAX_CHANNELS = 12; @@ -38,17 +38,6 @@ public class AltosCompanion implements AltosHashable, AltosJsonable { companion_data = new int[channels]; } - public AltosHashSet hashSet() { - AltosHashSet h = new AltosHashSet(); - - h.putInt("tick", tick); - h.putInt("board_id", board_id); - h.putInt("update_period", update_period); - h.putInt("channels", channels); - h.putIntArray("companion_data", companion_data); - return h; - } - public AltosJson json() { AltosJson j = new AltosJson(); @@ -60,21 +49,6 @@ public class AltosCompanion implements AltosHashable, AltosJsonable { return j; } - public AltosCompanion(AltosHashSet h) { - tick = h.getInt("tick", tick); - board_id = h.getInt("board_id", board_id); - update_period = h.getInt("update_period", update_period); - channels = h.getInt("channels", channels); - companion_data = h.getIntArray("companion_data", new int[channels]); - } - - public static AltosCompanion fromHashSet(AltosHashSet h, AltosCompanion def) { - if (h == null) - return def; - - return new AltosCompanion(h); - } - public AltosCompanion(AltosJson j) { tick = j.get_int("tick", tick); board_id = j.get_int("board_id", board_id); diff --git a/altoslib/AltosFrequency.java b/altoslib/AltosFrequency.java index 99828d53..3c1631a8 100644 --- a/altoslib/AltosFrequency.java +++ b/altoslib/AltosFrequency.java @@ -58,14 +58,6 @@ public class AltosFrequency implements AltosJsonable { return diff < 0.010; } - public AltosHashSet hashSet() { - AltosHashSet h = new AltosHashSet(); - - h.putDouble("frequency", frequency); - h.putString("description", description); - return h; - } - public AltosJson json() { AltosJson j = new AltosJson(); @@ -79,17 +71,6 @@ public class AltosFrequency implements AltosJsonable { description = d; } - private AltosFrequency(AltosHashSet h) { - frequency = h.getDouble("frequency", 0.0); - description = h.getString("description", ""); - } - - public static AltosFrequency fromHashSet(AltosHashSet h, AltosFrequency def) { - if (h == null) - return def; - return new AltosFrequency(h); - } - private AltosFrequency(AltosJson j) { frequency = j.get_double("frequency", 0.0); description = j.get_string("description", ""); diff --git a/altoslib/AltosGPS.java b/altoslib/AltosGPS.java index d3710e4e..ba2eda1b 100644 --- a/altoslib/AltosGPS.java +++ b/altoslib/AltosGPS.java @@ -21,7 +21,7 @@ import java.text.*; import java.util.concurrent.*; import java.io.*; -public class AltosGPS implements Cloneable, AltosHashable, AltosJsonable { +public class AltosGPS implements Cloneable, AltosJsonable { public final static int MISSING = AltosLib.MISSING; @@ -389,34 +389,6 @@ public class AltosGPS implements Cloneable, AltosHashable, AltosJsonable { } } - public AltosHashSet hashSet() { - AltosHashSet h = new AltosHashSet(); - - h.putInt("nsat", nsat); - h.putBoolean("locked", locked); - h.putBoolean("connected", connected); - h.putDouble("lat", lat); - h.putDouble("lon", lon); - h.putDouble("alt", alt); - h.putInt("year", year); - h.putInt("month", month); - h.putInt("day", day); - h.putInt("hour", hour); - h.putInt("minute", minute); - h.putInt("second", second); - - h.putDouble("ground_speed", ground_speed); - h.putInt("course", course); - h.putDouble("climb_rate", climb_rate); - h.putDouble("pdop", pdop); - h.putDouble("hdop", hdop); - h.putDouble("vdop", vdop); - h.putDouble("h_error", h_error); - h.putDouble("v_error", v_error); - h.putString("cc_gps_sat", AltosGPSSat.toString(cc_gps_sat)); - return h; - } - public AltosJson json() { AltosJson j = new AltosJson(); @@ -445,32 +417,6 @@ public class AltosGPS implements Cloneable, AltosHashable, AltosJsonable { return j; } - public AltosGPS(AltosHashSet h) { - init(); - nsat = h.getInt("nsat", nsat); - locked = h.getBoolean("locked", locked); - connected = h.getBoolean("connected", connected); - lat = h.getDouble("lat", lat); - lon = h.getDouble("lon", lon); - alt = h.getDouble("alt", alt); - year = h.getInt("year", year); - month = h.getInt("month", month); - day = h.getInt("day", day); - hour = h.getInt("hour", hour); - minute = h.getInt("minute", minute); - second = h.getInt("second", second); - - ground_speed = h.getDouble("ground_speed", ground_speed); - course = h.getInt("course", course); - climb_rate = h.getDouble("climb_rate", climb_rate); - pdop = h.getDouble("pdop", pdop); - hdop = h.getDouble("hdop", hdop); - vdop = h.getDouble("vdop", vdop); - h_error = h.getDouble("h_error", h_error); - v_error = h.getDouble("v_error", v_error); - cc_gps_sat = AltosGPSSat.array(h.getString("cc_gps_sat", null)); - } - public AltosGPS(AltosJson j) { init(); nsat = j.get_int("nsat", nsat); @@ -497,13 +443,6 @@ public class AltosGPS implements Cloneable, AltosHashable, AltosJsonable { cc_gps_sat = AltosGPSSat.json_array(j.get("cc_gps_sat")); } - public static AltosGPS fromHashSet(AltosHashSet h, AltosGPS def) { - if (h == null) - return def; - - return new AltosGPS(h); - } - public static AltosGPS fromJson(AltosJson j, AltosGPS def) { if (j == null) return def; diff --git a/altoslib/AltosGPSSat.java b/altoslib/AltosGPSSat.java index 319fe7f1..8cdeed0e 100644 --- a/altoslib/AltosGPSSat.java +++ b/altoslib/AltosGPSSat.java @@ -34,13 +34,6 @@ public class AltosGPSSat implements AltosJsonable { public AltosGPSSat() { } - public AltosHashSet hashSet() { - AltosHashSet h = new AltosHashSet(); - h.putInt("svid", svid); - h.putInt("c_n0", c_n0); - return h; - } - public AltosJson json() { AltosJson j = new AltosJson(); j.put("svid", svid); @@ -48,22 +41,11 @@ public class AltosGPSSat implements AltosJsonable { return j; } - private AltosGPSSat(AltosHashSet h) { - svid = h.getInt("svid", 0); - c_n0 = h.getInt("c_n0", 0); - } - private AltosGPSSat(AltosJson j) { svid = j.get_int("svid", 0); c_n0 = j.get_int("c_n0", 0); } - static public AltosGPSSat fromHashSet(AltosHashSet h, AltosGPSSat def) { - if (h == null) - return def; - return new AltosGPSSat(h); - } - static public AltosGPSSat[] json_array(AltosJson j) { if (j == null) return null; @@ -74,43 +56,5 @@ public class AltosGPSSat implements AltosJsonable { sats[i] = new AltosGPSSat(j.get(i)); return sats; } - - static public AltosGPSSat[] array(String string) { - - if (string == null) - return null; - - try { - StringReader reader = new StringReader(string); - ArrayList array = new ArrayList(); - String element; - - while ((element = AltosHashSet.get_token(reader)) != null) { - AltosGPSSat sat = AltosGPSSat.fromHashSet(AltosHashSet.fromString(element), null); - if (sat != null) - array.add(sat); - } - return array.toArray(new AltosGPSSat[0]); - } catch (IOException ie) { - return null; - } - } - - public static String toString(AltosGPSSat[] sats) { - if (sats == null) - return null; - - try { - StringWriter writer = new StringWriter(); - - for (AltosGPSSat g : sats) { - String element = g.hashSet().toString(); - AltosHashSet.put_token(writer, element); - } - return writer.toString(); - } catch (IOException ie) { - return null; - } - } } diff --git a/altoslib/AltosGreatCircle.java b/altoslib/AltosGreatCircle.java index 8fd380a1..f2c1783d 100644 --- a/altoslib/AltosGreatCircle.java +++ b/altoslib/AltosGreatCircle.java @@ -20,7 +20,7 @@ package org.altusmetrum.altoslib_11; import java.lang.Math; import java.io.*; -public class AltosGreatCircle implements Cloneable, AltosHashable, AltosJsonable { +public class AltosGreatCircle implements Cloneable, AltosJsonable { public double distance; public double bearing; public double range; @@ -104,17 +104,6 @@ public class AltosGreatCircle implements Cloneable, AltosHashable, AltosJsonable elevation = 0; } - public AltosHashSet hashSet() { - AltosHashSet h = new AltosHashSet(); - - h.putDouble("distance", distance); - h.putDouble("bearing", bearing); - h.putDouble("range", range); - h.putDouble("elevation", elevation); - - return h; - } - public AltosJson json() { AltosJson j = new AltosJson(); @@ -126,22 +115,6 @@ public class AltosGreatCircle implements Cloneable, AltosHashable, AltosJsonable return j; } - public AltosGreatCircle(AltosHashSet h) { - this(); - - distance = h.getDouble("distance", distance); - bearing = h.getDouble("bearing", bearing); - range = h.getDouble("range", range); - elevation = h.getDouble("elevation", elevation); - } - - public static AltosGreatCircle fromHashSet(AltosHashSet h, AltosGreatCircle def) { - if (h == null) - return def; - - return new AltosGreatCircle(h); - } - public AltosGreatCircle(AltosJson j) { this(); diff --git a/altoslib/AltosHashSet.java b/altoslib/AltosHashSet.java deleted file mode 100644 index 77bd48c2..00000000 --- a/altoslib/AltosHashSet.java +++ /dev/null @@ -1,316 +0,0 @@ -/* - * Copyright © 2016 Keith Packard - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. - */ - -package org.altusmetrum.altoslib_11; - -import java.io.*; -import java.util.*; -import java.text.*; - -public class AltosHashSet extends Hashtable { - static private int get(StringReader reader) throws IOException { - return reader.read(); - } - - static public String get_token(StringReader reader) throws IOException { - int c = get(reader); - - if (c == -1) - return null; - - ArrayList chars = new ArrayList(); - - for (;;) { - if (c == -1 || c == ';') - break; - if (c == '\\') - c = get(reader); - chars.add(c); - c = get(reader); - } - int[] ch = new int[chars.size()]; - for (int i = 0; i < ch.length; i++) - ch[i] = chars.get(i); - return new String(ch, 0, ch.length); - } - - static private void put(StringWriter writer, int c) throws IOException { - writer.write(c); - } - - static public void put_token(StringWriter writer, String token) throws IOException { - for (int i = 0; i < token.length(); i++) { - int c = token.codePointAt(i); - - switch (c) { - case ';': - case '\\': - put(writer, '\\'); - } - put(writer, c); - } - put(writer, ';'); - } - - public String toString() { - try { - StringWriter writer = new StringWriter(); - - for (String key : keySet()) { - String value = get(key); - put_token(writer, key); - put_token(writer, value); - } - return writer.toString(); - } catch (IOException ie) { - return null; - } - } - - public void putBoolean(String key, boolean value) { - put(key, value ? "t" : "f"); - } - - public boolean getBoolean(String key, boolean def) { - String value = get(key); - - if (value == null) - return def; - if (value.equals("t")) - return true; - if (value.equals("f")) - return false; - return def; - } - - public void putInt(String key, int value) { - put(key, Integer.toString(value)); - } - - public int getInt(String key, int def) { - String value = get(key); - - if (value == null) - return def; - try { - return AltosParse.parse_int(value); - } catch (ParseException pe) { - return def; - } - } - - public void putIntArray(String key, int value[]) { - if (value == null) - return; - - StringWriter writer = new StringWriter(); - - try { - for (int i = 0; i < value.length; i++) - put_token(writer, Integer.toString(value[i])); - put(key, writer.toString()); - } catch (IOException ie) { - } - } - - public int[] getIntArray(String key, int[] def) { - String value = get(key); - - if (value == null) - return def; - try { - StringReader reader = new StringReader(value); - ArrayList array = new ArrayList(); - String elt; - - while ((elt = get_token(reader)) != null) - array.add(AltosParse.parse_int(elt)); - int[] ret = new int[array.size()]; - for (int i = 0; i < ret.length; i++) - ret[i] = array.get(i); - return ret; - } catch (ParseException pe) { - return def; - } catch (IOException ie) { - return def; - } - } - - public void putLong(String key, long value) { - put(key, Long.toString(value)); - } - - public long getLong(String key, long def) { - String value = get(key); - - if (value == null) - return def; - try { - return AltosParse.parse_long(value); - } catch (ParseException pe) { - return def; - } - } - - public void putDouble(String key, double value) { - put(key, AltosParse.format_double_net(value)); - } - - public double getDouble(String key, double def) { - String value = get(key); - - if (value == null) - return def; - try { - return AltosParse.parse_double_net(value); - } catch (ParseException pe) { - return def; - } - } - - public void putDoubleArray(String key, double value[]) { - if (value == null) - return; - - StringWriter writer = new StringWriter(); - - try { - for (int i = 0; i < value.length; i++) - put_token(writer, AltosParse.format_double_net(value[i])); - put(key, writer.toString()); - } catch (IOException ie) { - } - } - - public double[] getDoubleArray(String key, double[] def) { - String value = get(key); - - if (value == null) - return def; - try { - StringReader reader = new StringReader(value); - ArrayList array = new ArrayList(); - String elt; - - while ((elt = get_token(reader)) != null) - array.add(AltosParse.parse_double_net(elt)); - double[] ret = new double[array.size()]; - for (int i = 0; i < ret.length; i++) - ret[i] = array.get(i); - return ret; - } catch (ParseException pe) { - return def; - } catch (IOException ie) { - return def; - } - } - - public String getString(String key, String def) { - String value = get(key); - - if (value == null) - return def; - return value; - } - - public void putString(String key, String value) { - if (value != null) - put(key, value); - } - - public AltosHashSet getHash(String key) { - String value = get(key); - - if (value == null) - return null; - try { - return new AltosHashSet(value); - } catch (IOException ie) { - return null; - } - } - - public void putHash(String key, AltosHashSet h) { - put(key, h.toString()); - } - - public void putHashable(String key, AltosHashable h) { - if (h == null) - return; - - put(key, h.hashSet().toString()); - } - - private AltosHashSet (String string) throws IOException { - StringReader reader = new StringReader(string); - String key, value; - - for (;;) { - key = get_token(reader); - value = get_token(reader); - if (key == null || value == null) - break; - put(key, value); - } - } - - public AltosHashSet() { - } - - static public AltosHashSet fromString(String string) { - try { - return new AltosHashSet(string); - } catch (IOException ie) { - return null; - } - } - - static public AltosHashSet[] array(String string) { - - if (string == null) - return null; - - try { - StringReader reader = new StringReader(string); - ArrayList array = new ArrayList(); - String element; - - while ((element = get_token(reader)) != null) - array.add(new AltosHashSet(element)); - return array.toArray(new AltosHashSet[0]); - } catch (IOException ie) { - return null; - } - } - - static public String toString(AltosHashSet[] sets) { - if (sets == null) - return null; - - try { - StringWriter writer = new StringWriter(); - - for (AltosHashSet h : sets) { - String element = h.toString(); - put_token(writer, element); - } - return writer.toString(); - } catch (IOException ie) { - return null; - } - } -} diff --git a/altoslib/AltosHashable.java b/altoslib/AltosHashable.java deleted file mode 100644 index e228543d..00000000 --- a/altoslib/AltosHashable.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright © 2016 Keith Packard - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. - */ - -package org.altusmetrum.altoslib_11; - -import java.io.*; - -public interface AltosHashable { - - public AltosHashSet hashSet(); -} diff --git a/altoslib/AltosIMU.java b/altoslib/AltosIMU.java index ecc02f15..672c6111 100644 --- a/altoslib/AltosIMU.java +++ b/altoslib/AltosIMU.java @@ -20,7 +20,7 @@ package org.altusmetrum.altoslib_11; import java.util.concurrent.*; import java.io.*; -public class AltosIMU implements Cloneable, AltosHashable, AltosJsonable { +public class AltosIMU implements Cloneable, AltosJsonable { public int accel_along; public int accel_across; public int accel_through; @@ -116,18 +116,6 @@ public class AltosIMU implements Cloneable, AltosHashable, AltosJsonable { } } - public AltosIMU (AltosHashSet h) { - this(); - - accel_along = h.getInt("accel_along", accel_along); - accel_across = h.getInt("accel_across", accel_across); - accel_through = h.getInt("accel_through", accel_through); - - gyro_roll = h.getInt("gyro_roll", gyro_roll); - gyro_pitch = h.getInt("gyro_pitch", gyro_pitch); - gyro_yaw = h.getInt("gyro_yaw", gyro_yaw); - } - public AltosIMU (AltosJson j) { this(); @@ -140,31 +128,12 @@ public class AltosIMU implements Cloneable, AltosHashable, AltosJsonable { gyro_yaw = j.get_int("gyro_yaw", gyro_yaw); } - static public AltosIMU fromHashSet(AltosHashSet h, AltosIMU def) { - if (h == null) - return def; - return new AltosIMU(h); - } - static public AltosIMU fromJson(AltosJson j, AltosIMU def) { if (j == null) return def; return new AltosIMU(j); } - public AltosHashSet hashSet() { - AltosHashSet h = new AltosHashSet(); - - h.putInt("accel_along", accel_along); - h.putInt("accel_across", accel_across); - h.putInt("accel_through", accel_through); - - h.putInt("gyro_roll", gyro_roll); - h.putInt("gyro_pitch", gyro_pitch); - h.putInt("gyro_yaw", gyro_yaw); - return h; - } - public AltosJson json() { AltosJson j = new AltosJson(); diff --git a/altoslib/AltosMag.java b/altoslib/AltosMag.java index ec98882f..8d40bc60 100644 --- a/altoslib/AltosMag.java +++ b/altoslib/AltosMag.java @@ -20,7 +20,7 @@ package org.altusmetrum.altoslib_11; import java.util.concurrent.*; import java.io.*; -public class AltosMag implements Cloneable, AltosHashable, AltosJsonable { +public class AltosMag implements Cloneable, AltosJsonable { public int along; public int across; public int through; @@ -94,15 +94,6 @@ public class AltosMag implements Cloneable, AltosHashable, AltosJsonable { } } - public AltosHashSet hashSet() { - AltosHashSet h = new AltosHashSet(); - - h.putInt("along", along); - h.putInt("across", across); - h.putInt("through", through); - return h; - } - public AltosJson json() { AltosJson j = new AltosJson(); @@ -112,21 +103,6 @@ public class AltosMag implements Cloneable, AltosHashable, AltosJsonable { return j; } - public AltosMag(AltosHashSet h) { - this(); - - along = h.getInt("along", along); - across = h.getInt("across", across); - through = h.getInt("through", through); - } - - public static AltosMag fromHashSet(AltosHashSet h, AltosMag def) { - if (h == null) - return def; - - return new AltosMag(h); - } - public AltosMag(AltosJson j) { this(); diff --git a/altoslib/AltosMs5607.java b/altoslib/AltosMs5607.java index 6d2f2203..a769223e 100644 --- a/altoslib/AltosMs5607.java +++ b/altoslib/AltosMs5607.java @@ -20,7 +20,7 @@ package org.altusmetrum.altoslib_11; import java.util.concurrent.*; import java.io.*; -public class AltosMs5607 implements AltosHashable, AltosJsonable { +public class AltosMs5607 implements AltosJsonable { public int reserved; public int sens; public int off; @@ -167,24 +167,6 @@ public class AltosMs5607 implements AltosHashable, AltosJsonable { convert(); } - public AltosHashSet hashSet() { - AltosHashSet h = new AltosHashSet(); - - h.putInt("reserved", reserved); - h.putInt("sens", sens); - h.putInt("off", off); - h.putInt("tcs", tcs); - h.putInt("tco", tco); - h.putInt("tref", tref); - h.putInt("tempsens", tempsens); - h.putInt("crc", crc); - h.putInt("raw_pres", raw_pres); - h.putInt("raw_temp", raw_temp); - h.putInt("pa", pa); - h.putInt("cc", cc); - return h; - } - public AltosJson json() { AltosJson j = new AltosJson(); @@ -203,30 +185,6 @@ public class AltosMs5607 implements AltosHashable, AltosJsonable { return j; } - public AltosMs5607(AltosHashSet h) { - this(); - - reserved = h.getInt("reserved", reserved); - sens = h.getInt("sens", sens); - off = h.getInt("off", off); - tcs = h.getInt("tcs", tcs); - tco = h.getInt("tco", tco); - tref = h.getInt("tref", tref); - tempsens = h.getInt("tempsens", tempsens); - crc = h.getInt("crc", crc); - raw_pres = h.getInt("raw_pres", raw_pres); - raw_temp = h.getInt("raw_temp", raw_temp); - pa = h.getInt("pa", pa); - cc = h.getInt("cc", cc); - } - - public static AltosMs5607 fromHashSet(AltosHashSet h, AltosMs5607 def) { - if (h == null) - return def; - - return new AltosMs5607(h); - } - public AltosMs5607(AltosJson j) { this(); diff --git a/altoslib/AltosPreferencesBackend.java b/altoslib/AltosPreferencesBackend.java index d4c3d7e5..0580652e 100644 --- a/altoslib/AltosPreferencesBackend.java +++ b/altoslib/AltosPreferencesBackend.java @@ -38,18 +38,6 @@ public abstract class AltosPreferencesBackend { public abstract byte[] getBytes(String key, byte[] def); public abstract void putBytes(String key, byte[] value); - public AltosHashSet getHashSet(String key) { - String value = getString(key, null); - - if (value == null) - return null; - return AltosHashSet.fromString(value); - } - - public void putHashSet(String key, AltosHashSet h) { - putString(key, h.toString()); - } - public AltosJson getJson(String key) { String value = getString(key, null); diff --git a/altoslib/AltosQuaternion.java b/altoslib/AltosQuaternion.java index 6a09bb8e..1b4a9419 100644 --- a/altoslib/AltosQuaternion.java +++ b/altoslib/AltosQuaternion.java @@ -17,7 +17,7 @@ package org.altusmetrum.altoslib_11; -public class AltosQuaternion implements AltosHashable, AltosJsonable { +public class AltosQuaternion implements AltosJsonable { double r; /* real bit */ double x, y, z; /* imaginary bits */ @@ -148,16 +148,6 @@ public class AltosQuaternion implements AltosHashable, AltosJsonable { c_x * c_y * s_z - s_x * s_y * c_z); } - public AltosHashSet hashSet() { - AltosHashSet h = new AltosHashSet(); - - h.putDouble("r", r); - h.putDouble("x", x); - h.putDouble("y", y); - h.putDouble("z", z); - return h; - } - public AltosJson json() { AltosJson j = new AltosJson(); @@ -168,16 +158,6 @@ public class AltosQuaternion implements AltosHashable, AltosJsonable { return j; } - public AltosQuaternion(AltosHashSet h) { - if (h == null) - return; - - r = h.getDouble("r", 1); - x = h.getDouble("x", 0); - y = h.getDouble("y", 0); - z = h.getDouble("z", 0); - } - public AltosQuaternion(AltosJson j) { if (j == null) return; diff --git a/altoslib/AltosRotation.java b/altoslib/AltosRotation.java index 4b7ab407..321a0f30 100644 --- a/altoslib/AltosRotation.java +++ b/altoslib/AltosRotation.java @@ -17,7 +17,7 @@ package org.altusmetrum.altoslib_11; -public class AltosRotation implements AltosHashable, AltosJsonable { +public class AltosRotation implements AltosJsonable { private AltosQuaternion rotation; public double tilt() { @@ -48,28 +48,10 @@ public class AltosRotation implements AltosHashable, AltosJsonable { rotation = up.vectors_to_rotation(orient); } - public AltosHashSet hashSet() { - AltosHashSet h = new AltosHashSet(); - - h.putHashable("rotation", rotation); - return h; - } - public AltosJson json() { return rotation.json(); } - public AltosRotation(AltosHashSet h) { - rotation = new AltosQuaternion(h.getHash("rotation")); - } - - public static AltosRotation fromHashSet(AltosHashSet h, AltosRotation def) { - if (h == null) - return def; - - return new AltosRotation(h); - } - public AltosRotation(AltosJson j) { rotation = new AltosQuaternion(j); } diff --git a/altoslib/AltosState.java b/altoslib/AltosState.java index a3c6cc34..26cedce9 100644 --- a/altoslib/AltosState.java +++ b/altoslib/AltosState.java @@ -23,7 +23,7 @@ package org.altusmetrum.altoslib_11; import java.io.*; -public class AltosState implements Cloneable, AltosHashable { +public class AltosState implements Cloneable, AltosJsonable { public static final int set_position = 1; public static final int set_gps = 2; @@ -46,7 +46,7 @@ public class AltosState implements Cloneable, AltosHashable { private int prev_tick; public int boost_tick; - class AltosValue implements AltosHashable, AltosJsonable { + class AltosValue implements AltosJsonable { double value; double prev_value; private double max_value; @@ -177,17 +177,6 @@ public class AltosState implements Cloneable, AltosHashable { prev_set_time = set_time; } - public AltosHashSet hashSet() { - AltosHashSet h = new AltosHashSet(); - - h.putDouble("value", value); - h.putDouble("prev_value", prev_value); - h.putDouble("max_value", max_value); - h.putDouble("set_time", set_time); - h.putDouble("prev_set_time", prev_set_time); - return h; - } - public AltosJson json() { AltosJson j = new AltosJson(); @@ -199,17 +188,6 @@ public class AltosState implements Cloneable, AltosHashable { return j; } - AltosValue(AltosHashSet h) { - this(); - if (h != null) { - value = h.getDouble("value", value); - prev_value = h.getDouble("prev_value", prev_value); - max_value = h.getDouble("max_value", max_value); - set_time = h.getDouble("set_time", 0); - prev_set_time = h.getDouble("prev_set_time", 0); - } - } - AltosValue(AltosJson j) { this(); if (j != null) { @@ -229,21 +207,15 @@ public class AltosState implements Cloneable, AltosHashable { } - AltosValue AltosValue_fromHashSet(AltosHashSet h, AltosValue def) { - if (h == null) - return def; - return new AltosValue(h); - } - AltosValue AltosValue_fromJson(AltosJson j, AltosValue def) { if (j == null) return def; return new AltosValue(j); } - class AltosCValue implements AltosHashable, AltosJsonable { + class AltosCValue implements AltosJsonable { - class AltosIValue extends AltosValue implements AltosHashable, AltosJsonable { + class AltosIValue extends AltosValue implements AltosJsonable { boolean can_max() { return c_can_max(); } @@ -252,10 +224,6 @@ public class AltosState implements Cloneable, AltosHashable { super(); } - AltosIValue(AltosHashSet h) { - super(h); - } - AltosIValue(AltosJson j) { super(j); } @@ -352,14 +320,6 @@ public class AltosState implements Cloneable, AltosHashable { computed = new AltosIValue(); } - public AltosHashSet hashSet() { - AltosHashSet h = new AltosHashSet(); - - h.putHashable("measured", measured); - h.putHashable("computed", computed); - return h; - } - public AltosJson json() { AltosJson j = new AltosJson(); @@ -368,23 +328,12 @@ public class AltosState implements Cloneable, AltosHashable { return j; } - AltosCValue(AltosHashSet h) { - measured = new AltosIValue(h.getHash("measured")); - computed = new AltosIValue(h.getHash("computed")); - } - AltosCValue(AltosJson j) { measured = new AltosIValue(j.get("measured")); computed = new AltosIValue(j.get("computed")); } } - AltosCValue AltosCValue_fromHashSet(AltosHashSet h, AltosCValue def) { - if (h == null) - return def; - return new AltosCValue(h); - } - AltosCValue AltosCValue_fromJson(AltosJson j, AltosCValue def) { if (j == null) return def; @@ -441,20 +390,11 @@ public class AltosState implements Cloneable, AltosHashable { super(); } - AltosGpsGroundAltitude (AltosHashSet h) { - super(h); - } - AltosGpsGroundAltitude (AltosJson j) { super(j); } } - AltosGpsGroundAltitude AltosGpsGroundAltitude_fromHashSet(AltosHashSet h, AltosGpsGroundAltitude def) { - if (h == null) return def; - return new AltosGpsGroundAltitude(h); - } - AltosGpsGroundAltitude AltosGpsGroundAltitude_fromJson(AltosJson j, AltosGpsGroundAltitude def) { if (j == null) return def; return new AltosGpsGroundAltitude(j); @@ -486,20 +426,11 @@ public class AltosState implements Cloneable, AltosHashable { super(); } - AltosGroundPressure (AltosHashSet h) { - super(h); - } - AltosGroundPressure (AltosJson j) { super(j); } } - AltosGroundPressure AltosGroundPressure_fromHashSet(AltosHashSet h, AltosGroundPressure def) { - if (h == null) return def; - return new AltosGroundPressure(h); - } - AltosGroundPressure AltosGroundPressure_fromJson(AltosJson j, AltosGroundPressure def) { if (j == null) return def; return new AltosGroundPressure(j); @@ -515,7 +446,7 @@ public class AltosState implements Cloneable, AltosHashable { ground_pressure.set_measured(pressure, time); } - class AltosAltitude extends AltosCValue implements AltosHashable { + class AltosAltitude extends AltosCValue { private void set_speed(AltosValue v) { if (!acceleration.is_measured() || !ascent) @@ -538,20 +469,11 @@ public class AltosState implements Cloneable, AltosHashable { super(); } - AltosAltitude (AltosHashSet h) { - super(h); - } - AltosAltitude (AltosJson j) { super(j); } } - AltosAltitude AltosAltitude_fromHashSet(AltosHashSet h, AltosAltitude def) { - if (h == null) return def; - return new AltosAltitude(h); - } - AltosAltitude AltosAltitude_fromJson(AltosJson j, AltosAltitude def) { if (j == null) return def; return new AltosAltitude(j); @@ -559,7 +481,7 @@ public class AltosState implements Cloneable, AltosHashable { private AltosAltitude altitude; - class AltosGpsAltitude extends AltosValue implements AltosHashable { + class AltosGpsAltitude extends AltosValue { private void set_gps_height() { double a = value(); @@ -580,20 +502,11 @@ public class AltosState implements Cloneable, AltosHashable { super(); } - AltosGpsAltitude (AltosHashSet h) { - super(h); - } - AltosGpsAltitude (AltosJson j) { super(j); } } - AltosGpsAltitude AltosGpsAltitude_fromHashSet(AltosHashSet h, AltosGpsAltitude def) { - if (h == null) return def; - return new AltosGpsAltitude(h); - } - AltosGpsAltitude AltosGpsAltitude_fromJson(AltosJson j, AltosGpsAltitude def) { if (j == null) return def; return new AltosGpsAltitude(j); @@ -677,20 +590,11 @@ public class AltosState implements Cloneable, AltosHashable { super(); } - AltosPressure (AltosHashSet h) { - super(h); - } - AltosPressure (AltosJson j) { super(j); } } - AltosPressure AltosPressure_fromHashSet(AltosHashSet h, AltosPressure def) { - if (h == null) return def; - return new AltosPressure(h); - } - AltosPressure AltosPressure_fromJson(AltosJson j, AltosPressure def) { if (j == null) return def; return new AltosPressure(j); @@ -756,7 +660,7 @@ public class AltosState implements Cloneable, AltosHashable { return AltosLib.MISSING; } - class AltosSpeed extends AltosCValue implements AltosHashable { + class AltosSpeed extends AltosCValue { boolean can_max() { return state < AltosLib.ao_flight_fast || state == AltosLib.ao_flight_stateless; @@ -785,20 +689,11 @@ public class AltosState implements Cloneable, AltosHashable { super(); } - AltosSpeed (AltosHashSet h) { - super(h); - } - AltosSpeed (AltosJson j) { super(j); } } - AltosSpeed AltosSpeed_fromHashSet(AltosHashSet h, AltosSpeed def) { - if (h == null) return def; - return new AltosSpeed(h); - } - AltosSpeed AltosSpeed_fromJson(AltosJson j, AltosSpeed def) { if (j == null) return def; return new AltosSpeed(j); @@ -832,7 +727,7 @@ public class AltosState implements Cloneable, AltosHashable { return AltosLib.MISSING; } - class AltosAccel extends AltosCValue implements AltosHashable { + class AltosAccel extends AltosCValue { boolean can_max() { return state < AltosLib.ao_flight_fast || state == AltosLib.ao_flight_stateless; @@ -848,20 +743,11 @@ public class AltosState implements Cloneable, AltosHashable { super(); } - AltosAccel (AltosHashSet h) { - super(h); - } - AltosAccel (AltosJson j) { super(j); } } - AltosAccel AltosAccel_fromHashSet(AltosHashSet h, AltosAccel def) { - if (h == null) return def; - return new AltosAccel(h); - } - AltosAccel AltosAccel_fromJson(AltosJson j, AltosAccel def) { if (j == null) return def; return new AltosAccel(j); @@ -1765,19 +1651,6 @@ public class AltosState implements Cloneable, AltosHashable { System.exit(1); } } - if (false) { - AltosHashSet hash = hashSet(); - String onetrip = hash.toString(); - AltosHashSet back = AltosHashSet.fromString(onetrip); - AltosState tripstate = AltosState.fromHashSet(back); - AltosHashSet triphash = tripstate.hashSet(); - String twotrip = triphash.toString(); - - if (!onetrip.equals(twotrip)) { - System.out.printf("%s\n%s\n", onetrip, twotrip); - System.exit(1); - } - } return s; } @@ -1785,112 +1658,6 @@ public class AltosState implements Cloneable, AltosHashable { init(); } - public AltosHashSet hashSet() { - AltosHashSet h = new AltosHashSet(); - - h.putBoolean("valid", true); - h.putInt("set", set); - h.putLong("received_time", received_time); - h.putDouble("time", time); - h.putDouble("prev_time", prev_time); - h.putDouble("time_change", time_change); - h.putInt("tick", tick); - h.putInt("prev_tick", prev_tick); - h.putInt("boost_tick", boost_tick); - h.putInt("state", state); - h.putInt("flight", flight); - h.putInt("serial", serial); - h.putInt("altitude_32", altitude_32); - h.putInt("receiver_serial", receiver_serial); - h.putBoolean("landed", landed); - h.putBoolean("ascent", ascent); - h.putBoolean("boost", boost); - h.putInt("rssi", rssi); - h.putInt("status", status); - h.putInt("device_type", device_type); - h.putInt("config_major", config_major); - h.putInt("config_minor", config_minor); - h.putInt("apogee_delay", apogee_delay); - h.putInt("main_deploy", main_deploy); - h.putInt("flight_log_max", flight_log_max); - h.putHashable("ground_altitude", ground_altitude); - h.putHashable("gps_ground_altitude", gps_ground_altitude); - h.putHashable("ground_pressure", ground_pressure); - h.putHashable("altitude", altitude); - h.putHashable("gps_altitude", gps_altitude); - h.putHashable("gps_ground_speed", gps_ground_speed); - h.putHashable("gps_ascent_rate", gps_ascent_rate); - h.putHashable("gps_course", gps_course); - h.putHashable("gps_speed", gps_speed); - h.putHashable("pressure", pressure); - h.putHashable("speed", speed); - h.putHashable("acceleration", acceleration); - h.putHashable("orient", orient); - h.putHashable("kalman_height", kalman_height); - h.putHashable("kalman_speed", kalman_speed); - h.putHashable("kalman_acceleration", kalman_acceleration); - - h.putDouble("battery_voltage",battery_voltage); - h.putDouble("pyro_voltage",pyro_voltage); - h.putDouble("temperature",temperature); - h.putDouble("apogee_voltage",apogee_voltage); - h.putDouble("main_voltage",main_voltage); - h.putDoubleArray("ignitor_voltage",ignitor_voltage); - h.putHashable("gps", gps); - h.putHashable("temp_gps", temp_gps); - h.putInt("temp_gps_sat_tick", temp_gps_sat_tick); - h.putBoolean("gps_pending", gps_pending); - h.putInt("gps_sequence", gps_sequence); - h.putHashable("imu", imu); - h.putHashable("mag", mag); - - h.putInt("npad", npad); - h.putInt("gps_waiting", gps_waiting); - h.putBoolean("gps_ready", gps_ready); - h.putInt("ngps", ngps); - h.putHashable("from_pad", from_pad); - h.putDouble("elevation", elevation); - h.putDouble("range", range); - h.putDouble("gps_height", gps_height); - h.putDouble("pad_lat", pad_lat); - h.putDouble("pad_lon", pad_lon); - h.putDouble("pad_alt", pad_alt); - h.putInt("speak_tick", speak_tick); - h.putDouble("speak_altitude", speak_altitude); - h.putString("callsign", callsign); - h.putString("firmware_version", firmware_version); - h.putDouble("accel_plus_g", accel_plus_g); - h.putDouble("accel_minus_g", accel_minus_g); - h.putDouble("accel", accel); - h.putDouble("ground_accel", ground_accel); - h.putDouble("ground_accel_avg", ground_accel_avg); - h.putInt("log_format", log_format); - h.putInt("log_space", log_space); - h.putString("product", product); - h.putHashable("baro", baro); - h.putHashable("companion", companion); - h.putInt("pyro_fired", pyro_fired); - h.putDouble("accel_zero_along", accel_zero_along); - h.putDouble("accel_zero_across", accel_zero_across); - h.putDouble("accel_zero_through", accel_zero_through); - - h.putHashable("rotation", rotation); - h.putHashable("ground_rotation", ground_rotation); - - h.putInt("pad_orientation", pad_orientation); - - h.putDouble("accel_ground_along", accel_ground_along); - h.putDouble("accel_ground_across", accel_ground_across); - h.putDouble("accel_ground_through", accel_ground_through); - - h.putDouble("gyro_zero_roll", gyro_zero_roll); - h.putDouble("gyro_zero_pitch", gyro_zero_pitch); - h.putDouble("gyro_zero_yaw", gyro_zero_yaw); - - h.putDouble("last_imu_time", last_imu_time); - return h; - } - public AltosJson json() { AltosJson j = new AltosJson(); @@ -1997,110 +1764,6 @@ public class AltosState implements Cloneable, AltosHashable { return j; } - public AltosState(AltosHashSet h) { - this(); - - set = h.getInt("set", set); - received_time = h.getLong("received_time", received_time); - time = h.getDouble("time", time); - prev_time = h.getDouble("prev_time", prev_time); - time_change = h.getDouble("time_change", time_change); - tick = h.getInt("tick", tick); - prev_tick = h.getInt("prev_tick", prev_tick); - boost_tick = h.getInt("boost_tick", boost_tick); - state = h.getInt("state", state); - flight = h.getInt("flight", flight); - serial = h.getInt("serial", serial); - altitude_32 = h.getInt("altitude_32", altitude_32); - receiver_serial = h.getInt("receiver_serial", receiver_serial); - landed = h.getBoolean("landed", landed); - ascent = h.getBoolean("ascent", ascent); - boost = h.getBoolean("boost", boost); - rssi = h.getInt("rssi", rssi); - status = h.getInt("status", status); - device_type = h.getInt("device_type", device_type); - config_major = h.getInt("config_major", config_major); - config_minor = h.getInt("config_minor", config_minor); - apogee_delay = h.getInt("apogee_delay", apogee_delay); - main_deploy = h.getInt("main_deploy", main_deploy); - flight_log_max = h.getInt("flight_log_max", flight_log_max); - ground_altitude = AltosCValue_fromHashSet(h.getHash("ground_altitude"), ground_altitude); - gps_ground_altitude = AltosGpsGroundAltitude_fromHashSet(h.getHash("gps_ground_altitude"), gps_ground_altitude); - ground_pressure = AltosGroundPressure_fromHashSet(h.getHash("ground_pressure"), ground_pressure); - altitude = AltosAltitude_fromHashSet(h.getHash("altitude"), altitude); - gps_altitude = AltosGpsAltitude_fromHashSet(h.getHash("gps_altitude"), gps_altitude); - gps_ground_speed = AltosValue_fromHashSet(h.getHash("gps_ground_speed"), gps_ground_speed); - gps_ascent_rate = AltosValue_fromHashSet(h.getHash("gps_ascent_rate"), gps_ascent_rate); - gps_course = AltosValue_fromHashSet(h.getHash("gps_course"), gps_course); - gps_speed = AltosValue_fromHashSet(h.getHash("gps_speed"), gps_speed); - pressure = AltosPressure_fromHashSet(h.getHash("pressure"), pressure); - speed = AltosSpeed_fromHashSet(h.getHash("speed"), speed); - acceleration = AltosAccel_fromHashSet(h.getHash("acceleration"), acceleration); - orient = AltosCValue_fromHashSet(h.getHash("orient"), orient); - kalman_height = AltosValue_fromHashSet(h.getHash("kalman_height"), kalman_height); - kalman_speed = AltosValue_fromHashSet(h.getHash("kalman_speed"), kalman_speed); - kalman_acceleration = AltosValue_fromHashSet(h.getHash("kalman_acceleration"), kalman_acceleration); - - battery_voltage = h.getDouble("battery_voltage", battery_voltage); - pyro_voltage = h.getDouble("pyro_voltage", pyro_voltage); - temperature = h.getDouble("temperature", temperature); - apogee_voltage = h.getDouble("apogee_voltage", apogee_voltage); - main_voltage= h.getDouble("main_voltage", main_voltage); - ignitor_voltage = h.getDoubleArray("ignitor_voltage", ignitor_voltage); - gps = AltosGPS.fromHashSet(h.getHash("gps"), gps); - temp_gps = AltosGPS.fromHashSet(h.getHash("temp_gps"), temp_gps); - temp_gps_sat_tick = h.getInt("temp_gps_sat_tick", temp_gps_sat_tick); - gps_pending = h.getBoolean("gps_pending", gps_pending); - gps_sequence = h.getInt("gps_sequence", gps_sequence); - imu = AltosIMU.fromHashSet(h.getHash("imu"), imu); - mag = AltosMag.fromHashSet(h.getHash("mag"), mag); - - npad = h.getInt("npad", npad); - gps_waiting = h.getInt("gps_waiting", gps_waiting); - gps_ready = h.getBoolean("gps_ready", gps_ready); - ngps = h.getInt("ngps", ngps); - from_pad = AltosGreatCircle.fromHashSet(h.getHash("from_pad"), from_pad); - elevation = h.getDouble("elevation", elevation); - range = h.getDouble("range", range); - gps_height = h.getDouble("gps_height", gps_height); - pad_lat = h.getDouble("pad_lat", pad_lat); - pad_lon = h.getDouble("pad_lon", pad_lon); - pad_alt = h.getDouble("pad_alt", pad_alt); - speak_tick = h.getInt("speak_tick", speak_tick); - speak_altitude = h.getDouble("speak_altitude", speak_altitude); - callsign = h.getString("callsign", callsign); - firmware_version = h.getString("firmware_version", firmware_version); - accel_plus_g = h.getDouble("accel_plus_g", accel_plus_g); - accel_minus_g = h.getDouble("accel_minus_g", accel_minus_g); - accel = h.getDouble("accel", accel); - ground_accel = h.getDouble("ground_accel", ground_accel); - ground_accel_avg = h.getDouble("ground_accel_avg", ground_accel_avg); - log_format = h.getInt("log_format", log_format); - log_space = h.getInt("log_space", log_space); - product = h.getString("product", product); - baro = AltosMs5607.fromHashSet(h.getHash("baro"), baro); - companion = AltosCompanion.fromHashSet(h.getHash("companion"), companion); - pyro_fired = h.getInt("pyro_fired", pyro_fired); - accel_zero_along = h.getDouble("accel_zero_along", accel_zero_along); - accel_zero_across = h.getDouble("accel_zero_across", accel_zero_across); - accel_zero_through = h.getDouble("accel_zero_through", accel_zero_through); - - rotation = AltosRotation.fromHashSet(h.getHash("rotation"), rotation); - ground_rotation = AltosRotation.fromHashSet(h.getHash("ground_rotation"), ground_rotation); - - pad_orientation = h.getInt("pad_orientation", pad_orientation); - - accel_ground_along = h.getDouble("accel_ground_along", accel_ground_along); - accel_ground_across = h.getDouble("accel_ground_across", accel_ground_across); - accel_ground_through = h.getDouble("accel_ground_through", accel_ground_through); - - gyro_zero_roll = h.getDouble("gyro_zero_roll", gyro_zero_roll); - gyro_zero_pitch = h.getDouble("gyro_zero_pitch", gyro_zero_pitch); - gyro_zero_yaw = h.getDouble("gyro_zero_yaw", gyro_zero_yaw); - - last_imu_time = h.getDouble("last_imu_time", last_imu_time); - } - public AltosState(AltosJson j) { this(); @@ -2204,13 +1867,6 @@ public class AltosState implements Cloneable, AltosHashable { last_imu_time = j.get_double("last_imu_time", last_imu_time); } - public static AltosState fromHashSet(AltosHashSet h) { - if (h == null) - return null; - if (!h.getBoolean("valid", false)) - return null; - return new AltosState(h); - } public static AltosState fromJson(AltosJson j) { if (j == null) diff --git a/altoslib/Makefile.am b/altoslib/Makefile.am index 534d2047..912976f9 100644 --- a/altoslib/Makefile.am +++ b/altoslib/Makefile.am @@ -161,8 +161,6 @@ altoslib_JAVA = \ AltosMapLoaderListener.java \ AltosMapLoader.java \ AltosMapTypeListener.java \ - AltosHashSet.java \ - AltosHashable.java \ AltosJson.java \ AltosJsonable.java \ AltosVersion.java -- cgit v1.2.3 From 2a1b7c6c509d4d19de21abf02b63aeacba269d13 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Thu, 16 Jun 2016 23:59:06 -0700 Subject: altoslib: Add null constructors to AltosQuaternion and AltosRotation These will be used in the reflection-based JSON code Signed-off-by: Keith Packard --- altoslib/AltosQuaternion.java | 15 +++++++++++---- altoslib/AltosRotation.java | 12 ++++++++---- 2 files changed, 19 insertions(+), 8 deletions(-) (limited to 'altoslib') diff --git a/altoslib/AltosQuaternion.java b/altoslib/AltosQuaternion.java index 1b4a9419..98c2fe51 100644 --- a/altoslib/AltosQuaternion.java +++ b/altoslib/AltosQuaternion.java @@ -115,10 +115,17 @@ public class AltosQuaternion implements AltosJsonable { } public AltosQuaternion(AltosQuaternion q) { - this.r = q.r; - this.x = q.x; - this.y = q.y; - this.z = q.z; + r = q.r; + x = q.x; + y = q.y; + z = q.z; + } + + public AltosQuaternion() { + r = 1; + x = 0; + y = 0; + z = 0; } static public AltosQuaternion vector(double x, double y, double z) { diff --git a/altoslib/AltosRotation.java b/altoslib/AltosRotation.java index 321a0f30..6db0b541 100644 --- a/altoslib/AltosRotation.java +++ b/altoslib/AltosRotation.java @@ -48,14 +48,18 @@ public class AltosRotation implements AltosJsonable { rotation = up.vectors_to_rotation(orient); } - public AltosJson json() { - return rotation.json(); - } - public AltosRotation(AltosJson j) { rotation = new AltosQuaternion(j); } + public AltosRotation() { + rotation = new AltosQuaternion(); + } + + public AltosJson json() { + return rotation.json(); + } + public static AltosRotation fromJson(AltosJson j, AltosRotation def) { if (j == null) return def; -- cgit v1.2.3 From 93de1d7ec841c55f5a1a63d34b422780a6fbe3c3 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Fri, 17 Jun 2016 00:00:09 -0700 Subject: altoslib: Add JSON-based object saving/restoring code This uses Java reflection to construct JSON strings for most Java objects. Signed-off-by: Keith Packard --- altoslib/AltosJson.java | 1268 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1268 insertions(+) create mode 100644 altoslib/AltosJson.java (limited to 'altoslib') diff --git a/altoslib/AltosJson.java b/altoslib/AltosJson.java new file mode 100644 index 00000000..6ae7e7dc --- /dev/null +++ b/altoslib/AltosJson.java @@ -0,0 +1,1268 @@ +/* + * Copyright © 2016 Keith Packard + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +package org.altusmetrum.altoslib_11; + +import java.io.*; +import java.util.*; +import java.text.*; +import java.lang.*; +import java.lang.reflect.*; + +class JsonUtil { + StringBuffer quote(StringBuffer result, String a) { + result.append("\""); + for (int i = 0; i < a.length(); i++) { + char c = a.charAt(i); + + switch (c) { + case '"': + case '\\': + result.append('\\').append(c); + break; + case '\n': + result.append("\\n"); + break; + default: + result.append(c); + break; + } + } + result.append("\""); + return result; + } + + StringBuffer append(StringBuffer result, AltosJson value, int indent, boolean pretty) { + value.append(result, indent, pretty); + return result; + } + + StringBuffer append(StringBuffer result, String string) { + result.append(string); + return result; + } + + StringBuffer indent(StringBuffer result, int indent) { + result.append("\n"); + for (int i = 0; i < indent; i++) + result.append("\t"); + return result; + } + static NumberFormat get_nf_json() { + DecimalFormat nf = (DecimalFormat) NumberFormat.getNumberInstance(Locale.ROOT); + nf.setParseIntegerOnly(false); + nf.setGroupingUsed(false); + nf.setMaximumFractionDigits(17); + nf.setMinimumFractionDigits(0); + nf.setMinimumIntegerDigits(1); + nf.setDecimalSeparatorAlwaysShown(false); + return nf; + } + + static NumberFormat nf_json = get_nf_json(); +} + +class JsonHash extends JsonUtil { + Hashtable hash; + + void append_hash(StringBuffer result, int indent, boolean pretty) { + boolean first = true; + + result.append("{"); + + ArrayList key_list = new ArrayList(hash.keySet()); + + Collections.sort(key_list, new Comparator() { + @Override + public int compare(String a, String b) { return a.compareTo(b); } + }); + + for (String key : key_list) { + AltosJson value = hash.get(key); + + if (!first) + result.append(","); + first = false; + if (pretty) + indent(result, indent+1); + quote(result, key); + append(result, ": "); + append(result, value, indent+1, pretty); + } + if (pretty) + indent(result, indent); + append(result, "}"); + } + + void put(String key, AltosJson value) { + hash.put(key, value); + } + + AltosJson get(String key) { + return hash.get(key); + } + + JsonHash() { + hash = new Hashtable(); + } +} + +class JsonArray extends JsonUtil { + ArrayList array; + + void append_array(StringBuffer result, int indent, boolean pretty) { + boolean first = true; + + append(result, "["); + for (int i = 0; i < array.size(); i++) { + AltosJson value = array.get(i); + + if (!first) + append(result, ","); + first = false; + if (pretty) + indent(result, indent+1); + append(result, value, indent+1, pretty); + } + if (pretty) + indent(result, indent); + append(result, "]"); + } + + void put(int index, AltosJson value) { + if (index >= array.size()) + array.add(index, value); + else + array.set(index, value); + } + + AltosJson get(int index) { + if (index < 0 || index > array.size()) + return null; + return array.get(index); + } + + int size() { + return array.size(); + } + + JsonArray() { + array = new ArrayList(); + } +} + +class JsonToken { + double dval; + long lval; + String sval; + boolean bval; + int token; + + static final int _string = 0; + static final int _double = 1; + static final int _long = 2; + static final int _boolean = 3; + static final int _oc = 4; + static final int _cc = 5; + static final int _os = 6; + static final int _cs = 7; + static final int _comma = 8; + static final int _colon = 9; + static final int _end = 10; + static final int _error = 11; + + static String token_name(int token) { + switch (token) { + case _string: + return "string"; + case _double: + return "number"; + case _long: + return "number"; + case _boolean: + return "boolean"; + case _oc: + return "{"; + case _cc: + return "}"; + case _os: + return "["; + case _cs: + return "]"; + case _comma: + return ","; + case _colon: + return ":"; + case _end: + return ""; + case _error: + return ""; + default: + return ""; + } + } + + String token_name() { + return token_name(token); + } + + JsonToken(int token) { + this.token = token; + } + + JsonToken(int token, boolean bval) { + this.token = token; + this.bval = bval; + } + + JsonToken(int token, double dval) { + this.token = token; + this.dval = dval; + } + + JsonToken(int token, long lval) { + this.token = token; + this.lval = lval; + } + + JsonToken(int token, String sval) { + this.token = token; + this.sval = sval; + } + + JsonToken(int token, StringBuffer bval) { + this(token, bval.toString()); + } +} + +/* + * Lexer for json + */ +class JsonLexer extends JsonUtil { + StringReader f; + int line; + int ungot = -2; + StringBuffer pending_token; + JsonToken token; + + static class keyword { + String word; + JsonToken token; + + JsonToken match(String value) { + if (word.equals(value)) + return token; + return null; + } + + keyword(String word, JsonToken token) { + this.word = word; + this.token = token; + } + } + + /* boolean values are the only keywords in json + */ + static keyword[] keywords = { + new keyword("true", new JsonToken(JsonToken._boolean, true)), + new keyword("false", new JsonToken(JsonToken._boolean, false)), + }; + + static JsonToken keyword(String word) { + for (int i = 0; i < keywords.length; i++) { + JsonToken token = keywords[i].match(word); + if (token != null) + return token; + } + return null; + } + + /* Get the next char (-1 for EOF) */ + int ch() throws IOException { + int c; + if (ungot != -2) { + c = ungot; + ungot = -2; + } else + c = f.read(); + if (c != -1) + pending_token.append((char) c); + if (c == '\n') + ++line; + return c; + } + + void unch(int c) { + if (ungot != -2) + throw new IllegalArgumentException("ungot buffer full"); + pending_token.deleteCharAt( pending_token.length()-1); + if (c == '\n') + --line; + ungot = c; + } + + String last_token_string() { + if (pending_token == null) + return null; + + return pending_token.toString(); + } + + static boolean is_long_range(double d) { + return -9223372036854775808.0 <= d && d <= 9223372036854775807.0; + } + + JsonToken lex() { + pending_token = new StringBuffer(); + + try { + for (;;) { + int c = ch(); + + switch (c) { + case -1: + return new JsonToken(JsonToken._end); + case '\n': + case ' ': + case '\t': + continue; + case '{': + return new JsonToken(JsonToken._oc); + case '}': + return new JsonToken(JsonToken._cc); + case '[': + return new JsonToken(JsonToken._os); + case ']': + return new JsonToken(JsonToken._cs); + case ',': + return new JsonToken(JsonToken._comma); + case ':': + return new JsonToken(JsonToken._colon); + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + case '.': case '-': case '+': + StringBuffer dbuf = new StringBuffer(); + boolean is_double = false; + while (Character.isDigit(c) || c == '.' || c == '+' || c == '-' || c == 'e' || c == 'E') { + if (c == '.' || c == 'E') + is_double = true; + dbuf.appendCodePoint(c); + c = ch(); + } + unch(c); + String dstr = dbuf.toString(); + double dval; + try { + dval = nf_json.parse(dstr).doubleValue(); + } catch (ParseException pe) { + return new JsonToken(JsonToken._error, dstr); + } + if (is_double || !is_long_range(dval)) + return new JsonToken(JsonToken._double, dval); + else { + long lval = Long.parseLong(dstr); + return new JsonToken(JsonToken._long, lval); + } + case '"': + StringBuffer bval = new StringBuffer(); + for (;;) { + c = ch(); + if (c == '"') + break; + if (c == '\\') { + c = ch(); + switch (c) { + case 'n': + c = '\n'; + break; + case 't': + c = '\t'; + break; + default: + break; + } + } + bval.appendCodePoint(c); + } + return new JsonToken(JsonToken._string, bval); + default: + if (Character.isLetter(c)) { + StringBuffer tbuf = new StringBuffer(); + do { + tbuf.appendCodePoint(c); + c = ch(); + } while (Character.isLetter(c)); + unch(c); + JsonToken token = keyword(tbuf.toString()); + if (token != null) + return token; + } + break; + } + } + } catch (IOException ie) { + return new JsonToken(JsonToken._error, ""); + } + } + + void next() { + token = lex(); + } + + JsonToken expect(int e) { + JsonToken t = token; + if (t.token != e) + throw new IllegalArgumentException(String.format("got \"%s\" while expecting \"%s\"", + token.token_name(), + JsonToken.token_name(e))); + next(); + return t; + } + + JsonLexer(String s) { + f = new StringReader(s); + line = 1; + token = null; + } +} + +/* + * Parse a json string into a AltosJson object + */ +class JsonParse { + JsonLexer lexer; + + void parse_error(String format, Object ... arguments) { + throw new IllegalArgumentException(String.format("line %d: JSON parse error %s\n", + lexer.line, + String.format(format, arguments))); + } + + /* Hashes are { string: value ... } */ + JsonHash hash() { + JsonHash hash = new JsonHash(); + + /* skip the open brace */ + lexer.next(); + for (;;) { + /* Allow for empty hashes */ + if (lexer.token.token == JsonToken._cc) { + lexer.next(); + return hash; + } + + /* string : value */ + String key = lexer.expect(JsonToken._string).sval; + lexer.expect(JsonToken._colon); + AltosJson value = value(); + hash.put(key, value); + + switch (lexer.token.token) { + case JsonToken._comma: + lexer.next(); + break; + case JsonToken._cc: + lexer.next(); + return hash; + default: + parse_error("got %s expect \",\" or \"}\"", lexer.token.token_name()); + return null; + } + } + } + + /* Arrays are [ value ... ] */ + JsonArray array() { + JsonArray array = new JsonArray(); + + lexer.next(); + for (int i = 0;; i++) { + /* Allow for empty arrays */ + if (lexer.token.token == JsonToken._cs) { + lexer.next(); + return array; + } + + AltosJson value = value(); + array.put(i, value); + switch (lexer.token.token) { + case JsonToken._comma: + lexer.next(); + break; + case JsonToken._cs: + lexer.next(); + return array; + default: + parse_error("got %s expect \",\" or \"]\"", lexer.token.token_name()); + return null; + } + } + } + + /* Json is a simple LL language; one token is sufficient to + * identify the next object in the input + */ + AltosJson value() { + switch (lexer.token.token) { + case JsonToken._oc: + return new AltosJson(hash()); + case JsonToken._os: + return new AltosJson(array()); + case JsonToken._double: + double dval = lexer.token.dval; + lexer.next(); + return new AltosJson(dval); + case JsonToken._long: + long lval = lexer.token.lval; + lexer.next(); + return new AltosJson(lval); + case JsonToken._string: + String sval = lexer.token.sval; + lexer.next(); + return new AltosJson(sval); + case JsonToken._boolean: + boolean bval = lexer.token.bval; + lexer.next(); + return new AltosJson(bval); + default: + parse_error("Unexpected token \"%s\"", lexer.token.token_name()); + } + return null; + } + + AltosJson parse() { + lexer.next(); + return value(); + } + + JsonParse(String s) { + lexer = new JsonLexer(s); + } +} + +public class AltosJson extends JsonUtil { + private static final int type_none = 0; + private static final int type_hash = 1; + private static final int type_array = 2; + private static final int type_double = 3; + private static final int type_long = 4; + private static final int type_string = 5; + private static final int type_boolean = 6; + + private int type; + + private JsonHash hash; + private JsonArray array; + private double d_number; + private long l_number; + private String string; + private boolean bool; + + /* Generate string representation of the value + */ + StringBuffer append(StringBuffer result, int indent, boolean pretty) { + switch (type) { + case type_hash: + hash.append_hash(result, indent, pretty); + break; + case type_array: + array.append_array(result, indent, pretty); + break; + case type_double: + String dval = nf_json.format(d_number); + if (dval.equals("-0")) + dval = "0"; + result.append(dval); + break; + case type_long: + result.append(new Long(l_number).toString()); + break; + case type_string: + quote(result, string); + break; + case type_boolean: + result.append(bool ? "true" : "false"); + break; + } + return result; + } + + private String toString(int indent, boolean pretty) { + StringBuffer result = new StringBuffer(); + append(result, indent, pretty); + return result.toString(); + } + + public String toString() { + return toString(0, false); + } + + public String toPrettyString() { + return toString(0, true); + } + + /* Parse string representation to a value + */ + + public static AltosJson fromString(String string) { + JsonParse parse = new JsonParse(string); + try { + return parse.parse(); + } catch (IllegalArgumentException ie) { + System.out.printf("json:\n%s\n%s\n", string, ie.getMessage()); + return null; + } + } + + /* Accessor functions + */ + private boolean assert_type(boolean setting, int type, int other_type, String error) { + if (setting && this.type == type_none) { + this.type = type; + return false; + } + if (this.type != type && this.type != other_type) + throw new IllegalArgumentException(error); + return true; + } + + private boolean assert_type(boolean setting, int type, String error) { + return assert_type(setting, type, type, error); + } + + private void assert_hash(boolean setting) { + if (!assert_type(setting, type_hash, "not a hash")) + hash = new JsonHash(); + } + + private void assert_array(boolean setting) { + if (!assert_type(setting, type_array, "not an array")) + array = new JsonArray(); + } + + private void assert_number() { + assert_type(false, type_double, type_long, "not a number"); + } + + private void assert_double() { + assert_type(true, type_double, type_long, "not a number"); + } + + private void assert_long() { + assert_type(true, type_long, type_double, "not a number"); + } + + private void assert_string(boolean setting) { + assert_type(setting, type_string, "not a string"); + } + + private void assert_boolean(boolean setting) { + assert_type(setting, type_boolean, "not a boolean"); + } + + /* Primitive accessors + */ + public double number() { + assert_number(); + if (type == type_double) + return d_number; + else + return (double) l_number; + } + + public long l_number() { + assert_number(); + if (type == type_double) + return (long) d_number; + else + return l_number; + } + + public String string() { + assert_string(false); + return string; + } + + public boolean bool() { + assert_boolean(false); + return bool; + } + + public AltosJson get(int index) { + assert_array(false); + return array.get(index); + } + + public AltosJson get(String key) { + assert_hash(false); + return hash.get(key); + } + + public int size() { + assert_array(false); + return array.size(); + } + + /* Typed accessors with defaulting + */ + public double get_double(String key, double def) { + AltosJson value = get(key); + if (value != null) { + return value.number(); + } + return def; + } + + public long get_long(String key, long def) { + AltosJson value = get(key); + if (value != null) + return value.l_number(); + return def; + } + + public int get_int(String key, int def) { + AltosJson value = get(key); + if (value != null) + return (int) value.l_number(); + return def; + } + + public String get_string(String key, String def) { + AltosJson value = get(key); + if (value != null) + return value.string(); + return def; + } + + public boolean get_boolean(String key, boolean def) { + AltosJson value = get(key); + if (value != null) + return value.bool(); + return def; + } + + public double get_double(int index, double def) { + AltosJson value = get(index); + if (value != null) + return value.number(); + return def; + } + + public long get_long(int index, long def) { + AltosJson value = get(index); + if (value != null) + return value.l_number(); + return def; + } + + public int get_int(int index, int def) { + AltosJson value = get(index); + if (value != null) + return (int) value.l_number(); + return def; + } + + public String get_string(int index, String def) { + AltosJson value = get(index); + if (value != null) + return value.string(); + return def; + } + + public boolean get_boolean(int index, boolean def) { + AltosJson value = get(index); + if (value != null) + return value.bool(); + return def; + } + + public double[] get_double_array(String key, double[] def) { + AltosJson value = get(key); + if (value != null) { + double[] ret = new double[value.size()]; + for (int i = 0; i < value.size(); i++) + ret[i] = value.get_double(i, def == null ? 0 : def[i]); + return ret; + } + return def; + } + + public int[] get_int_array(String key, int[] def) { + AltosJson value = get(key); + if (value != null) { + int[] ret = new int[value.size()]; + for (int i = 0; i < value.size(); i++) + ret[i] = value.get_int(i, def == null ? 0 : def[i]); + return ret; + } + return def; + } + + /* Array setter functions + */ + public AltosJson put(int index, AltosJson value) { + assert_array(true); + array.put(index, value); + return value; + } + + public Object put(int index, Object value) { + assert_array(true); + if (value != null) + array.put(index, new AltosJson(value)); + return value; + } + + public double put(int index, double value) { + assert_array(true); + array.put(index, new AltosJson(value)); + return value; + } + + public AltosJson put(int index, double[] value) { + if (value != null) { + assert_array(true); + array.put(index, new AltosJson(value)); + } + return this; + } + + public int[] put(int index, int[] value) { + if (value != null) { + assert_array(true); + array.put(index, new AltosJson(value)); + } + return value; + } + + public String put(int index, String value) { + if (value != null) { + assert_array(true); + array.put(index, new AltosJson(value)); + } + return value; + } + + public boolean put(int index, boolean value) { + assert_array(true); + array.put(index, new AltosJson(value)); + return value; + } + + /* Hash setter functions + */ + public AltosJson put(String key, AltosJson value) { + assert_hash(true); + hash.put(key, value); + return value; + } + + public Object put(String key, Object value) { + assert_hash(true); + if (value != null) + hash.put(key, new AltosJson(value)); + return value; + } + + public double put(String key, double value) { + assert_hash(true); + hash.put(key, new AltosJson(value)); + return value; + } + + public String put(String key, String value) { + if (value != null) { + assert_hash(true); + hash.put(key, new AltosJson(value)); + } + return value; + } + + public boolean put(String key, boolean value) { + assert_hash(true); + hash.put(key, new AltosJson(value)); + return value; + } + + public AltosJson[] put(String key, AltosJson[] value) { + if (value != null) { + assert_hash(true); + hash.put(key, new AltosJson(value)); + } + return value; + } + + public double[] put(String key, double[] value) { + if (value != null) { + assert_hash(true); + hash.put(key, new AltosJson(value)); + } + return value; + } + + public int[] put(String key, int[] value) { + if (value != null) { + assert_hash(true); + hash.put(key, new AltosJson(value)); + } + return value; + } + + /* Primitive setter functions + */ + public double put(double value) { + assert_double(); + d_number = value; + return value; + } + + public byte put(byte value) { + assert_long(); + l_number = value; + return value; + } + + public char put(char value) { + assert_long(); + l_number = value; + return value; + } + + public int put(int value) { + assert_long(); + l_number = value; + return value; + } + + public long put(long value) { + assert_long(); + l_number = value; + return value; + } + + public String put(String value) { + assert_string(true); + string = value; + return value; + } + + public boolean put(boolean value) { + assert_boolean(true); + bool = value; + return value; + } + + private boolean isInnerClass(Class c) { + for (Field field : c.getDeclaredFields()) + if (field.isSynthetic()) + return true; + return false; + } + + /* Construct an object of the specified class from the JSON + * representation. + * + * This works as long as the structure is non-recursive, and + * all inner classes are only members of their immediate outer + * class + */ + private Object make(Class c, Class enclosing_class, Object enclosing_object) { + Object ret; + if (c == Boolean.TYPE) { + ret = bool(); + } else if (c == Byte.TYPE) { + ret = (Byte) (byte) l_number(); + } else if (c == Character.TYPE) { + ret = (Character) (char) l_number(); + } else if (c == Integer.TYPE) { + ret = (Integer) (int) l_number(); + } else if (c == Long.TYPE) { + ret = l_number(); + } else if (c == Double.TYPE) { + ret = number(); + } else if (c == String.class) { + ret = string(); + } else if (c.isArray()) { + assert_array(false); + + Class element_class = c.getComponentType(); + if (element_class == Double.TYPE) { + double[] array = (double[]) Array.newInstance(element_class, size()); + for (int i = 0; i < array.length; i++) + array[i] = (Double) get(i).make(element_class); + ret = array; + } else { + Object[] array = (Object[]) Array.newInstance(element_class, size()); + for (int i = 0; i < array.length; i++) + array[i] = get(i).make(element_class); + ret = array; + } + } else { + assert_hash(false); + Object object = null; + try { + /* Inner classes have a hidden extra parameter + * to the constructor. Assume that the enclosing object is + * of the enclosing class and construct the object + * based on that. + */ + if (enclosing_class != null && isInnerClass(c)) { + Constructor ctor = ((Class)c).getDeclaredConstructor((Class) enclosing_class); + object = ctor.newInstance(enclosing_object); + } else { + object = c.newInstance(); + } + for (; c != null; c = c.getSuperclass()) { + for (Field field : c.getDeclaredFields()) { + String fieldName = field.getName(); + Class fieldClass = field.getType(); + String className = fieldClass.getName(); + + if (Modifier.isStatic(field.getModifiers())) + continue; + if (field.isSynthetic()) + continue; + try { + AltosJson json = get(fieldName); + if (json != null) { + Object val = json.make(fieldClass, c, object); + field.setAccessible(true); + field.set(object, val); + } + } catch (IllegalAccessException ie) { + } + } + } + ret = object; + } catch (InvocationTargetException ie) { + ret = null; + } catch (NoSuchMethodException ie) { + ret = null; + } catch (InstantiationException ie) { + ret = null; + } catch (IllegalAccessException ie) { + ret = null; + } + } + return ret; + } + + /* This is the public API for the + * above function which doesn't handle + * inner classes + */ + public Object make(Class c) { + return make(c, null, null); + } + + /* Constructors, one for each primitive type, String and Object */ + public AltosJson(boolean bool) { + type = type_boolean; + this.bool = bool; + } + + public AltosJson(byte number) { + type = type_long; + this.l_number = number; + } + + public AltosJson(char number) { + type = type_long; + this.l_number = number; + } + + public AltosJson(int number) { + type = type_long; + this.l_number = number; + } + + public AltosJson(long number) { + type = type_long; + this.l_number = number; + } + + public AltosJson(double number) { + type = type_double; + this.d_number = number; + } + + public AltosJson(String string) { + type = type_string; + this.string = string; + } + + public AltosJson(Object object) { + if (object instanceof Boolean) { + type = type_boolean; + bool = (Boolean) object; + } else if (object instanceof Byte) { + type = type_long; + l_number = (Byte) object; + } else if (object instanceof Character) { + type = type_long; + l_number = (Character) object; + } else if (object instanceof Integer) { + type = type_long; + l_number = (Integer) object; + } else if (object instanceof Long) { + type = type_long; + l_number = (Long) object; + } else if (object instanceof Double) { + type = type_double; + d_number = (Double) object; + } else if (object instanceof String) { + type = type_string; + string = (String) object; + } else if (object.getClass().isArray()) { + assert_array(true); + + Class component_class = object.getClass().getComponentType(); + if (component_class == Boolean.TYPE) { + boolean[] array = (boolean[]) object; + for (int i = 0; i < array.length; i++) + put(i, new AltosJson(array[i])); + } else if (component_class == Byte.TYPE) { + byte[] array = (byte[]) object; + for (int i = 0; i < array.length; i++) + put(i, new AltosJson(array[i])); + } else if (component_class == Character.TYPE) { + char[] array = (char[]) object; + for (int i = 0; i < array.length; i++) + put(i, new AltosJson(array[i])); + } else if (component_class == Integer.TYPE) { + int[] array = (int[]) object; + for (int i = 0; i < array.length; i++) + put(i, new AltosJson(array[i])); + } else if (component_class == Long.TYPE) { + long[] array = (long[]) object; + for (int i = 0; i < array.length; i++) + put(i, new AltosJson(array[i])); + } else if (component_class == Double.TYPE) { + double[] array = (double[]) object; + for (int i = 0; i < array.length; i++) + put(i, new AltosJson(array[i])); + } else { + Object[] array = (Object[]) object; + for (int i = 0; i < array.length; i++) + put(i, new AltosJson(array[i])); + } + } else { + assert_hash(true); + for (Class c = object.getClass(); c != null; c = c.getSuperclass()) { + for (Field field : c.getDeclaredFields()) { + String fieldName = field.getName(); + Class fieldClass = field.getType(); + String className = fieldClass.getName(); + + /* Skip static fields */ + if (Modifier.isStatic(field.getModifiers())) + continue; + + /* Skip synthetic fields. We're assuming + * those are always an inner class reference + * to the outer class object + */ + if (field.isSynthetic()) + continue; + try { + /* We may need to force the field to be accessible if + * it is private + */ + field.setAccessible(true); + Object val = field.get(object); + if (val != null) { + AltosJson json = new AltosJson(val); + put(fieldName, json); + } + } catch (IllegalAccessException ie) { + } + } + } + } + } + + /* Array constructors, one for each primitive type, String and Object */ + public AltosJson(boolean[] bools) { + assert_array(true); + for(int i = 0; i < bools.length; i++) + put(i, new AltosJson(bools[i])); + } + + public AltosJson(byte[] numbers) { + assert_array(true); + for(int i = 0; i < numbers.length; i++) + put(i, new AltosJson(numbers[i])); + } + + public AltosJson(char[] numbers) { + assert_array(true); + for(int i = 0; i < numbers.length; i++) + put(i, new AltosJson(numbers[i])); + } + + public AltosJson(int[] numbers) { + assert_array(true); + for(int i = 0; i < numbers.length; i++) + put(i, new AltosJson(numbers[i])); + } + + public AltosJson(long[] numbers) { + assert_array(true); + for(int i = 0; i < numbers.length; i++) + put(i, new AltosJson(numbers[i])); + } + + public AltosJson(double[] numbers) { + assert_array(true); + for(int i = 0; i < numbers.length; i++) + put(i, new AltosJson(numbers[i])); + } + + public AltosJson(String[] strings) { + assert_array(true); + for(int i = 0; i < strings.length; i++) + put(i, new AltosJson(strings[i])); + } + + public AltosJson(AltosJson[] jsons) { + assert_array(true); + for (int i = 0; i < jsons.length; i++) + put(i, jsons[i]); + } + + public AltosJson(Object[] array) { + assert_array(true); + for (int i = 0; i < array.length; i++) + put(i, new AltosJson(array[i])); + } + + /* Empty constructor + */ + public AltosJson() { + type = type_none; + } + + public AltosJson(JsonHash hash) { + type = type_hash; + this.hash = hash; + } + + public AltosJson(JsonArray array) { + type = type_array; + this.array = array; + } +} -- cgit v1.2.3 From 8df6afe843e184e98e5d965cee3af562dfa30a3b Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Fri, 17 Jun 2016 00:01:15 -0700 Subject: altoslib: Use reflection JSON code for frequency preferences This replaces the non-reflective JSON code with reflective code, which is much shorter. Signed-off-by: Keith Packard --- altoslib/AltosPreferences.java | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) (limited to 'altoslib') diff --git a/altoslib/AltosPreferences.java b/altoslib/AltosPreferences.java index 8e625674..51fc4205 100644 --- a/altoslib/AltosPreferences.java +++ b/altoslib/AltosPreferences.java @@ -135,23 +135,11 @@ public class AltosPreferences { public static AltosFrequency[] load_common_frequencies() { AltosFrequency[] frequencies = null; - AltosJson sets; - try { - sets = AltosJson.fromString(backend.getString(frequenciesPreference,null)); - - if (sets != null) { - ArrayList freqs = new ArrayList(); - - for (int i = 0; i < sets.size(); i++) { - AltosFrequency f = AltosFrequency.fromJson(sets.get(i), null); - if (f != null) - freqs.add(f); - } - frequencies = freqs.toArray(new AltosFrequency[0]); - } + AltosJson json = AltosJson.fromString(backend.getString(frequenciesPreference, + null)); + frequencies = (AltosFrequency[]) json.make(frequencies.getClass()); } catch (Exception e) { - sets = null; } if (frequencies == null) { -- cgit v1.2.3 From 7175774c4f60ed3efd54417f2035b50ea0108c7b Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Fri, 17 Jun 2016 00:02:05 -0700 Subject: altoslib: Improve AltosState save/restore debugging When save/restore generate different values, write out the two versions to one.json and two.json for easy comparison. Signed-off-by: Keith Packard --- altoslib/AltosState.java | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) (limited to 'altoslib') diff --git a/altoslib/AltosState.java b/altoslib/AltosState.java index 26cedce9..93586e8c 100644 --- a/altoslib/AltosState.java +++ b/altoslib/AltosState.java @@ -315,7 +315,7 @@ public class AltosState implements Cloneable, AltosJsonable { computed.finish_update(); } - AltosCValue() { + public AltosCValue() { measured = new AltosIValue(); computed = new AltosIValue(); } @@ -1638,16 +1638,27 @@ public class AltosState implements Cloneable, AltosJsonable { AltosState s = new AltosState(); s.copy(this); + /* Code to test state save/restore. Enable only for that purpose + */ if (false) { - AltosJson json = json(); + AltosJson json = new AltosJson(this); String onetrip = json.toPrettyString(); AltosJson back = AltosJson.fromString(onetrip); - AltosState tripstate = AltosState.fromJson(back); - AltosJson tripjson = tripstate.json(); + AltosState tripstate = (AltosState) back.make(this.getClass()); + AltosJson tripjson = new AltosJson(tripstate); String twotrip = tripjson.toPrettyString(); if (!onetrip.equals(twotrip)) { - System.out.printf("one:\n%s\ntwo:\n%s\n", onetrip, twotrip); + try { + FileWriter one_file = new FileWriter("one.json", true); + one_file.write(onetrip); + one_file.flush(); + FileWriter two_file = new FileWriter("two.json", true); + two_file.write(twotrip); + two_file.flush(); + } catch (Exception e) { + } + System.out.printf("json error\n"); System.exit(1); } } -- cgit v1.2.3 From 1dce20f7eee56166ac61798ca26eeb323dc8f012 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Fri, 17 Jun 2016 00:52:38 -0700 Subject: altoslib: Get rid of manual JSON encoding stuff Now that the reflective JSON stuff is working, we can delete all of the manual code. Signed-off-by: Keith Packard --- altoslib/AltosCompanion.java | 28 +--- altoslib/AltosFrequency.java | 22 +-- altoslib/AltosGPS.java | 63 +------- altoslib/AltosGPSSat.java | 25 +-- altoslib/AltosGreatCircle.java | 34 +---- altoslib/AltosIMU.java | 33 +--- altoslib/AltosJson.java | 23 ++- altoslib/AltosMag.java | 26 +--- altoslib/AltosMs5607.java | 44 +----- altoslib/AltosPreferences.java | 8 +- altoslib/AltosQuaternion.java | 22 +-- altoslib/AltosRotation.java | 17 +-- altoslib/AltosState.java | 340 +---------------------------------------- altoslib/Makefile.am | 1 - 14 files changed, 39 insertions(+), 647 deletions(-) (limited to 'altoslib') diff --git a/altoslib/AltosCompanion.java b/altoslib/AltosCompanion.java index 2db8ea1b..d517fd4f 100644 --- a/altoslib/AltosCompanion.java +++ b/altoslib/AltosCompanion.java @@ -19,7 +19,7 @@ package org.altusmetrum.altoslib_11; import java.io.*; -public class AltosCompanion implements AltosJsonable { +public class AltosCompanion { public final static int board_id_telescience = 0x0a; public final static int MAX_CHANNELS = 12; @@ -37,30 +37,4 @@ public class AltosCompanion implements AltosJsonable { channels = MAX_CHANNELS; companion_data = new int[channels]; } - - public AltosJson json() { - AltosJson j = new AltosJson(); - - j.put("tick", tick); - j.put("board_id", board_id); - j.put("update_period", update_period); - j.put("channels", channels); - j.put("companion_data", companion_data); - return j; - } - - public AltosCompanion(AltosJson j) { - tick = j.get_int("tick", tick); - board_id = j.get_int("board_id", board_id); - update_period = j.get_int("update_period", update_period); - channels = j.get_int("channels", channels); - companion_data = j.get_int_array("companion_data", new int[channels]); - } - - public static AltosCompanion fromJson(AltosJson j, AltosCompanion def) { - if (j == null) - return def; - - return new AltosCompanion(j); - } } diff --git a/altoslib/AltosFrequency.java b/altoslib/AltosFrequency.java index 3c1631a8..874a9bcc 100644 --- a/altoslib/AltosFrequency.java +++ b/altoslib/AltosFrequency.java @@ -21,7 +21,7 @@ import java.io.*; import java.util.*; import java.text.*; -public class AltosFrequency implements AltosJsonable { +public class AltosFrequency { public double frequency; public String description; @@ -57,28 +57,8 @@ public class AltosFrequency implements AltosJsonable { return diff < 0.010; } - - public AltosJson json() { - AltosJson j = new AltosJson(); - - j.put("frequency", frequency); - j.put("description", description); - return j; - } - public AltosFrequency(double f, String d) { frequency = f; description = d; } - - private AltosFrequency(AltosJson j) { - frequency = j.get_double("frequency", 0.0); - description = j.get_string("description", ""); - } - - public static AltosFrequency fromJson(AltosJson j, AltosFrequency def) { - if (j == null) - return def; - return new AltosFrequency(j); - } } diff --git a/altoslib/AltosGPS.java b/altoslib/AltosGPS.java index ba2eda1b..d29ccdd1 100644 --- a/altoslib/AltosGPS.java +++ b/altoslib/AltosGPS.java @@ -21,7 +21,7 @@ import java.text.*; import java.util.concurrent.*; import java.io.*; -public class AltosGPS implements Cloneable, AltosJsonable { +public class AltosGPS implements Cloneable { public final static int MISSING = AltosLib.MISSING; @@ -388,65 +388,4 @@ public class AltosGPS implements Cloneable, AltosJsonable { break; } } - - public AltosJson json() { - AltosJson j = new AltosJson(); - - j.put("nsat", nsat); - j.put("locked", locked); - j.put("connected", connected); - j.put("lat", lat); - j.put("lon", lon); - j.put("alt", alt); - j.put("year", year); - j.put("month", month); - j.put("day", day); - j.put("hour", hour); - j.put("minute", minute); - j.put("second", second); - - j.put("ground_speed", ground_speed); - j.put("course", course); - j.put("climb_rate", climb_rate); - j.put("pdop", pdop); - j.put("hdop", hdop); - j.put("vdop", vdop); - j.put("h_error", h_error); - j.put("v_error", v_error); - j.put("cc_gps_sat", cc_gps_sat); - return j; - } - - public AltosGPS(AltosJson j) { - init(); - nsat = j.get_int("nsat", nsat); - locked = j.get_boolean("locked", locked); - connected = j.get_boolean("connected", connected); - lat = j.get_double("lat", lat); - lon = j.get_double("lon", lon); - alt = j.get_double("alt", alt); - year = j.get_int("year", year); - month = j.get_int("month", month); - day = j.get_int("day", day); - hour = j.get_int("hour", hour); - minute = j.get_int("minute", minute); - second = j.get_int("second", second); - - ground_speed = j.get_double("ground_speed", ground_speed); - course = j.get_int("course", course); - climb_rate = j.get_double("climb_rate", climb_rate); - pdop = j.get_double("pdop", pdop); - hdop = j.get_double("hdop", hdop); - vdop = j.get_double("vdop", vdop); - h_error = j.get_double("h_error", h_error); - v_error = j.get_double("v_error", v_error); - cc_gps_sat = AltosGPSSat.json_array(j.get("cc_gps_sat")); - } - - public static AltosGPS fromJson(AltosJson j, AltosGPS def) { - if (j == null) - return def; - - return new AltosGPS(j); - } } diff --git a/altoslib/AltosGPSSat.java b/altoslib/AltosGPSSat.java index 8cdeed0e..8b95c150 100644 --- a/altoslib/AltosGPSSat.java +++ b/altoslib/AltosGPSSat.java @@ -22,7 +22,7 @@ import java.text.*; import java.util.*; import java.util.concurrent.*; -public class AltosGPSSat implements AltosJsonable { +public class AltosGPSSat { public int svid; public int c_n0; @@ -33,28 +33,5 @@ public class AltosGPSSat implements AltosJsonable { public AltosGPSSat() { } - - public AltosJson json() { - AltosJson j = new AltosJson(); - j.put("svid", svid); - j.put("c_n0", c_n0); - return j; - } - - private AltosGPSSat(AltosJson j) { - svid = j.get_int("svid", 0); - c_n0 = j.get_int("c_n0", 0); - } - - static public AltosGPSSat[] json_array(AltosJson j) { - if (j == null) - return null; - - int size = j.size(); - AltosGPSSat[] sats = new AltosGPSSat[size]; - for (int i = 0; i < size; i++) - sats[i] = new AltosGPSSat(j.get(i)); - return sats; - } } diff --git a/altoslib/AltosGreatCircle.java b/altoslib/AltosGreatCircle.java index f2c1783d..a2f12807 100644 --- a/altoslib/AltosGreatCircle.java +++ b/altoslib/AltosGreatCircle.java @@ -20,7 +20,7 @@ package org.altusmetrum.altoslib_11; import java.lang.Math; import java.io.*; -public class AltosGreatCircle implements Cloneable, AltosJsonable { +public class AltosGreatCircle implements Cloneable { public double distance; public double bearing; public double range; @@ -71,7 +71,10 @@ public class AltosGreatCircle implements Cloneable, AltosJsonable { course = 2 * Math.PI-course; } distance = d * earth_radius; - bearing = course * 180/Math.PI; + if (Double.isNaN(course) || Double.isInfinite(course)) + bearing = 0; + else + bearing = course * 180/Math.PI; double height_diff = end_alt - start_alt; range = Math.sqrt(distance * distance + height_diff * height_diff); @@ -103,31 +106,4 @@ public class AltosGreatCircle implements Cloneable, AltosJsonable { range = 0; elevation = 0; } - - public AltosJson json() { - AltosJson j = new AltosJson(); - - j.put("distance", distance); - j.put("bearing", bearing); - j.put("range", range); - j.put("elevation", elevation); - - return j; - } - - public AltosGreatCircle(AltosJson j) { - this(); - - distance = j.get_double("distance", distance); - bearing = j.get_double("bearing", bearing); - range = j.get_double("range", range); - elevation = j.get_double("elevation", elevation); - } - - public static AltosGreatCircle fromJson(AltosJson j, AltosGreatCircle def) { - if (j == null) - return def; - - return new AltosGreatCircle(j); - } } diff --git a/altoslib/AltosIMU.java b/altoslib/AltosIMU.java index 672c6111..dbadcf89 100644 --- a/altoslib/AltosIMU.java +++ b/altoslib/AltosIMU.java @@ -20,7 +20,7 @@ package org.altusmetrum.altoslib_11; import java.util.concurrent.*; import java.io.*; -public class AltosIMU implements Cloneable, AltosJsonable { +public class AltosIMU implements Cloneable { public int accel_along; public int accel_across; public int accel_through; @@ -115,35 +115,4 @@ public class AltosIMU implements Cloneable, AltosJsonable { break; } } - - public AltosIMU (AltosJson j) { - this(); - - accel_along = j.get_int("accel_along", accel_along); - accel_across = j.get_int("accel_across", accel_across); - accel_through = j.get_int("accel_through", accel_through); - - gyro_roll = j.get_int("gyro_roll", gyro_roll); - gyro_pitch = j.get_int("gyro_pitch", gyro_pitch); - gyro_yaw = j.get_int("gyro_yaw", gyro_yaw); - } - - static public AltosIMU fromJson(AltosJson j, AltosIMU def) { - if (j == null) - return def; - return new AltosIMU(j); - } - - public AltosJson json() { - AltosJson j = new AltosJson(); - - j.put("accel_along", accel_along); - j.put("accel_across", accel_across); - j.put("accel_through", accel_through); - - j.put("gyro_roll", gyro_roll); - j.put("gyro_pitch", gyro_pitch); - j.put("gyro_yaw", gyro_yaw); - return j; - } } diff --git a/altoslib/AltosJson.java b/altoslib/AltosJson.java index 6ae7e7dc..e979a459 100644 --- a/altoslib/AltosJson.java +++ b/altoslib/AltosJson.java @@ -280,6 +280,9 @@ class JsonLexer extends JsonUtil { static keyword[] keywords = { new keyword("true", new JsonToken(JsonToken._boolean, true)), new keyword("false", new JsonToken(JsonToken._boolean, false)), + new keyword("NegInfinity", new JsonToken(JsonToken._double, Double.NEGATIVE_INFINITY)), + new keyword("Infinity", new JsonToken(JsonToken._double, Double.POSITIVE_INFINITY)), + new keyword("NaN", new JsonToken(JsonToken._double, Double.NaN)) }; static JsonToken keyword(String word) { @@ -583,10 +586,19 @@ public class AltosJson extends JsonUtil { array.append_array(result, indent, pretty); break; case type_double: - String dval = nf_json.format(d_number); - if (dval.equals("-0")) - dval = "0"; - result.append(dval); + if (Double.isInfinite(d_number)) { + if (d_number < 0) + result.append("NegInfinity"); + else + result.append("Infinity"); + } else if (Double.isNaN(d_number)) { + result.append("NaN"); + } else { + String dval = nf_json.format(d_number); + if (dval.equals("-0")) + dval = "0"; + result.append(dval); + } break; case type_long: result.append(new Long(l_number).toString()); @@ -1030,7 +1042,6 @@ public class AltosJson extends JsonUtil { for (Field field : c.getDeclaredFields()) { String fieldName = field.getName(); Class fieldClass = field.getType(); - String className = fieldClass.getName(); if (Modifier.isStatic(field.getModifiers())) continue; @@ -1165,8 +1176,6 @@ public class AltosJson extends JsonUtil { for (Class c = object.getClass(); c != null; c = c.getSuperclass()) { for (Field field : c.getDeclaredFields()) { String fieldName = field.getName(); - Class fieldClass = field.getType(); - String className = fieldClass.getName(); /* Skip static fields */ if (Modifier.isStatic(field.getModifiers())) diff --git a/altoslib/AltosMag.java b/altoslib/AltosMag.java index 8d40bc60..5864529f 100644 --- a/altoslib/AltosMag.java +++ b/altoslib/AltosMag.java @@ -20,7 +20,7 @@ package org.altusmetrum.altoslib_11; import java.util.concurrent.*; import java.io.*; -public class AltosMag implements Cloneable, AltosJsonable { +public class AltosMag implements Cloneable { public int along; public int across; public int through; @@ -93,28 +93,4 @@ public class AltosMag implements Cloneable, AltosJsonable { break; } } - - public AltosJson json() { - AltosJson j = new AltosJson(); - - j.put("along", along); - j.put("across", across); - j.put("through", through); - return j; - } - - public AltosMag(AltosJson j) { - this(); - - along = j.get_int("along", along); - across = j.get_int("across", across); - through = j.get_int("through", through); - } - - public static AltosMag fromJson(AltosJson j, AltosMag def) { - if (j == null) - return def; - - return new AltosMag(j); - } } diff --git a/altoslib/AltosMs5607.java b/altoslib/AltosMs5607.java index a769223e..e40479b1 100644 --- a/altoslib/AltosMs5607.java +++ b/altoslib/AltosMs5607.java @@ -20,7 +20,7 @@ package org.altusmetrum.altoslib_11; import java.util.concurrent.*; import java.io.*; -public class AltosMs5607 implements AltosJsonable { +public class AltosMs5607 { public int reserved; public int sens; public int off; @@ -166,46 +166,4 @@ public class AltosMs5607 implements AltosJsonable { } convert(); } - - public AltosJson json() { - AltosJson j = new AltosJson(); - - j.put("reserved", reserved); - j.put("sens", sens); - j.put("off", off); - j.put("tcs", tcs); - j.put("tco", tco); - j.put("tref", tref); - j.put("tempsens", tempsens); - j.put("crc", crc); - j.put("raw_pres", raw_pres); - j.put("raw_temp", raw_temp); - j.put("pa", pa); - j.put("cc", cc); - return j; - } - - public AltosMs5607(AltosJson j) { - this(); - - reserved = j.get_int("reserved", reserved); - sens = j.get_int("sens", sens); - off = j.get_int("off", off); - tcs = j.get_int("tcs", tcs); - tco = j.get_int("tco", tco); - tref = j.get_int("tref", tref); - tempsens = j.get_int("tempsens", tempsens); - crc = j.get_int("crc", crc); - raw_pres = j.get_int("raw_pres", raw_pres); - raw_temp = j.get_int("raw_temp", raw_temp); - pa = j.get_int("pa", pa); - cc = j.get_int("cc", cc); - } - - public static AltosMs5607 fromJson(AltosJson j, AltosMs5607 def) { - if (j == null) - return def; - - return new AltosMs5607(j); - } } diff --git a/altoslib/AltosPreferences.java b/altoslib/AltosPreferences.java index 51fc4205..569aaa54 100644 --- a/altoslib/AltosPreferences.java +++ b/altoslib/AltosPreferences.java @@ -365,7 +365,7 @@ public class AltosPreferences { public static void set_state(AltosState state) { synchronized(backend) { - backend.putJson(String.format(statePreferenceFormat, state.serial), state.json()); + backend.putJson(String.format(statePreferenceFormat, state.serial), new AltosJson(state)); backend.putInt(statePreferenceLatest, state.serial); flush_preferences(); } @@ -405,10 +405,12 @@ public class AltosPreferences { public static AltosState state(int serial) { synchronized(backend) { try { - return AltosState.fromJson(backend.getJson(String.format(statePreferenceFormat, serial))); + AltosJson json = backend.getJson(String.format(statePreferenceFormat, serial)); + if (json != null) + return (AltosState) (json.make(AltosState.class)); } catch (Exception e) { - return null; } + return null; } } diff --git a/altoslib/AltosQuaternion.java b/altoslib/AltosQuaternion.java index 98c2fe51..79559429 100644 --- a/altoslib/AltosQuaternion.java +++ b/altoslib/AltosQuaternion.java @@ -17,7 +17,7 @@ package org.altusmetrum.altoslib_11; -public class AltosQuaternion implements AltosJsonable { +public class AltosQuaternion { double r; /* real bit */ double x, y, z; /* imaginary bits */ @@ -154,24 +154,4 @@ public class AltosQuaternion implements AltosJsonable { c_x * s_y * c_z + s_x * c_y * s_z, c_x * c_y * s_z - s_x * s_y * c_z); } - - public AltosJson json() { - AltosJson j = new AltosJson(); - - j.put("r", r); - j.put("x", x); - j.put("y", y); - j.put("z", z); - return j; - } - - public AltosQuaternion(AltosJson j) { - if (j == null) - return; - - r = j.get_double("r", 1); - x = j.get_double("x", 0); - y = j.get_double("y", 0); - z = j.get_double("z", 0); - } } diff --git a/altoslib/AltosRotation.java b/altoslib/AltosRotation.java index 6db0b541..97cf7896 100644 --- a/altoslib/AltosRotation.java +++ b/altoslib/AltosRotation.java @@ -17,7 +17,7 @@ package org.altusmetrum.altoslib_11; -public class AltosRotation implements AltosJsonable { +public class AltosRotation extends AltosQuaternion { private AltosQuaternion rotation; public double tilt() { @@ -48,22 +48,7 @@ public class AltosRotation implements AltosJsonable { rotation = up.vectors_to_rotation(orient); } - public AltosRotation(AltosJson j) { - rotation = new AltosQuaternion(j); - } - public AltosRotation() { rotation = new AltosQuaternion(); } - - public AltosJson json() { - return rotation.json(); - } - - public static AltosRotation fromJson(AltosJson j, AltosRotation def) { - if (j == null) - return def; - - return new AltosRotation(j); - } } diff --git a/altoslib/AltosState.java b/altoslib/AltosState.java index 93586e8c..15cf7d64 100644 --- a/altoslib/AltosState.java +++ b/altoslib/AltosState.java @@ -23,7 +23,7 @@ package org.altusmetrum.altoslib_11; import java.io.*; -public class AltosState implements Cloneable, AltosJsonable { +public class AltosState implements Cloneable { public static final int set_position = 1; public static final int set_gps = 2; @@ -46,7 +46,7 @@ public class AltosState implements Cloneable, AltosJsonable { private int prev_tick; public int boost_tick; - class AltosValue implements AltosJsonable { + class AltosValue { double value; double prev_value; private double max_value; @@ -177,28 +177,6 @@ public class AltosState implements Cloneable, AltosJsonable { prev_set_time = set_time; } - public AltosJson json() { - AltosJson j = new AltosJson(); - - j.put("value", value); - j.put("prev_value", prev_value); - j.put("max_value", max_value); - j.put("set_time", set_time); - j.put("prev_set_time", prev_set_time); - return j; - } - - AltosValue(AltosJson j) { - this(); - if (j != null) { - value = j.get_double("value", value); - prev_value = j.get_double("prev_value", prev_value); - max_value = j.get_double("max_value", max_value); - set_time = j.get_double("set_time", 0); - prev_set_time = j.get_double("prev_set_time", 0); - } - } - AltosValue() { value = AltosLib.MISSING; prev_value = AltosLib.MISSING; @@ -207,15 +185,9 @@ public class AltosState implements Cloneable, AltosJsonable { } - AltosValue AltosValue_fromJson(AltosJson j, AltosValue def) { - if (j == null) - return def; - return new AltosValue(j); - } - - class AltosCValue implements AltosJsonable { + class AltosCValue { - class AltosIValue extends AltosValue implements AltosJsonable { + class AltosIValue extends AltosValue { boolean can_max() { return c_can_max(); } @@ -223,10 +195,6 @@ public class AltosState implements Cloneable, AltosJsonable { AltosIValue() { super(); } - - AltosIValue(AltosJson j) { - super(j); - } }; public AltosIValue measured; @@ -319,25 +287,6 @@ public class AltosState implements Cloneable, AltosJsonable { measured = new AltosIValue(); computed = new AltosIValue(); } - - public AltosJson json() { - AltosJson j = new AltosJson(); - - j.put("measured", measured.json()); - j.put("computed", computed.json()); - return j; - } - - AltosCValue(AltosJson j) { - measured = new AltosIValue(j.get("measured")); - computed = new AltosIValue(j.get("computed")); - } - } - - AltosCValue AltosCValue_fromJson(AltosJson j, AltosCValue def) { - if (j == null) - return def; - return new AltosCValue(j); } private int state; @@ -389,15 +338,6 @@ public class AltosState implements Cloneable, AltosJsonable { AltosGpsGroundAltitude() { super(); } - - AltosGpsGroundAltitude (AltosJson j) { - super(j); - } - } - - AltosGpsGroundAltitude AltosGpsGroundAltitude_fromJson(AltosJson j, AltosGpsGroundAltitude def) { - if (j == null) return def; - return new AltosGpsGroundAltitude(j); } private AltosGpsGroundAltitude gps_ground_altitude; @@ -425,15 +365,6 @@ public class AltosState implements Cloneable, AltosJsonable { AltosGroundPressure () { super(); } - - AltosGroundPressure (AltosJson j) { - super(j); - } - } - - AltosGroundPressure AltosGroundPressure_fromJson(AltosJson j, AltosGroundPressure def) { - if (j == null) return def; - return new AltosGroundPressure(j); } private AltosGroundPressure ground_pressure; @@ -468,15 +399,6 @@ public class AltosState implements Cloneable, AltosJsonable { AltosAltitude() { super(); } - - AltosAltitude (AltosJson j) { - super(j); - } - } - - AltosAltitude AltosAltitude_fromJson(AltosJson j, AltosAltitude def) { - if (j == null) return def; - return new AltosAltitude(j); } private AltosAltitude altitude; @@ -501,15 +423,6 @@ public class AltosState implements Cloneable, AltosJsonable { AltosGpsAltitude() { super(); } - - AltosGpsAltitude (AltosJson j) { - super(j); - } - } - - AltosGpsAltitude AltosGpsAltitude_fromJson(AltosJson j, AltosGpsAltitude def) { - if (j == null) return def; - return new AltosGpsAltitude(j); } private AltosGpsAltitude gps_altitude; @@ -589,15 +502,6 @@ public class AltosState implements Cloneable, AltosJsonable { AltosPressure() { super(); } - - AltosPressure (AltosJson j) { - super(j); - } - } - - AltosPressure AltosPressure_fromJson(AltosJson j, AltosPressure def) { - if (j == null) return def; - return new AltosPressure(j); } private AltosPressure pressure; @@ -688,15 +592,6 @@ public class AltosState implements Cloneable, AltosJsonable { AltosSpeed() { super(); } - - AltosSpeed (AltosJson j) { - super(j); - } - } - - AltosSpeed AltosSpeed_fromJson(AltosJson j, AltosSpeed def) { - if (j == null) return def; - return new AltosSpeed(j); } private AltosSpeed speed; @@ -742,15 +637,6 @@ public class AltosState implements Cloneable, AltosJsonable { AltosAccel() { super(); } - - AltosAccel (AltosJson j) { - super(j); - } - } - - AltosAccel AltosAccel_fromJson(AltosJson j, AltosAccel def) { - if (j == null) return def; - return new AltosAccel(j); } AltosAccel acceleration; @@ -1668,222 +1554,4 @@ public class AltosState implements Cloneable, AltosJsonable { public AltosState () { init(); } - - public AltosJson json() { - AltosJson j = new AltosJson(); - - j.put("valid", true); - j.put("set", set); - j.put("received_time", received_time); - j.put("time", time); - j.put("prev_time", prev_time); - j.put("time_change", time_change); - j.put("tick", tick); - j.put("prev_tick", prev_tick); - j.put("boost_tick", boost_tick); - j.put("state", state); - j.put("flight", flight); - j.put("serial", serial); - j.put("altitude_32", altitude_32); - j.put("receiver_serial", receiver_serial); - j.put("landed", landed); - j.put("ascent", ascent); - j.put("boost", boost); - j.put("rssi", rssi); - j.put("status", status); - j.put("device_type", device_type); - j.put("config_major", config_major); - j.put("config_minor", config_minor); - j.put("apogee_delay", apogee_delay); - j.put("main_deploy", main_deploy); - j.put("flight_log_max", flight_log_max); - j.put("ground_altitude", ground_altitude); - j.put("gps_ground_altitude", gps_ground_altitude); - j.put("ground_pressure", ground_pressure); - j.put("altitude", altitude); - j.put("gps_altitude", gps_altitude); - j.put("gps_ground_speed", gps_ground_speed); - j.put("gps_ascent_rate", gps_ascent_rate); - j.put("gps_course", gps_course); - j.put("gps_speed", gps_speed); - j.put("pressure", pressure); - j.put("speed", speed); - j.put("acceleration", acceleration); - j.put("orient", orient); - j.put("kalman_height", kalman_height); - j.put("kalman_speed", kalman_speed); - j.put("kalman_acceleration", kalman_acceleration); - - j.put("battery_voltage",battery_voltage); - j.put("pyro_voltage",pyro_voltage); - j.put("temperature",temperature); - j.put("apogee_voltage",apogee_voltage); - j.put("main_voltage",main_voltage); - j.put("ignitor_voltage",ignitor_voltage); - j.put("gps", gps); - j.put("temp_gps", temp_gps); - j.put("temp_gps_sat_tick", temp_gps_sat_tick); - j.put("gps_pending", gps_pending); - j.put("gps_sequence", gps_sequence); - j.put("imu", imu); - j.put("mag", mag); - - j.put("npad", npad); - j.put("gps_waiting", gps_waiting); - j.put("gps_ready", gps_ready); - j.put("ngps", ngps); - j.put("from_pad", from_pad); - j.put("elevation", elevation); - j.put("range", range); - j.put("gps_height", gps_height); - j.put("pad_lat", pad_lat); - j.put("pad_lon", pad_lon); - j.put("pad_alt", pad_alt); - j.put("speak_tick", speak_tick); - j.put("speak_altitude", speak_altitude); - j.put("callsign", callsign); - j.put("firmware_version", firmware_version); - j.put("accel_plus_g", accel_plus_g); - j.put("accel_minus_g", accel_minus_g); - j.put("accel", accel); - j.put("ground_accel", ground_accel); - j.put("ground_accel_avg", ground_accel_avg); - j.put("log_format", log_format); - j.put("log_space", log_space); - j.put("product", product); - j.put("baro", baro); - j.put("companion", companion); - j.put("pyro_fired", pyro_fired); - j.put("accel_zero_along", accel_zero_along); - j.put("accel_zero_across", accel_zero_across); - j.put("accel_zero_through", accel_zero_through); - - j.put("rotation", rotation); - j.put("ground_rotation", ground_rotation); - - j.put("pad_orientation", pad_orientation); - - j.put("accel_ground_along", accel_ground_along); - j.put("accel_ground_across", accel_ground_across); - j.put("accel_ground_through", accel_ground_through); - - j.put("gyro_zero_roll", gyro_zero_roll); - j.put("gyro_zero_pitch", gyro_zero_pitch); - j.put("gyro_zero_yaw", gyro_zero_yaw); - - j.put("last_imu_time", last_imu_time); - return j; - } - - public AltosState(AltosJson j) { - this(); - - set = j.get_int("set", set); - received_time = j.get_long("received_time", received_time); - time = j.get_double("time", time); - prev_time = j.get_double("prev_time", prev_time); - time_change = j.get_double("time_change", time_change); - tick = j.get_int("tick", tick); - prev_tick = j.get_int("prev_tick", prev_tick); - boost_tick = j.get_int("boost_tick", boost_tick); - state = j.get_int("state", state); - flight = j.get_int("flight", flight); - serial = j.get_int("serial", serial); - altitude_32 = j.get_int("altitude_32", altitude_32); - receiver_serial = j.get_int("receiver_serial", receiver_serial); - landed = j.get_boolean("landed", landed); - ascent = j.get_boolean("ascent", ascent); - boost = j.get_boolean("boost", boost); - rssi = j.get_int("rssi", rssi); - status = j.get_int("status", status); - device_type = j.get_int("device_type", device_type); - config_major = j.get_int("config_major", config_major); - config_minor = j.get_int("config_minor", config_minor); - apogee_delay = j.get_int("apogee_delay", apogee_delay); - main_deploy = j.get_int("main_deploy", main_deploy); - flight_log_max = j.get_int("flight_log_max", flight_log_max); - ground_altitude = AltosCValue_fromJson(j.get("ground_altitude"), ground_altitude); - gps_ground_altitude = AltosGpsGroundAltitude_fromJson(j.get("gps_ground_altitude"), gps_ground_altitude); - ground_pressure = AltosGroundPressure_fromJson(j.get("ground_pressure"), ground_pressure); - altitude = AltosAltitude_fromJson(j.get("altitude"), altitude); - gps_altitude = AltosGpsAltitude_fromJson(j.get("gps_altitude"), gps_altitude); - gps_ground_speed = AltosValue_fromJson(j.get("gps_ground_speed"), gps_ground_speed); - gps_ascent_rate = AltosValue_fromJson(j.get("gps_ascent_rate"), gps_ascent_rate); - gps_course = AltosValue_fromJson(j.get("gps_course"), gps_course); - gps_speed = AltosValue_fromJson(j.get("gps_speed"), gps_speed); - pressure = AltosPressure_fromJson(j.get("pressure"), pressure); - speed = AltosSpeed_fromJson(j.get("speed"), speed); - acceleration = AltosAccel_fromJson(j.get("acceleration"), acceleration); - orient = AltosCValue_fromJson(j.get("orient"), orient); - kalman_height = AltosValue_fromJson(j.get("kalman_height"), kalman_height); - kalman_speed = AltosValue_fromJson(j.get("kalman_speed"), kalman_speed); - kalman_acceleration = AltosValue_fromJson(j.get("kalman_acceleration"), kalman_acceleration); - - battery_voltage = j.get_double("battery_voltage", battery_voltage); - pyro_voltage = j.get_double("pyro_voltage", pyro_voltage); - temperature = j.get_double("temperature", temperature); - apogee_voltage = j.get_double("apogee_voltage", apogee_voltage); - main_voltage= j.get_double("main_voltage", main_voltage); - ignitor_voltage = j.get_double_array("ignitor_voltage", ignitor_voltage); - gps = AltosGPS.fromJson(j.get("gps"), gps); - temp_gps = AltosGPS.fromJson(j.get("temp_gps"), temp_gps); - temp_gps_sat_tick = j.get_int("temp_gps_sat_tick", temp_gps_sat_tick); - gps_pending = j.get_boolean("gps_pending", gps_pending); - gps_sequence = j.get_int("gps_sequence", gps_sequence); - imu = AltosIMU.fromJson(j.get("imu"), imu); - mag = AltosMag.fromJson(j.get("mag"), mag); - - npad = j.get_int("npad", npad); - gps_waiting = j.get_int("gps_waiting", gps_waiting); - gps_ready = j.get_boolean("gps_ready", gps_ready); - ngps = j.get_int("ngps", ngps); - from_pad = AltosGreatCircle.fromJson(j.get("from_pad"), from_pad); - elevation = j.get_double("elevation", elevation); - range = j.get_double("range", range); - gps_height = j.get_double("gps_height", gps_height); - pad_lat = j.get_double("pad_lat", pad_lat); - pad_lon = j.get_double("pad_lon", pad_lon); - pad_alt = j.get_double("pad_alt", pad_alt); - speak_tick = j.get_int("speak_tick", speak_tick); - speak_altitude = j.get_double("speak_altitude", speak_altitude); - callsign = j.get_string("callsign", callsign); - firmware_version = j.get_string("firmware_version", firmware_version); - accel_plus_g = j.get_double("accel_plus_g", accel_plus_g); - accel_minus_g = j.get_double("accel_minus_g", accel_minus_g); - accel = j.get_double("accel", accel); - ground_accel = j.get_double("ground_accel", ground_accel); - ground_accel_avg = j.get_double("ground_accel_avg", ground_accel_avg); - log_format = j.get_int("log_format", log_format); - log_space = j.get_int("log_space", log_space); - product = j.get_string("product", product); - baro = AltosMs5607.fromJson(j.get("baro"), baro); - companion = AltosCompanion.fromJson(j.get("companion"), companion); - pyro_fired = j.get_int("pyro_fired", pyro_fired); - accel_zero_along = j.get_double("accel_zero_along", accel_zero_along); - accel_zero_across = j.get_double("accel_zero_across", accel_zero_across); - accel_zero_through = j.get_double("accel_zero_through", accel_zero_through); - - rotation = AltosRotation.fromJson(j.get("rotation"), rotation); - ground_rotation = AltosRotation.fromJson(j.get("ground_rotation"), ground_rotation); - - pad_orientation = j.get_int("pad_orientation", pad_orientation); - - accel_ground_along = j.get_double("accel_ground_along", accel_ground_along); - accel_ground_across = j.get_double("accel_ground_across", accel_ground_across); - accel_ground_through = j.get_double("accel_ground_through", accel_ground_through); - - gyro_zero_roll = j.get_double("gyro_zero_roll", gyro_zero_roll); - gyro_zero_pitch = j.get_double("gyro_zero_pitch", gyro_zero_pitch); - gyro_zero_yaw = j.get_double("gyro_zero_yaw", gyro_zero_yaw); - - last_imu_time = j.get_double("last_imu_time", last_imu_time); - } - - public static AltosState fromJson(AltosJson j) { - if (j == null) - return null; - if (!j.get_boolean("valid", false)) - return null; - return new AltosState(j); - } } diff --git a/altoslib/Makefile.am b/altoslib/Makefile.am index 912976f9..2a9eb9c9 100644 --- a/altoslib/Makefile.am +++ b/altoslib/Makefile.am @@ -162,7 +162,6 @@ altoslib_JAVA = \ AltosMapLoader.java \ AltosMapTypeListener.java \ AltosJson.java \ - AltosJsonable.java \ AltosVersion.java JAR=altoslib_$(ALTOSLIB_VERSION).jar -- cgit v1.2.3 From 1ed6a3fb6356415c0d57ce2ce556435c6ff06e73 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Fri, 17 Jun 2016 08:17:15 -0700 Subject: altoslib: Add null constructor for AltosCompanion This lets it be used by the JSON code. Signed-off-by: Keith Packard --- altoslib/AltosCompanion.java | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'altoslib') diff --git a/altoslib/AltosCompanion.java b/altoslib/AltosCompanion.java index d517fd4f..e228b074 100644 --- a/altoslib/AltosCompanion.java +++ b/altoslib/AltosCompanion.java @@ -37,4 +37,9 @@ public class AltosCompanion { channels = MAX_CHANNELS; companion_data = new int[channels]; } + + public AltosCompanion() { + channels = 0; + companion_data = new int[0]; + } } -- cgit v1.2.3 From a46df4f69984e3ef0064c2b211438c8d8ffaab68 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Fri, 17 Jun 2016 08:17:57 -0700 Subject: altoslib: Add construction for remaining primitive array types to JSON AltosCompanion has an array of ints, which was missed until I tried a telemetry file with companion data. Signed-off-by: Keith Packard --- altoslib/AltosJson.java | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) (limited to 'altoslib') diff --git a/altoslib/AltosJson.java b/altoslib/AltosJson.java index e979a459..80d83e48 100644 --- a/altoslib/AltosJson.java +++ b/altoslib/AltosJson.java @@ -1012,7 +1012,32 @@ public class AltosJson extends JsonUtil { assert_array(false); Class element_class = c.getComponentType(); - if (element_class == Double.TYPE) { + if (element_class == Boolean.TYPE) { + boolean[] array = (boolean[]) Array.newInstance(element_class, size()); + for (int i = 0; i < array.length; i++) + array[i] = (Boolean) get(i).make(element_class); + ret = array; + } else if (element_class == Byte.TYPE) { + byte[] array = (byte[]) Array.newInstance(element_class, size()); + for (int i = 0; i < array.length; i++) + array[i] = (Byte) get(i).make(element_class); + ret = array; + } else if (element_class == Character.TYPE) { + char[] array = (char[]) Array.newInstance(element_class, size()); + for (int i = 0; i < array.length; i++) + array[i] = (Character) get(i).make(element_class); + ret = array; + } else if (element_class == Integer.TYPE) { + int[] array = (int[]) Array.newInstance(element_class, size()); + for (int i = 0; i < array.length; i++) + array[i] = (Integer) get(i).make(element_class); + ret = array; + } else if (element_class == Long.TYPE) { + long[] array = (long[]) Array.newInstance(element_class, size()); + for (int i = 0; i < array.length; i++) + array[i] = (Long) get(i).make(element_class); + ret = array; + } else if (element_class == Double.TYPE) { double[] array = (double[]) Array.newInstance(element_class, size()); for (int i = 0; i < array.length; i++) array[i] = (Double) get(i).make(element_class); -- cgit v1.2.3 From e8250fcb267a34fbbd8b88c6dcc8eec419bbcc68 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Fri, 17 Jun 2016 08:26:31 -0700 Subject: altoslib: Add back some JSON exception debugging printfs These make it possible to figure out where the JSON code went wrong. Signed-off-by: Keith Packard --- altoslib/AltosJson.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'altoslib') diff --git a/altoslib/AltosJson.java b/altoslib/AltosJson.java index 80d83e48..346144d9 100644 --- a/altoslib/AltosJson.java +++ b/altoslib/AltosJson.java @@ -1080,17 +1080,27 @@ public class AltosJson extends JsonUtil { field.set(object, val); } } catch (IllegalAccessException ie) { + System.out.printf("%s:%s %s\n", + c.getName(), fieldName, ie.toString()); } } } ret = object; } catch (InvocationTargetException ie) { + System.out.printf("%s: %s\n", + c.getName(), ie.toString()); ret = null; } catch (NoSuchMethodException ie) { + System.out.printf("%s: %s\n", + c.getName(), ie.toString()); ret = null; } catch (InstantiationException ie) { + System.out.printf("%s: %s\n", + c.getName(), ie.toString()); ret = null; } catch (IllegalAccessException ie) { + System.out.printf("%s: %s\n", + c.getName(), ie.toString()); ret = null; } } @@ -1223,6 +1233,8 @@ public class AltosJson extends JsonUtil { put(fieldName, json); } } catch (IllegalAccessException ie) { + System.out.printf("%s:%s %s\n", + c.getName(), fieldName, ie.toString()); } } } -- cgit v1.2.3 From 0c5a1bea3ffa7c4b6b1503733e33911cbfcb3e80 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Fri, 17 Jun 2016 08:54:19 -0700 Subject: altoslib: Stop reflective JSON class walk at Object instead of null Android has classes above Object which are all tied together which cause the object walking to fail in pretty spectacular ways. As Object has no interesting fields, that serves as a fine barrier to the super class walk and works on both android and real java. Signed-off-by: Keith Packard --- altoslib/AltosJson.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'altoslib') diff --git a/altoslib/AltosJson.java b/altoslib/AltosJson.java index 346144d9..67f3a00a 100644 --- a/altoslib/AltosJson.java +++ b/altoslib/AltosJson.java @@ -1063,7 +1063,7 @@ public class AltosJson extends JsonUtil { } else { object = c.newInstance(); } - for (; c != null; c = c.getSuperclass()) { + for (; c != Object.class; c = c.getSuperclass()) { for (Field field : c.getDeclaredFields()) { String fieldName = field.getName(); Class fieldClass = field.getType(); @@ -1208,7 +1208,7 @@ public class AltosJson extends JsonUtil { } } else { assert_hash(true); - for (Class c = object.getClass(); c != null; c = c.getSuperclass()) { + for (Class c = object.getClass(); c != Object.class; c = c.getSuperclass()) { for (Field field : c.getDeclaredFields()) { String fieldName = field.getName(); -- cgit v1.2.3