diff options
author | Bdale Garbee <bdale@gag.com> | 2016-05-06 17:59:39 -0600 |
---|---|---|
committer | Bdale Garbee <bdale@gag.com> | 2016-05-06 17:59:39 -0600 |
commit | ac7be4a40df88ee3a0992e041635e4ac4cf5ac48 (patch) | |
tree | ee3c747b2ee98b772e02dce604b58878e9336def /altoslib | |
parent | b53c78e75879d647935a30acb88fdd69467617a7 (diff) | |
parent | ce4c8a8ad57515e851207b0a82f3af791bb30d3e (diff) |
Merge branch 'master' into branch-1.6
Diffstat (limited to 'altoslib')
133 files changed, 568 insertions, 431 deletions
diff --git a/altoslib/AltosAccel.java b/altoslib/AltosAccel.java index e12b6375..2c563f66 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; diff --git a/altoslib/AltosCRCException.java b/altoslib/AltosCRCException.java index d2337512..03dad137 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_9; +package org.altusmetrum.altoslib_10; public class AltosCRCException extends Exception { public int rssi; diff --git a/altoslib/AltosCSV.java b/altoslib/AltosCSV.java index 8a389812..fa515b31 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; import java.util.*; diff --git a/altoslib/AltosCompanion.java b/altoslib/AltosCompanion.java index 87e701cf..dc33dacc 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; diff --git a/altoslib/AltosConfigData.java b/altoslib/AltosConfigData.java index 7a518ab4..812296f3 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_9; +package org.altusmetrum.altoslib_10; import java.util.*; import java.text.*; @@ -476,6 +476,18 @@ public class AltosConfigData implements Iterable<String> { } + public boolean mma655x_inverted() throws AltosUnknownProduct { + if (product.startsWith("EasyMega-v1")) + return false; + if (product.startsWith("TeleMetrum-v2")) + return true; + if (product.startsWith("TeleMega-v2")) + return false; + if (product.startsWith("TeleMega-v1")) + return false; + throw new AltosUnknownProduct(product); + } + public void get_values(AltosConfigValues source) throws AltosConfigDataException { /* HAS_FLIGHT */ @@ -493,8 +505,6 @@ public class AltosConfigData implements Iterable<String> { radio_enable = source.radio_enable(); if (callsign != null) callsign = source.callsign(); - if (radio_calibration >= 0) - radio_calibration = source.radio_calibration(); if (telemetry_rate >= 0) telemetry_rate = source.telemetry_rate(); @@ -601,10 +611,6 @@ public class AltosConfigData implements Iterable<String> { if (apogee_lockout >= 0) link.printf("c L %d\n", apogee_lockout); - /* Don't mess with radio calibration when remote */ - if (radio_calibration > 0 && !remote) - link.printf("c f %d\n", radio_calibration); - /* HAS_RADIO */ if (has_frequency()) { boolean has_frequency = radio_frequency >= 0; diff --git a/altoslib/AltosConfigDataException.java b/altoslib/AltosConfigDataException.java index d1d0d8d0..75cd1695 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_9; +package org.altusmetrum.altoslib_10; public class AltosConfigDataException extends Exception { diff --git a/altoslib/AltosConfigValues.java b/altoslib/AltosConfigValues.java index 3306aa4b..aab0892a 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_9; +package org.altusmetrum.altoslib_10; public interface AltosConfigValues { /* set and get all of the dialog values */ @@ -45,8 +45,6 @@ public interface AltosConfigValues { public abstract void set_radio_calibration(int new_radio_calibration); - public abstract int radio_calibration() throws AltosConfigDataException; - public abstract void set_radio_enable(int new_radio_enable); public abstract int radio_enable(); diff --git a/altoslib/AltosConvert.java b/altoslib/AltosConvert.java index 59092a6f..265b5f0f 100644 --- a/altoslib/AltosConvert.java +++ b/altoslib/AltosConvert.java @@ -18,7 +18,7 @@ /* * Sensor data conversion functions */ -package org.altusmetrum.altoslib_9; +package org.altusmetrum.altoslib_10; public class AltosConvert { /* @@ -325,6 +325,14 @@ public class AltosConvert { return miles_to_meters(mps) / 3600; } + public static double mps_to_fps(double mps) { + return meters_to_miles(mps) * 5280; + } + + public static double fps_to_mps(double mps) { + return miles_to_meters(mps) / 5280; + } + public static double meters_to_mach(double meters) { return meters / 343; /* something close to mach at usual rocket sites */ } diff --git a/altoslib/AltosDebug.java b/altoslib/AltosDebug.java index 35f51dd4..e93c2d2d 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; diff --git a/altoslib/AltosDistance.java b/altoslib/AltosDistance.java index fe18250e..b68a4525 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_9; +package org.altusmetrum.altoslib_10; public class AltosDistance extends AltosUnits { diff --git a/altoslib/AltosEeprom.java b/altoslib/AltosEeprom.java index 7379b510..5f0a349f 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; import java.util.*; diff --git a/altoslib/AltosEepromChunk.java b/altoslib/AltosEepromChunk.java index b996eb00..7a80e294 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_9; +package org.altusmetrum.altoslib_10; import java.text.*; import java.util.concurrent.*; @@ -69,7 +69,7 @@ public class AltosEepromChunk { eeprom = new AltosEepromTM(this, offset); break; case AltosLib.AO_LOG_FORMAT_TINY: - eeprom = new AltosEepromTm(this, offset, state); + eeprom = new AltosEepromTMini(this, offset, state); break; case AltosLib.AO_LOG_FORMAT_TELEMETRY: case AltosLib.AO_LOG_FORMAT_TELESCIENCE: diff --git a/altoslib/AltosEepromDownload.java b/altoslib/AltosEepromDownload.java index 67f7fc57..1a02cb9c 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; import java.util.*; diff --git a/altoslib/AltosEepromFile.java b/altoslib/AltosEepromFile.java index d88aeab9..000bb1be 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; import java.util.*; @@ -89,7 +89,7 @@ public class AltosEepromFile extends AltosStateIterable { body = new AltosEepromIterable(AltosEepromTM.read(input)); break; case AltosLib.AO_LOG_FORMAT_TINY: - body = new AltosEepromIterable(AltosEepromTm.read(input)); + body = new AltosEepromIterable(AltosEepromTMini.read(input)); break; case AltosLib.AO_LOG_FORMAT_TELEMETRY: case AltosLib.AO_LOG_FORMAT_TELESCIENCE: diff --git a/altoslib/AltosEepromGPS.java b/altoslib/AltosEepromGPS.java index 07ef2920..a0a074ee 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; import java.util.*; diff --git a/altoslib/AltosEepromHeader.java b/altoslib/AltosEepromHeader.java index e7ed93b0..6c8c56d4 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; import java.util.*; diff --git a/altoslib/AltosEepromIterable.java b/altoslib/AltosEepromIterable.java index f607fbd2..97bb9285 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; import java.util.*; diff --git a/altoslib/AltosEepromList.java b/altoslib/AltosEepromList.java index 12d10b6e..4d511ead 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; import java.util.*; diff --git a/altoslib/AltosEepromLog.java b/altoslib/AltosEepromLog.java index d1a1ab6c..f0ed2db4 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_9; +package org.altusmetrum.altoslib_10; import java.text.*; import java.util.concurrent.*; diff --git a/altoslib/AltosEepromMega.java b/altoslib/AltosEepromMega.java index db8ab3a8..29f0aa90 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; import java.util.*; diff --git a/altoslib/AltosEepromMetrum2.java b/altoslib/AltosEepromMetrum2.java index df0075b9..5662c8e5 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; import java.util.*; diff --git a/altoslib/AltosEepromMini.java b/altoslib/AltosEepromMini.java index 228145eb..f429a0e8 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; import java.util.*; diff --git a/altoslib/AltosEepromMonitor.java b/altoslib/AltosEepromMonitor.java index 800dc0b9..a966c631 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_9; +package org.altusmetrum.altoslib_10; public interface AltosEepromMonitor { diff --git a/altoslib/AltosEepromTM.java b/altoslib/AltosEepromTM.java index 316058e2..7a27a234 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; import java.util.*; diff --git a/altoslib/AltosEepromTm.java b/altoslib/AltosEepromTMini.java index 090b65e3..8f01c088 100644 --- a/altoslib/AltosEepromTm.java +++ b/altoslib/AltosEepromTMini.java @@ -15,13 +15,13 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_9; +package org.altusmetrum.altoslib_10; import java.io.*; import java.util.*; import java.text.*; -public class AltosEepromTm extends AltosEeprom { +public class AltosEepromTMini extends AltosEeprom { public int i; public int a; public int b; @@ -58,7 +58,7 @@ public class AltosEepromTm extends AltosEeprom { } } - public AltosEepromTm (AltosEepromChunk chunk, int start, AltosState state) throws ParseException { + public AltosEepromTMini (AltosEepromChunk chunk, int start, AltosState state) throws ParseException { int value = chunk.data16(start); int i = (chunk.address + start) / record_length; @@ -100,7 +100,7 @@ public class AltosEepromTm extends AltosEeprom { } } - public AltosEepromTm (String line) { + public AltosEepromTMini (String line) { valid = false; tick = 0; a = 0; @@ -130,7 +130,7 @@ public class AltosEepromTm extends AltosEeprom { } } - public AltosEepromTm(int in_cmd, int in_tick, int in_a, int in_b) { + public AltosEepromTMini(int in_cmd, int in_tick, int in_a, int in_b) { valid = true; cmd = in_cmd; tick = in_tick; @@ -146,7 +146,7 @@ public class AltosEepromTm extends AltosEeprom { String line = AltosLib.gets(input); if (line == null) break; - AltosEepromTm tm = new AltosEepromTm(line); + AltosEepromTMini tm = new AltosEepromTMini(line); tms.add(tm); } catch (IOException ie) { break; diff --git a/altoslib/AltosFile.java b/altoslib/AltosFile.java index b8d62179..d1d17610 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_9; +package org.altusmetrum.altoslib_10; import java.io.File; import java.util.*; diff --git a/altoslib/AltosFlash.java b/altoslib/AltosFlash.java index 627b758b..d79edf68 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; diff --git a/altoslib/AltosFlashListener.java b/altoslib/AltosFlashListener.java index e977c579..8d171baf 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_9; +package org.altusmetrum.altoslib_10; public interface AltosFlashListener { public void position(String label, int percent); diff --git a/altoslib/AltosFlightDisplay.java b/altoslib/AltosFlightDisplay.java index 912f470f..4b57526a 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_9; +package org.altusmetrum.altoslib_10; public interface AltosFlightDisplay extends AltosUnitsListener, AltosFontListener { void reset(); diff --git a/altoslib/AltosFlightReader.java b/altoslib/AltosFlightReader.java index 84b2392b..62f24e9f 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_9; +package org.altusmetrum.altoslib_10; import java.text.*; import java.io.*; diff --git a/altoslib/AltosFlightStats.java b/altoslib/AltosFlightStats.java index 39e8cdae..1c7d67e0 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; @@ -57,7 +57,7 @@ public class AltosFlightStats { } if (state == null) - return 0; + return AltosLib.MISSING; double landed_height = state.height(); @@ -65,7 +65,7 @@ public class AltosFlightStats { boolean above = true; - double landed_time = -1000; + double landed_time = AltosLib.MISSING; for (AltosState s : states) { state = s; @@ -73,14 +73,12 @@ public class AltosFlightStats { if (state.height() > landed_height + 10) { above = true; } else { - if (above && state.height() < landed_height + 2) { + if (above && Math.abs(state.height() - landed_height) < 2) { above = false; landed_time = state.time; } } } - if (landed_time == -1000) - landed_time = state.time; return landed_time; } @@ -96,10 +94,8 @@ public class AltosFlightStats { break; } if (state == null) - return 0; + return AltosLib.MISSING; - if (boost_time == AltosLib.MISSING) - boost_time = state.time; return boost_time; } @@ -122,6 +118,13 @@ public class AltosFlightStats { has_imu = false; has_mag = false; has_orient = false; + + for (int s = AltosLib.ao_flight_startup; s <= AltosLib.ao_flight_landed; s++) { + state_count[s] = 0; + state_speed[s] = 0.0; + state_accel[s] = 0.0; + } + for (AltosState state : states) { if (serial == AltosLib.MISSING && state.serial != AltosLib.MISSING) serial = state.serial; @@ -139,10 +142,13 @@ public class AltosFlightStats { has_flight_data = true; int state_id = state.state(); - if (state.time >= boost_time && state_id < AltosLib.ao_flight_boost) + if (boost_time != AltosLib.MISSING && state.time >= boost_time && state_id < AltosLib.ao_flight_boost) { state_id = AltosLib.ao_flight_boost; - if (state.time >= landed_time && state_id < AltosLib.ao_flight_landed) + } + if (landed_time != AltosLib.MISSING && state.time >= landed_time && state_id < AltosLib.ao_flight_landed) { state_id = AltosLib.ao_flight_landed; + } + if (state.gps != null && state.gps.locked) { year = state.gps.year; month = state.gps.month; diff --git a/altoslib/AltosFontListener.java b/altoslib/AltosFontListener.java index ae23e13c..565f50e4 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_9; +package org.altusmetrum.altoslib_10; public interface AltosFontListener { void font_size_changed(int font_size); diff --git a/altoslib/AltosFrequency.java b/altoslib/AltosFrequency.java index 7c6ffe61..9542fe33 100644 --- a/altoslib/AltosFrequency.java +++ b/altoslib/AltosFrequency.java @@ -15,9 +15,13 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_9; +package org.altusmetrum.altoslib_10; -public class AltosFrequency { +import java.io.*; +import java.util.*; +import java.text.*; + +public class AltosFrequency implements Serializable { public double frequency; public String description; @@ -44,6 +48,10 @@ public class AltosFrequency { frequency, description); } + public String frequency_string() { + return String.format("%7.3f", frequency); + } + public boolean close(double f) { double diff = Math.abs(frequency - f); diff --git a/altoslib/AltosGPS.java b/altoslib/AltosGPS.java index a4cd2061..c5290a3a 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_9; +package org.altusmetrum.altoslib_10; import java.text.*; import java.util.concurrent.*; diff --git a/altoslib/AltosGPSSat.java b/altoslib/AltosGPSSat.java index 3f9e479e..c853b634 100644 --- a/altoslib/AltosGPSSat.java +++ b/altoslib/AltosGPSSat.java @@ -15,9 +15,12 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_9; +package org.altusmetrum.altoslib_10; +import java.text.*; +import java.util.concurrent.*; +import java.io.*; -public class AltosGPSSat { +public class AltosGPSSat implements Serializable { public int svid; public int c_n0; diff --git a/altoslib/AltosGreatCircle.java b/altoslib/AltosGreatCircle.java index 9ced17e7..de3904bf 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_9; +package org.altusmetrum.altoslib_10; import java.lang.Math; import java.io.*; diff --git a/altoslib/AltosHeight.java b/altoslib/AltosHeight.java index 5cc3c20c..2bae2566 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_9; +package org.altusmetrum.altoslib_10; public class AltosHeight extends AltosUnits { diff --git a/altoslib/AltosHexfile.java b/altoslib/AltosHexfile.java index fb036d0c..f72d4183 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; import java.util.LinkedList; diff --git a/altoslib/AltosHexsym.java b/altoslib/AltosHexsym.java index 0149fde1..1d9cbb18 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_9; +package org.altusmetrum.altoslib_10; public class AltosHexsym { String name; diff --git a/altoslib/AltosIMU.java b/altoslib/AltosIMU.java index 285de8cc..62539e08 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_9; +package org.altusmetrum.altoslib_10; import java.util.concurrent.*; import java.io.*; diff --git a/altoslib/AltosIdle.java b/altoslib/AltosIdle.java index 2e5981db..07a628c3 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; import java.util.*; diff --git a/altoslib/AltosIdleFetch.java b/altoslib/AltosIdleFetch.java index 48db6ab4..0095bb73 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; import java.util.*; @@ -40,7 +40,7 @@ class AltosIdler { static final int idle_sensor_tmini = 14; static final int idle_sensor_tgps = 15; - public void update_state(AltosState state, AltosLink link, AltosConfigData config_data) throws InterruptedException, TimeoutException { + public void update_state(AltosState state, AltosLink link, AltosConfigData config_data) throws InterruptedException, TimeoutException, AltosUnknownProduct { for (int idler : idlers) { AltosIdle idle = null; switch (idler) { @@ -137,8 +137,9 @@ public class AltosIdleFetch implements AltosStateUpdate { double frequency; String callsign; - public void update_state(AltosState state) throws InterruptedException { + public void update_state(AltosState state) throws InterruptedException, AltosUnknownProduct { try { + boolean matched = false; /* Fetch config data from remote */ AltosConfigData config_data = new AltosConfigData(link); state.set_state(AltosLib.ao_flight_stateless); @@ -150,9 +151,12 @@ public class AltosIdleFetch implements AltosStateUpdate { for (AltosIdler idler : idlers) { if (idler.matches(config_data)) { idler.update_state(state, link, config_data); + matched = true; break; } } + if (!matched) + throw new AltosUnknownProduct(config_data.product); state.set_received_time(System.currentTimeMillis()); } catch (TimeoutException te) { } diff --git a/altoslib/AltosIdleMonitor.java b/altoslib/AltosIdleMonitor.java index d5c1a428..c67b4d8a 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; import java.util.concurrent.*; @@ -28,6 +28,7 @@ public class AltosIdleMonitor extends Thread { AltosIdleFetch fetch; boolean remote; + boolean close_on_exit; double frequency; String callsign; @@ -50,7 +51,7 @@ public class AltosIdleMonitor extends Thread { return link.reply_abort; } - boolean update_state(AltosState state) throws InterruptedException, TimeoutException { + boolean update_state(AltosState state) throws InterruptedException, TimeoutException, AltosUnknownProduct { boolean worked = false; boolean aborted = false; @@ -98,6 +99,8 @@ public class AltosIdleMonitor extends Thread { update_state(state); listener.update(state, listener_state); } catch (TimeoutException te) { + } catch (AltosUnknownProduct ae) { + listener.error(String.format("Unknown product \"%s\"", ae.product)); } if (link.has_error || link.reply_abort) { listener.failed(); @@ -107,18 +110,25 @@ public class AltosIdleMonitor extends Thread { } } catch (InterruptedException ie) { } - try { - link.close(); - } catch (InterruptedException ie) { + if (close_on_exit) { + try { + link.close(); + } catch (InterruptedException ie) { + } } } - public AltosIdleMonitor(AltosIdleMonitorListener in_listener, AltosLink in_link, boolean in_remote) - throws FileNotFoundException, InterruptedException, TimeoutException { + public AltosIdleMonitor(AltosIdleMonitorListener in_listener, AltosLink in_link, boolean in_remote, boolean in_close_on_exit) { listener = in_listener; link = in_link; remote = in_remote; + close_on_exit = in_close_on_exit; listener_state = new AltosListenerState(); fetch = new AltosIdleFetch(link); } + + public AltosIdleMonitor(AltosIdleMonitorListener in_listener, AltosLink in_link, boolean in_remote) { + this(in_listener, in_link, in_remote, true); + } } + diff --git a/altoslib/AltosIdleMonitorListener.java b/altoslib/AltosIdleMonitorListener.java index 5b751e52..36857f58 100644 --- a/altoslib/AltosIdleMonitorListener.java +++ b/altoslib/AltosIdleMonitorListener.java @@ -15,9 +15,10 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_9; +package org.altusmetrum.altoslib_10; public interface AltosIdleMonitorListener { public void update(AltosState state, AltosListenerState listener_state); + public void error(String reason); public void failed(); } diff --git a/altoslib/AltosIgnite.java b/altoslib/AltosIgnite.java index d5348628..ab9c2da6 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_9; +package org.altusmetrum.altoslib_10; import java.util.*; import java.io.*; @@ -24,6 +24,7 @@ import java.util.concurrent.*; public class AltosIgnite { AltosLink link; boolean remote; + boolean close_on_exit; boolean link_started; boolean have_npyro = false; int npyro; @@ -180,14 +181,18 @@ public class AltosIgnite { public void close() throws InterruptedException { stop_link(); - link.close(); + if (close_on_exit) + link.close(); link = null; } - public AltosIgnite(AltosLink in_link, boolean in_remote) - throws FileNotFoundException, TimeoutException, InterruptedException { - + public AltosIgnite(AltosLink in_link, boolean in_remote, boolean in_close_on_exit) { link = in_link; remote = in_remote; + close_on_exit = in_close_on_exit; + } + + public AltosIgnite(AltosLink in_link, boolean in_remote) { + this(in_link, in_remote, true); } -}
\ No newline at end of file +} diff --git a/altoslib/AltosImage.java b/altoslib/AltosImage.java index 7a0fe9dd..d54335c7 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; diff --git a/altoslib/AltosKML.java b/altoslib/AltosKML.java index d302535f..ac5e0257 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; import java.util.*; diff --git a/altoslib/AltosLatLon.java b/altoslib/AltosLatLon.java index 8cd851e5..d39fe15f 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_9; +package org.altusmetrum.altoslib_10; public class AltosLatLon { public double lat; diff --git a/altoslib/AltosLatitude.java b/altoslib/AltosLatitude.java index 51d77785..e0deb504 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_9; +package org.altusmetrum.altoslib_10; public class AltosLatitude extends AltosLocation { public String pos() { return "N"; } diff --git a/altoslib/AltosLaunchSite.java b/altoslib/AltosLaunchSite.java index 7958d186..ee2a60e9 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; import java.lang.*; diff --git a/altoslib/AltosLaunchSiteListener.java b/altoslib/AltosLaunchSiteListener.java index 4270dc4a..c77eadc5 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; import java.lang.*; diff --git a/altoslib/AltosLaunchSites.java b/altoslib/AltosLaunchSites.java index 4e843c10..3ebac601 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; import java.lang.*; @@ -47,7 +47,12 @@ public class AltosLaunchSites extends Thread { public void run() { try { - url = new URL(AltosLib.launch_sites_url); + String path; + + path = System.getenv(AltosLib.launch_sites_env); + if (path == null) + path = AltosLib.launch_sites_url; + url = new URL(path); URLConnection uc = url.openConnection(); InputStreamReader in_stream = new InputStreamReader(uc.getInputStream(), AltosLib.unicode_set); @@ -60,6 +65,7 @@ public class AltosLaunchSites extends Thread { add(line); } } catch (Exception e) { + System.out.printf("file exception %s\n", e.toString()); } finally { notify_complete(); } diff --git a/altoslib/AltosLib.java b/altoslib/AltosLib.java index 575cfc1a..a73a7759 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_9; +package org.altusmetrum.altoslib_10; import java.util.*; import java.io.*; @@ -198,6 +198,7 @@ public class AltosLib { }; public static final String launch_sites_url = "http://www.altusmetrum.org/AltOS/launch-sites.txt"; + public static final String launch_sites_env = "LAUNCH_SITES"; // public static final String launch_sites_url = "file:///home/keithp/misc/text/altusmetrum/AltOS/launch-sites.txt"; public static final int ao_telemetry_standard_len = 32; diff --git a/altoslib/AltosLine.java b/altoslib/AltosLine.java index cf3a1984..876cb7df 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_9; +package org.altusmetrum.altoslib_10; public class AltosLine { public String line; diff --git a/altoslib/AltosLink.java b/altoslib/AltosLink.java index 10967417..cd8609c0 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; import java.util.concurrent.*; @@ -170,8 +170,8 @@ public abstract class AltosLink implements Runnable { boolean can_cancel = can_cancel_reply(); String reply = null; - if (!can_cancel && remote) - System.out.printf("Uh-oh, reading remote serial device from swing thread\n"); +// if (!can_cancel && remote) +// System.out.printf("Uh-oh, reading remote serial device from swing thread\n"); if (remote && can_cancel) { timeout = 500; @@ -539,15 +539,15 @@ public abstract class AltosLink implements Runnable { if (config_data.has_monitor_battery()) { try { - String[] items = adc(); - for (int i = 0; i < items.length;) { - if (items[i].equals("batt")) { - monitor_batt = Integer.parseInt(items[i+1]); - i += 2; - continue; + String[] items = adc(); + for (int i = 0; i < items.length;) { + if (items[i].equals("batt")) { + monitor_batt = Integer.parseInt(items[i+1]); + i += 2; + continue; + } + i++; } - i++; - } } catch (TimeoutException te) { } } diff --git a/altoslib/AltosListenerState.java b/altoslib/AltosListenerState.java index 7df5c9bf..389e392f 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; diff --git a/altoslib/AltosLocation.java b/altoslib/AltosLocation.java index 436e4b02..df1c9d63 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_9; +package org.altusmetrum.altoslib_10; public abstract class AltosLocation extends AltosUnits { diff --git a/altoslib/AltosLog.java b/altoslib/AltosLog.java index 58306d55..a6e04215 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; import java.text.*; diff --git a/altoslib/AltosLongitude.java b/altoslib/AltosLongitude.java index bc088602..61d74afc 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_9; +package org.altusmetrum.altoslib_10; public class AltosLongitude extends AltosLocation { public String pos() { return "E"; } diff --git a/altoslib/AltosMag.java b/altoslib/AltosMag.java index 3643ca9e..ce5a48c3 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_9; +package org.altusmetrum.altoslib_10; import java.util.concurrent.*; import java.io.*; diff --git a/altoslib/AltosMap.java b/altoslib/AltosMap.java index 6c08f2d7..1841277f 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; import java.lang.*; @@ -308,7 +308,11 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { upper_left = floor(transform.screen_point(new AltosPointInt(0, 0))); lower_right = floor(transform.screen_point(new AltosPointInt(width(), height()))); } - for (AltosPointInt point : tiles.keySet()) { + + Enumeration<AltosPointInt> keyEnumeration = tiles.keys(); + + while (keyEnumeration.hasMoreElements()) { + AltosPointInt point = keyEnumeration.nextElement(); if (point.x < upper_left.x || lower_right.x < point.x || point.y < upper_left.y || lower_right.y < point.y) { tiles.remove(point); @@ -324,7 +328,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(this, ul, center, zoom, maptype, px_size); + AltosMapTile tile = map_interface.new_tile(cache, ul, center, zoom, maptype, px_size); + tile.add_listener(this); tiles.put(point, tile); } } @@ -341,11 +346,6 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { centre(lat, lon); tiles.clear(); make_tiles(); - for (AltosMapTile tile : tiles.values()) { - tile.add_store_listener(this); - if (tile.store_status() != AltosMapTile.loading) - listener.notify_tile(tile, tile.store_status()); - } repaint(); } @@ -377,7 +377,10 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { /* AltosMapTileListener methods */ public synchronized void notify_tile(AltosMapTile tile, int status) { - for (AltosPointInt point : tiles.keySet()) { + Enumeration<AltosPointInt> keyEnumeration = tiles.keys(); + + while (keyEnumeration.hasMoreElements()) { + AltosPointInt point = keyEnumeration.nextElement(); if (tile == tiles.get(point)) { AltosPointInt screen = transform.screen(point); repaint(screen.x, screen.y, AltosMap.px_size, AltosMap.px_size); @@ -414,10 +417,8 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { if (distance > drag_far) dragged = true; - if (transform == null) { - debug("Transform not set in drag\n"); + if (transform == null) return; - } AltosLatLon new_centre = transform.screen_lat_lon(new AltosPointInt(width() / 2 - dx, height() / 2 - dy)); centre(new_centre); @@ -432,7 +433,6 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { private void drag_stop(int x, int y) { if (!dragged) { if (transform == null) { - debug("Transform not set in stop\n"); return; } map_interface.select_object (transform.screen_lat_lon(new AltosPointInt(x,y))); @@ -440,14 +440,14 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { } private void line_start(int x, int y) { - if (line != null) { + if (line != null && transform != null) { line.pressed(new AltosPointInt(x, y), transform); repaint(); } } private void line(int x, int y) { - if (line != null) { + if (line != null && transform != null) { line.dragged(new AltosPointInt(x, y), transform); repaint(); } diff --git a/altoslib/AltosMapCache.java b/altoslib/AltosMapCache.java index 744790c6..38e0f769 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; import java.net.*; @@ -23,25 +23,20 @@ import java.net.*; public class AltosMapCache implements AltosMapCacheListener { /* An entry in the MapCache */ - class MapCacheElement implements AltosMapStoreListener { + class MapCacheElement implements AltosMapTileListener { AltosMapTile tile; /* Notify when image has been loaded */ AltosImage image; - AltosMapStore store; long used; class loader implements Runnable { public void run() { - if (image != null) - tile.notify_image(image); - try { - image = map_interface.load_image(store.file); - } catch (Exception ex) { + if (image == null) { + try { + image = map_interface.load_image(tile.store.file); + } catch (Exception ex) { + } } - if (image == null) - tile.set_status(AltosMapTile.failed); - else - tile.set_status(AltosMapTile.success); tile.notify_image(image); } } @@ -60,41 +55,21 @@ public class AltosMapCache implements AltosMapCacheListener { } public boolean has_map() { - return store.status() == AltosMapTile.success; + return tile.status == AltosMapTile.loaded; } - public synchronized void notify_store(AltosMapStore store, int status) { - switch (status) { - case AltosMapTile.loading: - break; - case AltosMapTile.success: + public synchronized void notify_tile(AltosMapTile tile, int status) { + if (status == AltosMapTile.fetched) { + System.out.printf("tile fetched, loading image\n"); load(); - break; - default: - tile.set_status(status); - tile.notify_image(null); } } - public MapCacheElement(AltosMapTile tile, AltosMapStore store) throws IOException { + public MapCacheElement(AltosMapTile tile) { this.tile = tile; this.image = null; - this.store = store; this.used = 0; - - int status = store.status(); - switch (status) { - case AltosMapTile.loading: - store.add_listener(this); - break; - case AltosMapTile.success: - load(); - break; - default: - tile.set_status(status); - tile.notify_image(null); - break; - } + tile.add_listener(this); } } @@ -135,7 +110,7 @@ public class AltosMapCache implements AltosMapCacheListener { } } - public AltosImage get(AltosMapTile tile, AltosMapStore store, int width, int height) { + public AltosImage get(AltosMapTile tile) { int oldest = -1; long age = used; @@ -148,7 +123,7 @@ public class AltosMapCache implements AltosMapCacheListener { oldest = i; break; } - if (store.equals(element.store)) { + if (tile.store.equals(element.tile.store)) { element.used = used++; return element.image; } @@ -158,24 +133,15 @@ public class AltosMapCache implements AltosMapCacheListener { } } - try { - element = new MapCacheElement(tile, store); - element.used = used++; - if (elements[oldest] != null) - elements[oldest].flush(); + element = new MapCacheElement(tile); + element.used = used++; + if (elements[oldest] != null) + elements[oldest].flush(); - elements[oldest] = element; - - if (element.image == null) - tile.set_status(AltosMapTile.loading); - else - tile.set_status(AltosMapTile.success); - - return element.image; - } catch (IOException e) { - tile.set_status(AltosMapTile.failed); - return null; - } + elements[oldest] = element; + System.out.printf("AltosMapCache.get image ? %s\n", + element.image == null ? "false" : "true"); + return element.image; } } diff --git a/altoslib/AltosMapCacheListener.java b/altoslib/AltosMapCacheListener.java index c0409630..4984d9e5 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_9; +package org.altusmetrum.altoslib_10; public interface AltosMapCacheListener { public void map_cache_changed(int map_cache); diff --git a/altoslib/AltosMapInterface.java b/altoslib/AltosMapInterface.java index 0a59a808..756a78f2 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; import java.net.*; @@ -29,7 +29,7 @@ public interface AltosMapInterface { public abstract AltosMapMark new_mark(double lat, double lon, int state); - public abstract AltosMapTile new_tile(AltosMapTileListener listener, 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); public abstract int width(); diff --git a/altoslib/AltosMapLine.java b/altoslib/AltosMapLine.java index 061f226e..bd590136 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; import java.lang.Math; diff --git a/altoslib/AltosMapLoader.java b/altoslib/AltosMapLoader.java index 9ed93a42..7112a1c4 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; import java.util.*; @@ -24,7 +24,7 @@ import java.lang.Math; import java.net.URL; import java.net.URLConnection; -public class AltosMapLoader implements AltosMapTileListener, AltosMapStoreListener { +public class AltosMapLoader extends Thread implements AltosMapTileListener { AltosMapLoaderListener listener; double latitude, longitude; @@ -88,14 +88,11 @@ public class AltosMapLoader implements AltosMapTileListener, AltosMapStoreListen 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) { - listener.debug("Make tile at %d, %d\n", x, y); 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(this, ul, center, zoom, maptype, AltosMap.px_size); - tile.add_store_listener(this); - if (tile.store_status() != AltosMapTile.loading) - notify_tile(tile, tile.store_status()); + AltosMapTile tile = map.map_interface.new_tile(null, ul, center, zoom, maptype, AltosMap.px_size); + tile.add_listener(this); } } } @@ -124,7 +121,7 @@ public class AltosMapLoader implements AltosMapTileListener, AltosMapStoreListen do_load(); } - private void start_load() { + public void run() { cur_z = min_z; int ntype = 0; @@ -139,67 +136,64 @@ public class AltosMapLoader implements AltosMapTileListener, AltosMapStoreListen cur_type = next_type(0); + tiles_total = 0; for (int z = min_z; z <= max_z; z++) - tiles_total += tiles_per_layer(z); + tiles_total += tiles_per_layer(z) * ntype; layers_total = (max_z - min_z + 1) * ntype; layers_loaded = 0; tiles_loaded_total = 0; - listener.debug("total tiles %d\n", tiles_total); + listener.debug("total tiles %d layers %d\n", tiles_total, layers_total); listener.loader_start(tiles_total); do_load(); } - public void load(double latitude, double longitude, int min_z, int max_z, double radius, int all_types) { - 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.latitude = latitude; - this.longitude = longitude; - this.min_z = min_z; - this.max_z = max_z; - this.radius = radius; - this.all_types = all_types; - start_load(); - } - - public synchronized void notify_store(AltosMapStore store, int status) { + public synchronized void notify_tile(AltosMapTile tile, int status) { boolean do_next = false; - if (status == AltosMapTile.loading) + if (status == AltosMapTile.fetching) return; + tile.remove_listener(this); + if (layers_loaded >= layers_total) return; ++tiles_loaded_total; ++tiles_loaded_layer; - listener.debug("total %d layer %d\n", tiles_loaded_total, tiles_loaded_layer); + + listener.debug("AltosMapLoader.notify_tile 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) { ++layers_loaded; listener.debug("%d layers loaded\n", layers_loaded); - if (layers_loaded == layers_total) { - listener.loader_done(tiles_total); - return; - } else { - do_next = true; - } + do_next = true; } - listener.loader_notify(tiles_loaded_total, - tiles_total, store.file.toString()); - if (do_next) - next_load(); - } - public synchronized void notify_tile(AltosMapTile tile, int status) { - notify_store(tile.store, status); + if (tiles_loaded_total == tiles_total) + listener.loader_done(tiles_total); + else { + listener.loader_notify(tiles_loaded_total, + tiles_total, tile.store.file.toString()); + if (do_next) + next_load(); + } } - public AltosMapCache cache() { return map.cache(); } - - public AltosMapLoader(AltosMap map, AltosMapLoaderListener listener) { + public AltosMapLoader(AltosMap map, AltosMapLoaderListener listener, + double latitude, double longitude, int min_z, int max_z, double radius, int all_types) { + 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; + this.min_z = min_z; + this.max_z = max_z; + this.radius = radius; + this.all_types = all_types; + start(); } } diff --git a/altoslib/AltosMapLoaderListener.java b/altoslib/AltosMapLoaderListener.java index 798270cc..47d7b858 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_9; +package org.altusmetrum.altoslib_10; public interface AltosMapLoaderListener { public abstract void loader_start(int max); diff --git a/altoslib/AltosMapMark.java b/altoslib/AltosMapMark.java index e87c168d..db714922 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; import java.lang.Math; diff --git a/altoslib/AltosMapPath.java b/altoslib/AltosMapPath.java index 64be49be..6f6db4f4 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; import java.lang.Math; diff --git a/altoslib/AltosMapPathPoint.java b/altoslib/AltosMapPathPoint.java index d500a7db..5b46cb19 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; import java.lang.Math; diff --git a/altoslib/AltosMapRectangle.java b/altoslib/AltosMapRectangle.java index 9c116b82..b6294a4e 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_9; +package org.altusmetrum.altoslib_10; public class AltosMapRectangle { AltosLatLon ul, lr; diff --git a/altoslib/AltosMapStore.java b/altoslib/AltosMapStore.java index c0638433..aed365ca 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; import java.net.*; @@ -35,6 +35,7 @@ public class AltosMapStore { public synchronized void add_listener(AltosMapStoreListener listener) { if (!listeners.contains(listener)) listeners.add(listener); + listener.notify_store(this, status); } public synchronized void remove_listener(AltosMapStoreListener listener) { @@ -110,7 +111,7 @@ public class AltosMapStore { file.delete(); return AltosMapTile.bad_request; } - return AltosMapTile.success; + return AltosMapTile.fetched; } static Object fetch_lock = new Object(); @@ -118,42 +119,42 @@ public class AltosMapStore { static final long forbidden_interval = 60l * 1000l * 1000l * 1000l; static final long google_maps_ratelimit_ms = 1200; - static Object loader_lock = new Object(); + static Object fetcher_lock = new Object(); static LinkedList<AltosMapStore> waiting = new LinkedList<AltosMapStore>(); static LinkedList<AltosMapStore> running = new LinkedList<AltosMapStore>(); - static final int concurrent_loaders = 128; + static final int concurrent_fetchers = 128; - static void start_loaders() { - while (!waiting.isEmpty() && running.size() < concurrent_loaders) { + static void start_fetchers() { + while (!waiting.isEmpty() && running.size() < concurrent_fetchers) { AltosMapStore s = waiting.remove(); running.add(s); - Thread lt = s.make_loader_thread(); + Thread lt = s.make_fetcher_thread(); lt.start(); } } - void finish_loader() { - synchronized(loader_lock) { + void finish_fetcher() { + synchronized(fetcher_lock) { running.remove(this); - start_loaders(); + start_fetchers(); } } - void add_loader() { - synchronized(loader_lock) { + void add_fetcher() { + synchronized(fetcher_lock) { waiting.add(this); - start_loaders(); + start_fetchers(); } } - class loader implements Runnable { + class fetcher implements Runnable { public void run() { try { if (file.exists()) { - notify_listeners(AltosMapTile.success); + notify_listeners(AltosMapTile.fetched); return; } @@ -170,7 +171,7 @@ public class AltosMapStore { synchronized (fetch_lock) { long startTime = System.nanoTime(); new_status = fetch_url(); - if (new_status == AltosMapTile.success) { + if (new_status == AltosMapTile.fetched) { long duration_ms = (System.nanoTime() - startTime) / 1000000; if (duration_ms < google_maps_ratelimit_ms) { try { @@ -186,17 +187,17 @@ public class AltosMapStore { } notify_listeners(new_status); } finally { - finish_loader(); + finish_fetcher(); } } } - private Thread make_loader_thread() { - return new Thread(new loader()); + private Thread make_fetcher_thread() { + return new Thread(new fetcher()); } - private void load() { - add_loader(); + private void fetch() { + add_fetcher(); } private AltosMapStore (String url, File file) { @@ -204,10 +205,10 @@ public class AltosMapStore { this.file = file; if (file.exists()) - status = AltosMapTile.success; + status = AltosMapTile.fetched; else { - status = AltosMapTile.loading; - load(); + status = AltosMapTile.fetching; + fetch(); } } diff --git a/altoslib/AltosMapStoreListener.java b/altoslib/AltosMapStoreListener.java index 8912caf7..65bd6ef8 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_9; +package org.altusmetrum.altoslib_10; public interface AltosMapStoreListener { abstract void notify_store(AltosMapStore store, int status); diff --git a/altoslib/AltosMapTile.java b/altoslib/AltosMapTile.java index 23ab64e4..fdc8ff65 100644 --- a/altoslib/AltosMapTile.java +++ b/altoslib/AltosMapTile.java @@ -15,27 +15,28 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_9; +package org.altusmetrum.altoslib_10; import java.io.*; import java.util.*; -public abstract class AltosMapTile implements AltosFontListener { - AltosMapTileListener listener; +public abstract class AltosMapTile implements AltosFontListener, AltosMapStoreListener { + LinkedList<AltosMapTileListener> listeners = new LinkedList<AltosMapTileListener>(); public AltosLatLon upper_left, center; public int px_size; int zoom; int maptype; int scale; + private AltosMapCache cache; public AltosMapStore store; - public AltosMapCache cache; public int status; - static public final int success = 0; - static public final int loading = 1; - static public final int failed = 2; - static public final int bad_request = 3; - static public final int forbidden = 4; + static public final int loaded = 0; /* loaded from file */ + static public final int fetched = 1; /* downloaded to file */ + static public final int fetching = 2; /* downloading from net */ + static public final int failed = 3; /* loading from file failed */ + 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; @@ -79,33 +80,46 @@ public abstract class AltosMapTile implements AltosFontListener { public void font_size_changed(int font_size) { } - public void set_status(int status) { + private synchronized void notify_listeners(int status) { this.status = status; - listener.notify_tile(this, status); + for (AltosMapTileListener listener : listeners) + listener.notify_tile(this, status); } - public void notify_image(AltosImage image) { - listener.notify_tile(this, status); + public void notify_store(AltosMapStore store, int status) { +// System.out.printf("AltosMapTile.notify_store %d\n", status); + notify_listeners(status); } - public int store_status() { - return store.status(); + public void notify_image(AltosImage image) { + if (image == null) + status = failed; + else + status = loaded; + notify_listeners(status); } - public void add_store_listener(AltosMapStoreListener listener) { - store.add_listener(listener); + public abstract void paint(AltosMapTransform t); + + public AltosImage get_image() { + if (cache == null) + return null; + return cache.get(this); } - public void remove_store_listener(AltosMapStoreListener listener) { - store.remove_listener(listener); + public synchronized void add_listener(AltosMapTileListener listener) { + if (!listeners.contains(listener)) + listeners.add(listener); + listener.notify_tile(this, status); } - public abstract void paint(AltosMapTransform t); + public synchronized void remove_listener(AltosMapTileListener listener) { + listeners.remove(listener); + } - public AltosMapTile(AltosMapTileListener listener, AltosLatLon upper_left, AltosLatLon center, int zoom, int maptype, int px_size, int scale) { - this.listener = listener; + public AltosMapTile(AltosMapCache cache, AltosLatLon upper_left, AltosLatLon center, int zoom, int maptype, int px_size, int scale) { + this.cache = cache; this.upper_left = upper_left; - this.cache = listener.cache(); while (center.lon < -180.0) center.lon += 360.0; @@ -118,11 +132,11 @@ public abstract class AltosMapTile implements AltosFontListener { this.px_size = px_size; this.scale = scale; - status = AltosMapTile.loading; store = AltosMapStore.get(map_url(), map_file()); + store.add_listener(this); } - public AltosMapTile(AltosMapTileListener listener, AltosLatLon upper_left, AltosLatLon center, int zoom, int maptype, int px_size) { - this(listener, upper_left, center, zoom, maptype, px_size, 1); + 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/altoslib/AltosMapTileListener.java b/altoslib/AltosMapTileListener.java index 83c1eaed..6d78b205 100644 --- a/altoslib/AltosMapTileListener.java +++ b/altoslib/AltosMapTileListener.java @@ -15,10 +15,8 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_9; +package org.altusmetrum.altoslib_10; public interface AltosMapTileListener { abstract public void notify_tile(AltosMapTile tile, int status); - - abstract public AltosMapCache cache(); } diff --git a/altoslib/AltosMapTransform.java b/altoslib/AltosMapTransform.java index ae78befa..b8901127 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; import java.lang.Math; diff --git a/altoslib/AltosMapTypeListener.java b/altoslib/AltosMapTypeListener.java new file mode 100644 index 00000000..b82bda3f --- /dev/null +++ b/altoslib/AltosMapTypeListener.java @@ -0,0 +1,22 @@ +/* + * Copyright © 2012 Keith Packard <keithp@keithp.com> + * + * 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; + +public interface AltosMapTypeListener { + public void map_type_changed(int map_type); +} diff --git a/altoslib/AltosMapZoomListener.java b/altoslib/AltosMapZoomListener.java index 5067aaec..51f8c3c5 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_9; +package org.altusmetrum.altoslib_10; public interface AltosMapZoomListener { abstract public void zoom_changed(int zoom); diff --git a/altoslib/AltosMma655x.java b/altoslib/AltosMma655x.java index 17aaa3f8..b09ec74b 100644 --- a/altoslib/AltosMma655x.java +++ b/altoslib/AltosMma655x.java @@ -15,13 +15,13 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_9; +package org.altusmetrum.altoslib_10; import java.util.concurrent.*; public class AltosMma655x implements Cloneable { - int accel; + private int accel; public boolean parse_line(String line) throws NumberFormatException { if (line.startsWith("MMA655X value")) { @@ -45,12 +45,18 @@ public class AltosMma655x implements Cloneable { return n; } - static public void update_state(AltosState state, AltosLink link, AltosConfigData config_data) throws InterruptedException { + static public void update_state(AltosState state, AltosLink link, AltosConfigData config_data) throws InterruptedException, AltosUnknownProduct { try { AltosMma655x mma655x = new AltosMma655x(link); - if (mma655x != null) - state.set_accel(mma655x.accel); + if (mma655x != null) { + int accel = mma655x.accel; + if (config_data.mma655x_inverted()) + accel = 4095 - accel; + if (config_data.pad_orientation == 1) + accel = 4095 - accel; + state.set_accel(accel); + } } catch (TimeoutException te) { } catch (NumberFormatException ne) { } diff --git a/altoslib/AltosMs5607.java b/altoslib/AltosMs5607.java index aa16e231..1277f267 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_9; +package org.altusmetrum.altoslib_10; import java.util.concurrent.*; import java.io.*; diff --git a/altoslib/AltosNoSymbol.java b/altoslib/AltosNoSymbol.java index 51b48666..5451047e 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_9; +package org.altusmetrum.altoslib_10; public class AltosNoSymbol extends Exception { public AltosNoSymbol(String name) { diff --git a/altoslib/AltosOrient.java b/altoslib/AltosOrient.java index a2d501b2..8b22c131 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_9; +package org.altusmetrum.altoslib_10; public class AltosOrient extends AltosUnits { diff --git a/altoslib/AltosParse.java b/altoslib/AltosParse.java index 18ef807b..1cbddcf9 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_9; +package org.altusmetrum.altoslib_10; import java.util.*; import java.text.*; diff --git a/altoslib/AltosPointDouble.java b/altoslib/AltosPointDouble.java index a358ea66..65bad427 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_9; +package org.altusmetrum.altoslib_10; public class AltosPointDouble { public double x, y; diff --git a/altoslib/AltosPointInt.java b/altoslib/AltosPointInt.java index 5f9591cc..34eb6fd3 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_9; +package org.altusmetrum.altoslib_10; public class AltosPointInt { public int x, y; diff --git a/altoslib/AltosPreferences.java b/altoslib/AltosPreferences.java index 91cfc6b6..fb3026a4 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; import java.util.*; @@ -116,6 +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"; /* Units preference */ @@ -128,25 +129,33 @@ public class AltosPreferences { public static int map_cache = 9; + final static String mapTypePreference = "MAP-TYPE"; + static int map_type; + public static AltosFrequency[] load_common_frequencies() { + AltosFrequency[] frequencies = null; - boolean existing = false; - existing = backend.nodeExists(common_frequencies_node_name); - if (existing) { - AltosPreferencesBackend node = backend.node(common_frequencies_node_name); - int count = node.getInt(frequency_count, 0); + frequencies = (AltosFrequency[]) backend.getSerializable(frequenciesPreference, null); + + if (frequencies == null) { + if (backend.nodeExists(common_frequencies_node_name)) { + 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; + 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); + } } - } else { + } + + if (frequencies == null) { frequencies = new AltosFrequency[10]; for (int i = 0; i < 10; i++) { frequencies[i] = new AltosFrequency(434.550 + i * .1, @@ -156,15 +165,6 @@ public class AltosPreferences { return frequencies; } - public static void save_common_frequencies(AltosFrequency[] frequencies) { - AltosPreferencesBackend node = backend.node(common_frequencies_node_name); - - node.putInt(frequency_count, frequencies.length); - for (int i = 0; i < frequencies.length; i++) { - node.putDouble(String.format(frequency_format, i), frequencies[i].frequency); - node.putString(String.format(description_format, i), frequencies[i].description); - } - } public static int launcher_serial; public static int launcher_channel; @@ -221,6 +221,7 @@ public class AltosPreferences { map_cache = backend.getInt(mapCachePreference, 9); map_cache_listeners = new LinkedList<AltosMapCacheListener>(); + map_type = backend.getInt(mapTypePreference, AltosMap.maptype_hybrid); } public static void flush_preferences() { @@ -349,24 +350,12 @@ public class AltosPreferences { } } - public static void set_state(int serial, AltosState state, AltosListenerState listener_state) { - - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - - try { - ObjectOutputStream oos = new ObjectOutputStream(baos); + public static void set_state(AltosState state) { - AltosSavedState saved_state = new AltosSavedState(state, listener_state); - oos.writeObject(saved_state); - - byte[] bytes = baos.toByteArray(); - - synchronized(backend) { - backend.putBytes(String.format(statePreferenceFormat, serial), bytes); - backend.putInt(statePreferenceLatest, serial); - flush_preferences(); - } - } catch (IOException ie) { + synchronized(backend) { + backend.putSerializable(String.format(statePreferenceFormat, state.serial), state); + backend.putInt(statePreferenceLatest, state.serial); + flush_preferences(); } } @@ -400,26 +389,14 @@ public class AltosPreferences { return latest; } - public static AltosSavedState state(int serial) { - byte[] bytes = null; - + public static AltosState state(int serial) { synchronized(backend) { - bytes = backend.getBytes(String.format(statePreferenceFormat, serial), null); - } - - if (bytes == null) - return null; - - ByteArrayInputStream bais = new ByteArrayInputStream(bytes); - - try { - ObjectInputStream ois = new ObjectInputStream(bais); - AltosSavedState saved_state = (AltosSavedState) ois.readObject(); - return saved_state; - } catch (IOException ie) { - } catch (ClassNotFoundException ce) { + try { + return (AltosState) backend.getSerializable(String.format(statePreferenceFormat, serial), null); + } catch (Exception e) { + return null; + } } - return null; } public static void set_scanning_telemetry(int new_scanning_telemetry) { @@ -535,7 +512,7 @@ public class AltosPreferences { public static void set_common_frequencies(AltosFrequency[] frequencies) { synchronized(backend) { common_frequencies = frequencies; - save_common_frequencies(frequencies); + backend.putSerializable(frequenciesPreference, frequencies); flush_preferences(); } } @@ -621,4 +598,39 @@ public class AltosPreferences { return map_cache; } } + + static LinkedList<AltosMapTypeListener> map_type_listeners; + + public static void set_map_type(int map_type) { + synchronized(backend) { + AltosPreferences.map_type = map_type; + backend.putInt(mapTypePreference, map_type); + flush_preferences(); + } + if (map_type_listeners != null) { + for (AltosMapTypeListener l : map_type_listeners) { + l.map_type_changed(map_type); + } + } + } + + public static int map_type() { + synchronized(backend) { + return map_type; + } + } + + public static void register_map_type_listener(AltosMapTypeListener l) { + synchronized(backend) { + if (map_type_listeners == null) + map_type_listeners = new LinkedList<AltosMapTypeListener>(); + map_type_listeners.add(l); + } + } + + public static void unregister_map_type_listener(AltosMapTypeListener l) { + synchronized(backend) { + map_type_listeners.remove(l); + } + } } diff --git a/altoslib/AltosPreferencesBackend.java b/altoslib/AltosPreferencesBackend.java index f43c2ec9..6e1124e2 100644 --- a/altoslib/AltosPreferencesBackend.java +++ b/altoslib/AltosPreferencesBackend.java @@ -15,34 +15,74 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_9; +package org.altusmetrum.altoslib_10; -import java.io.File; +import java.io.*; +import java.util.*; +import java.text.*; -public interface AltosPreferencesBackend { +public abstract class AltosPreferencesBackend { - public String getString(String key, String def); - public void putString(String key, String value); + public abstract String getString(String key, String def); + public abstract void putString(String key, String value); - public int getInt(String key, int def); - public void putInt(String key, int value); + public abstract int getInt(String key, int def); + public abstract void putInt(String key, int value); - public double getDouble(String key, double def); - public void putDouble(String key, double value); + public abstract double getDouble(String key, double def); + public abstract void putDouble(String key, double value); - public boolean getBoolean(String key, boolean def); - public void putBoolean(String key, boolean value); + public abstract boolean getBoolean(String key, boolean def); + public abstract void putBoolean(String key, boolean value); - public byte[] getBytes(String key, byte[] def); - public void putBytes(String key, byte[] value); + public abstract byte[] getBytes(String key, byte[] def); + public abstract void putBytes(String key, byte[] value); - public boolean nodeExists(String key); - public AltosPreferencesBackend node(String key); + public Serializable getSerializable(String key, Serializable def) { + byte[] bytes = null; - public String[] keys(); - public void remove(String key); + bytes = getBytes(key, null); + if (bytes == null) + return def; - public void flush(); + ByteArrayInputStream bais = new ByteArrayInputStream(bytes); - public File homeDirectory(); + 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(); + + try { + ObjectOutputStream oos = new ObjectOutputStream(baos); + + oos.writeObject(object); + byte[] bytes = baos.toByteArray(); + + putBytes(key, bytes); + } catch (IOException ie) { + debug("set_state failed %s\n", ie.toString()); + } + } + + public abstract boolean nodeExists(String key); + public abstract AltosPreferencesBackend node(String key); + + public abstract String[] keys(); + public abstract void remove(String key); + + public abstract void flush(); + + public abstract File homeDirectory(); + + public abstract void debug(String format, Object ... arguments); } diff --git a/altoslib/AltosProgrammer.java b/altoslib/AltosProgrammer.java index 7f9b277d..2f8e3bd0 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; diff --git a/altoslib/AltosPyro.java b/altoslib/AltosPyro.java index 851e35fb..28e65bc2 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_9; +package org.altusmetrum.altoslib_10; import java.util.*; import java.text.*; diff --git a/altoslib/AltosQuaternion.java b/altoslib/AltosQuaternion.java index e96aa7db..bc471c9c 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_9; +package org.altusmetrum.altoslib_10; public class AltosQuaternion { double r; /* real bit */ diff --git a/altoslib/AltosRectangle.java b/altoslib/AltosRectangle.java index 6933198a..4757687d 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_9; +package org.altusmetrum.altoslib_10; public class AltosRectangle { public int x, y, width, height; diff --git a/altoslib/AltosReplayReader.java b/altoslib/AltosReplayReader.java index 5dcb8702..0f77c979 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; import java.util.*; diff --git a/altoslib/AltosRomconfig.java b/altoslib/AltosRomconfig.java index 9c6bb668..af201939 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; diff --git a/altoslib/AltosRotation.java b/altoslib/AltosRotation.java index e3c4dd56..e53a3a49 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_9; +package org.altusmetrum.altoslib_10; public class AltosRotation { private AltosQuaternion rotation; diff --git a/altoslib/AltosSavedState.java b/altoslib/AltosSavedState.java index a5a69c95..3dbf59a5 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; diff --git a/altoslib/AltosSelfFlash.java b/altoslib/AltosSelfFlash.java index 3aa727b3..f996d7b1 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; diff --git a/altoslib/AltosSensorEMini.java b/altoslib/AltosSensorEMini.java index 825cbd5d..884800f8 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_9; +package org.altusmetrum.altoslib_10; import java.util.concurrent.TimeoutException; diff --git a/altoslib/AltosSensorMM.java b/altoslib/AltosSensorMM.java index c0a92a18..99eca9d8 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_9; +package org.altusmetrum.altoslib_10; import java.util.concurrent.TimeoutException; diff --git a/altoslib/AltosSensorMega.java b/altoslib/AltosSensorMega.java index f38d7b44..a4224311 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_9; +package org.altusmetrum.altoslib_10; import java.util.concurrent.TimeoutException; diff --git a/altoslib/AltosSensorMetrum.java b/altoslib/AltosSensorMetrum.java index fbc10fdd..1b09647f 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_9; +package org.altusmetrum.altoslib_10; import java.util.concurrent.TimeoutException; diff --git a/altoslib/AltosSensorTGPS.java b/altoslib/AltosSensorTGPS.java index a2d22e9a..9f572eca 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_9; +package org.altusmetrum.altoslib_10; import java.util.concurrent.TimeoutException; diff --git a/altoslib/AltosSensorTM.java b/altoslib/AltosSensorTM.java index e0449568..bb842b52 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_9; +package org.altusmetrum.altoslib_10; import java.util.concurrent.TimeoutException; diff --git a/altoslib/AltosSensorTMini.java b/altoslib/AltosSensorTMini.java index 74ecacd6..9e01b50c 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_9; +package org.altusmetrum.altoslib_10; import java.util.concurrent.TimeoutException; diff --git a/altoslib/AltosSpeed.java b/altoslib/AltosSpeed.java index 45bd4c6a..e09bbb7a 100644 --- a/altoslib/AltosSpeed.java +++ b/altoslib/AltosSpeed.java @@ -15,35 +15,35 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_9; +package org.altusmetrum.altoslib_10; public class AltosSpeed extends AltosUnits { public double value(double v, boolean imperial_units) { if (imperial_units) - return AltosConvert.meters_to_mph(v); + return AltosConvert.mps_to_fps(v); return v; } public double inverse(double v, boolean imperial_units) { if (imperial_units) - return AltosConvert.mph_to_meters(v); + return AltosConvert.fps_to_mps(v); return v; } public String show_units(boolean imperial_units) { if (imperial_units) - return "mph"; + return "fps"; return "m/s"; } public String say_units(boolean imperial_units) { if (imperial_units) - return "miles per hour"; + return "feet per second"; return "meters per second"; } public int show_fraction(int width, boolean imperial_units) { return width / 9; } -}
\ No newline at end of file +} diff --git a/altoslib/AltosState.java b/altoslib/AltosState.java index 523f5a70..7b41e98d 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; diff --git a/altoslib/AltosStateIterable.java b/altoslib/AltosStateIterable.java index 13b8f4ca..a7baa85e 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; import java.util.*; diff --git a/altoslib/AltosStateUpdate.java b/altoslib/AltosStateUpdate.java index 68212846..12d4dd41 100644 --- a/altoslib/AltosStateUpdate.java +++ b/altoslib/AltosStateUpdate.java @@ -15,8 +15,8 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_9; +package org.altusmetrum.altoslib_10; public interface AltosStateUpdate { - public void update_state(AltosState state) throws InterruptedException; -}
\ No newline at end of file + public void update_state(AltosState state) throws InterruptedException, AltosUnknownProduct; +} diff --git a/altoslib/AltosTelemetry.java b/altoslib/AltosTelemetry.java index 0ba9849a..67caa60c 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_9; +package org.altusmetrum.altoslib_10; import java.text.*; diff --git a/altoslib/AltosTelemetryCompanion.java b/altoslib/AltosTelemetryCompanion.java index c47f9486..b9d32f48 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_9; +package org.altusmetrum.altoslib_10; public class AltosTelemetryCompanion extends AltosTelemetryStandard { AltosCompanion companion; diff --git a/altoslib/AltosTelemetryConfiguration.java b/altoslib/AltosTelemetryConfiguration.java index 20381a53..cd2cb8ca 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_9; +package org.altusmetrum.altoslib_10; public class AltosTelemetryConfiguration extends AltosTelemetryStandard { diff --git a/altoslib/AltosTelemetryFile.java b/altoslib/AltosTelemetryFile.java index a762f615..b80c2dc9 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; import java.util.*; diff --git a/altoslib/AltosTelemetryIterable.java b/altoslib/AltosTelemetryIterable.java index b29881e8..ff395868 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_9; +package org.altusmetrum.altoslib_10; import java.io.*; import java.util.*; diff --git a/altoslib/AltosTelemetryLegacy.java b/altoslib/AltosTelemetryLegacy.java index b3071a4b..6c0fcfeb 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_9; +package org.altusmetrum.altoslib_10; import java.text.*; diff --git a/altoslib/AltosTelemetryLocation.java b/altoslib/AltosTelemetryLocation.java index 6fbed4bc..33c36449 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_9; +package org.altusmetrum.altoslib_10; public class AltosTelemetryLocation extends AltosTelemetryStandard { diff --git a/altoslib/AltosTelemetryMap.java b/altoslib/AltosTelemetryMap.java index 5aa0c41d..13b5dbea 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_9; +package org.altusmetrum.altoslib_10; import java.text.*; import java.util.HashMap; diff --git a/altoslib/AltosTelemetryMegaData.java b/altoslib/AltosTelemetryMegaData.java index 49657051..d71f2802 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_9; +package org.altusmetrum.altoslib_10; public class AltosTelemetryMegaData extends AltosTelemetryStandard { int state; diff --git a/altoslib/AltosTelemetryMegaSensor.java b/altoslib/AltosTelemetryMegaSensor.java index 2f6256fc..f0d16f19 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_9; +package org.altusmetrum.altoslib_10; public class AltosTelemetryMegaSensor extends AltosTelemetryStandard { int accel; diff --git a/altoslib/AltosTelemetryMetrumData.java b/altoslib/AltosTelemetryMetrumData.java index 4fbb9b86..a4e9116f 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_9; +package org.altusmetrum.altoslib_10; public class AltosTelemetryMetrumData extends AltosTelemetryStandard { diff --git a/altoslib/AltosTelemetryMetrumSensor.java b/altoslib/AltosTelemetryMetrumSensor.java index 3769c129..1b405f2b 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_9; +package org.altusmetrum.altoslib_10; public class AltosTelemetryMetrumSensor extends AltosTelemetryStandard { diff --git a/altoslib/AltosTelemetryMini.java b/altoslib/AltosTelemetryMini.java index 173fac42..8996d662 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_9; +package org.altusmetrum.altoslib_10; public class AltosTelemetryMini extends AltosTelemetryStandard { diff --git a/altoslib/AltosTelemetryRaw.java b/altoslib/AltosTelemetryRaw.java index 7fa12f5e..8cf023a4 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_9; +package org.altusmetrum.altoslib_10; public class AltosTelemetryRaw extends AltosTelemetryStandard { public AltosTelemetryRaw(int[] bytes) { diff --git a/altoslib/AltosTelemetryReader.java b/altoslib/AltosTelemetryReader.java index 2d76f281..2b0a443c 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_9; +package org.altusmetrum.altoslib_10; import java.text.*; import java.io.*; diff --git a/altoslib/AltosTelemetrySatellite.java b/altoslib/AltosTelemetrySatellite.java index a3a8abfa..de60e63c 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_9; +package org.altusmetrum.altoslib_10; public class AltosTelemetrySatellite extends AltosTelemetryStandard { int channels; diff --git a/altoslib/AltosTelemetrySensor.java b/altoslib/AltosTelemetrySensor.java index 578ac2da..74b61d3c 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_9; +package org.altusmetrum.altoslib_10; public class AltosTelemetrySensor extends AltosTelemetryStandard { diff --git a/altoslib/AltosTelemetryStandard.java b/altoslib/AltosTelemetryStandard.java index 5a147b2b..7086abfc 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_9; +package org.altusmetrum.altoslib_10; public abstract class AltosTelemetryStandard extends AltosTelemetry { int[] bytes; diff --git a/altoslib/AltosTemperature.java b/altoslib/AltosTemperature.java index 19e3393d..a1e485b3 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_9; +package org.altusmetrum.altoslib_10; public class AltosTemperature extends AltosUnits { diff --git a/altoslib/AltosUnits.java b/altoslib/AltosUnits.java index c211eb6d..13b9dbe6 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_9; +package org.altusmetrum.altoslib_10; import java.text.*; diff --git a/altoslib/AltosUnitsListener.java b/altoslib/AltosUnitsListener.java index f71c4270..bb8451b7 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_9; +package org.altusmetrum.altoslib_10; public interface AltosUnitsListener { public void units_changed(boolean imperial_units); diff --git a/altoslib/AltosUnknownProduct.java b/altoslib/AltosUnknownProduct.java new file mode 100644 index 00000000..ff536f57 --- /dev/null +++ b/altoslib/AltosUnknownProduct.java @@ -0,0 +1,26 @@ +/* + * Copyright © 2010 Keith Packard <keithp@keithp.com> + * + * 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; + +public class AltosUnknownProduct extends Exception { + public String product; + + public AltosUnknownProduct (String in_product) { + product = in_product; + } +} diff --git a/altoslib/AltosVersion.java.in b/altoslib/AltosVersion.java.in index 8c53ef0d..9ac94dcd 100644 --- a/altoslib/AltosVersion.java.in +++ b/altoslib/AltosVersion.java.in @@ -15,12 +15,12 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_9; +package org.altusmetrum.altoslib_10; public class AltosVersion { public final static String version = "@VERSION@"; - public final static String google_maps_api_key = @GOOGLEKEY@; + public final static String google_maps_api_key = "@GOOGLEKEY@"; public static boolean has_google_maps_api_key() { return google_maps_api_key != null && google_maps_api_key.length() > 1; diff --git a/altoslib/AltosVoltage.java b/altoslib/AltosVoltage.java index 34f4620e..1738dd86 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_9; +package org.altusmetrum.altoslib_10; public class AltosVoltage extends AltosUnits { diff --git a/altoslib/AltosWriter.java b/altoslib/AltosWriter.java index b5cc34f0..02b5d669 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_9; +package org.altusmetrum.altoslib_10; public interface AltosWriter { diff --git a/altoslib/Makefile.am b/altoslib/Makefile.am index d1f8f265..dc9da8fd 100644 --- a/altoslib/Makefile.am +++ b/altoslib/Makefile.am @@ -39,7 +39,7 @@ altoslib_JAVA = \ AltosEepromDownload.java \ AltosEepromFile.java \ AltosEepromTM.java \ - AltosEepromTm.java \ + AltosEepromTMini.java \ AltosEepromHeader.java \ AltosEepromIterable.java \ AltosEepromList.java \ @@ -113,6 +113,7 @@ altoslib_JAVA = \ AltosTelemetrySatellite.java \ AltosTelemetryStandard.java \ AltosUnitsListener.java \ + AltosUnknownProduct.java \ AltosMs5607.java \ AltosIMU.java \ AltosMag.java \ @@ -157,6 +158,7 @@ altoslib_JAVA = \ AltosLaunchSites.java \ AltosMapLoaderListener.java \ AltosMapLoader.java \ + AltosMapTypeListener.java \ AltosVersion.java JAR=altoslib_$(ALTOSLIB_VERSION).jar |