summaryrefslogtreecommitdiff
path: root/telegps
diff options
context:
space:
mode:
Diffstat (limited to 'telegps')
-rw-r--r--telegps/Makefile.am3
-rw-r--r--telegps/TeleGPS.java62
-rw-r--r--telegps/TeleGPSConfig.java4
-rw-r--r--telegps/TeleGPSConfigUI.java182
-rw-r--r--telegps/TeleGPSDisplayThread.java18
-rw-r--r--telegps/TeleGPSGraphUI.java72
-rw-r--r--telegps/TeleGPSInfo.java4
-rw-r--r--telegps/TeleGPSPreferences.java2
-rw-r--r--telegps/TeleGPSState.java14
-rw-r--r--telegps/TeleGPSStatus.java33
-rw-r--r--telegps/TeleGPSStatusUpdate.java2
-rw-r--r--telegps/telegps-windows.nsi.in2
12 files changed, 231 insertions, 167 deletions
diff --git a/telegps/Makefile.am b/telegps/Makefile.am
index 3484b951..bd69bd50 100644
--- a/telegps/Makefile.am
+++ b/telegps/Makefile.am
@@ -108,7 +108,8 @@ FIRMWARE_TD=$(FIRMWARE_TD_0_2) $(FIRMWARE_TD_3_0)
FIRMWARE_TBT_1_0=$(top_srcdir)/src/telebt-v1.0/telebt-v1.0-$(VERSION).ihx
FIRMWARE_TBT_3_0=$(top_srcdir)/src/telebt-v3.0/telebt-v3.0-$(VERSION).ihx
-FIRMWARE_TBT=$(FIRMWARE_TBT_1_0) $(FIRMWARE_TBT_3_0)
+FIRMWARE_TBT_4_0=$(top_srcdir)/src/telebt-v4.0/telebt-v4.0-$(VERSION).ihx
+FIRMWARE_TBT=$(FIRMWARE_TBT_1_0) $(FIRMWARE_TBT_3_0) $(FIRMWARE_TBT_4_0)
FIRMWARE_TG_1_0=$(top_srcdir)/src/telegps-v1.0/telegps-v1.0-$(VERSION).ihx
FIRMWARE_TG=$(FIRMWARE_TG_1_0)
diff --git a/telegps/TeleGPS.java b/telegps/TeleGPS.java
index 66eaaa2b..3646f000 100644
--- a/telegps/TeleGPS.java
+++ b/telegps/TeleGPS.java
@@ -25,8 +25,8 @@ import java.io.*;
import java.util.concurrent.*;
import java.util.*;
import java.text.*;
-import org.altusmetrum.altoslib_11.*;
-import org.altusmetrum.altosuilib_11.*;
+import org.altusmetrum.altoslib_12.*;
+import org.altusmetrum.altosuilib_12.*;
public class TeleGPS
extends AltosUIFrame
@@ -152,7 +152,7 @@ public class TeleGPS
status_update.saved_listener_state = listener_state;
if (state == null)
- state = new AltosState();
+ state = new AltosState(new AltosCalData());
int i = 0;
for (AltosFlightDisplay display : displays) {
@@ -287,23 +287,30 @@ public class TeleGPS
new TeleGPSConfig(this);
}
+ private static AltosFlightSeries make_series(AltosRecordSet set) {
+ AltosFlightSeries series = new AltosFlightSeries(set.cal_data());
+ set.capture_series(series);
+ series.finish();
+ return series;
+ }
+
void export() {
- AltosDataChooser chooser;
- chooser = new AltosDataChooser(this);
- AltosStateIterable states = chooser.runDialog();
- if (states == null)
+ AltosDataChooser chooser = new AltosDataChooser(this);
+
+ AltosRecordSet set = chooser.runDialog();
+ if (set == null)
return;
- new AltosCSVUI(this, states, chooser.file());
+ AltosFlightSeries series = make_series(set);
+ new AltosCSVUI(this, series, chooser.file());
}
void graph() {
- AltosDataChooser chooser;
- chooser = new AltosDataChooser(this);
- AltosStateIterable states = chooser.runDialog();
- if (states == null)
+ AltosDataChooser chooser = new AltosDataChooser(this);
+ AltosRecordSet set = chooser.runDialog();
+ if (set == null)
return;
try {
- new TeleGPSGraphUI(states, chooser.file());
+ new TeleGPSGraphUI(set, chooser.file());
} catch (InterruptedException ie) {
} catch (IOException ie) {
}
@@ -612,33 +619,28 @@ public class TeleGPS
connect(device);
}
- static AltosStateIterable record_iterable(File file) {
- FileInputStream in;
+ static AltosRecordSet record_set(File file) {
try {
- in = new FileInputStream(file);
- } catch (Exception e) {
- System.out.printf("Failed to open file '%s'\n", file);
- return null;
- }
- if (file.getName().endsWith("telem"))
- return new AltosTelemetryFile(in);
- else
- return new AltosEepromFile(in);
+ return AltosLib.record_set(file);
+ } catch (IOException ie) {
+ System.out.printf("%s\n", ie.getMessage());
+ }
+ return null;
}
static AltosReplayReader replay_file(File file) {
- AltosStateIterable states = record_iterable(file);
- if (states == null)
+ AltosRecordSet set = record_set(file);
+ if (set == null)
return null;
- return new AltosReplayReader(states.iterator(), file);
+ return new AltosReplayReader(set, file);
}
static boolean process_graph(File file) {
- AltosStateIterable states = record_iterable(file);
- if (states == null)
+ AltosRecordSet set = record_set(file);
+ if (set == null)
return false;
try {
- new TeleGPSGraphUI(states, file);
+ new TeleGPSGraphUI(set, file);
} catch (Exception e) {
return false;
}
diff --git a/telegps/TeleGPSConfig.java b/telegps/TeleGPSConfig.java
index d24e7471..7fc15ba9 100644
--- a/telegps/TeleGPSConfig.java
+++ b/telegps/TeleGPSConfig.java
@@ -23,8 +23,8 @@ import javax.swing.*;
import java.io.*;
import java.util.concurrent.*;
import java.text.*;
-import org.altusmetrum.altoslib_11.*;
-import org.altusmetrum.altosuilib_11.*;
+import org.altusmetrum.altoslib_12.*;
+import org.altusmetrum.altosuilib_12.*;
public class TeleGPSConfig implements ActionListener {
diff --git a/telegps/TeleGPSConfigUI.java b/telegps/TeleGPSConfigUI.java
index dd3965b4..88ced192 100644
--- a/telegps/TeleGPSConfigUI.java
+++ b/telegps/TeleGPSConfigUI.java
@@ -23,8 +23,8 @@ import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
-import org.altusmetrum.altoslib_11.*;
-import org.altusmetrum.altosuilib_11.*;
+import org.altusmetrum.altoslib_12.*;
+import org.altusmetrum.altosuilib_12.*;
public class TeleGPSConfigUI
extends AltosUIDialog
@@ -131,7 +131,7 @@ public class TeleGPSConfigUI
}
public double pyro_firing_time() {
- return -1;
+ return AltosLib.MISSING;
}
boolean is_telemetrum() {
@@ -140,46 +140,46 @@ public class TeleGPSConfigUI
}
void set_radio_enable_tool_tip() {
- if (radio_enable_value.isEnabled())
+ if (radio_enable_value.isVisible())
radio_enable_value.setToolTipText("Enable/Disable telemetry and RDF transmissions");
else
radio_enable_value.setToolTipText("Firmware version does not support disabling radio");
}
void set_rate_tool_tip() {
- if (rate_value.isEnabled())
+ if (rate_value.isVisible())
rate_value.setToolTipText("Select telemetry baud rate");
else
rate_value.setToolTipText("Firmware version does not support variable telemetry rates");
}
void set_aprs_interval_tool_tip() {
- if (aprs_interval_value.isEnabled())
+ if (aprs_interval_value.isVisible())
aprs_interval_value.setToolTipText("Enable APRS and set the interval between APRS reports");
else
aprs_interval_value.setToolTipText("Hardware doesn't support APRS");
}
void set_aprs_ssid_tool_tip() {
- if (aprs_ssid_value.isEnabled())
+ if (aprs_ssid_value.isVisible())
aprs_ssid_value.setToolTipText("Set the APRS SSID (secondary station identifier)");
- else if (aprs_ssid_value.isEnabled())
+ else if (aprs_ssid_value.isVisible())
aprs_ssid_value.setToolTipText("Software version doesn't support setting the APRS SSID");
else
aprs_ssid_value.setToolTipText("Hardware doesn't support APRS");
}
void set_aprs_format_tool_tip() {
- if (aprs_format_value.isEnabled())
+ if (aprs_format_value.isVisible())
aprs_format_value.setToolTipText("Set the APRS format (compressed/uncompressed)");
- else if (aprs_format_value.isEnabled())
+ else if (aprs_format_value.isVisible())
aprs_format_value.setToolTipText("Software version doesn't support setting the APRS format");
else
aprs_format_value.setToolTipText("Hardware doesn't support APRS");
}
void set_flight_log_max_tool_tip() {
- if (flight_log_max_value.isEnabled())
+ if (flight_log_max_value.isVisible())
flight_log_max_value.setToolTipText("Size reserved for each flight log (in kB)");
else
flight_log_max_value.setToolTipText("Cannot set max value with flight logs in memory");
@@ -675,7 +675,7 @@ public class TeleGPSConfigUI
public void units_changed(boolean imperial_units) {
boolean was_dirty = dirty;
- if (tracker_motion_value.isEnabled()) {
+ if (tracker_motion_value.isVisible()) {
String motion = tracker_motion_value.getSelectedItem().toString();
tracker_motion_label.setText(get_tracker_motion_label());
set_tracker_motion_values();
@@ -712,21 +712,24 @@ public class TeleGPSConfigUI
}
public int main_deploy() {
- return -1;
+ return AltosLib.MISSING;
}
public void set_apogee_delay(int new_apogee_delay) { }
public int apogee_delay() {
- return -1;
+ return AltosLib.MISSING;
}
public void set_apogee_lockout(int new_apogee_lockout) { }
- public int apogee_lockout() { return -1; }
+ public int apogee_lockout() { return AltosLib.MISSING; }
public void set_radio_frequency(double new_radio_frequency) {
- radio_frequency_value.set_frequency(new_radio_frequency);
+ if (new_radio_frequency != AltosLib.MISSING)
+ radio_frequency_value.set_frequency(new_radio_frequency);
+ radio_frequency_label.setVisible(new_radio_frequency != AltosLib.MISSING);
+ radio_frequency_value.setVisible(new_radio_frequency != AltosLib.MISSING);
}
public double radio_frequency() {
@@ -734,45 +737,32 @@ public class TeleGPSConfigUI
}
public void set_radio_calibration(int new_radio_calibration) {
- radio_calibration_value.setVisible(new_radio_calibration >= 0);
- if (new_radio_calibration < 0)
- radio_calibration_value.setText("Disabled");
- else
+ if (new_radio_calibration != AltosLib.MISSING)
radio_calibration_value.setText(String.format("%d", new_radio_calibration));
- }
-
- private int parse_int(String name, String s, boolean split) throws AltosConfigDataException {
- String v = s;
- if (split)
- v = s.split("\\s+")[0];
- try {
- return Integer.parseInt(v);
- } catch (NumberFormatException ne) {
- throw new AltosConfigDataException("Invalid %s \"%s\"", name, s);
- }
+ radio_calibration_value.setVisible(new_radio_calibration == AltosLib.MISSING);
+ radio_calibration_label.setVisible(new_radio_calibration == AltosLib.MISSING);
}
public void set_radio_enable(int new_radio_enable) {
- if (new_radio_enable >= 0) {
- radio_enable_value.setSelected(new_radio_enable > 0);
- radio_enable_value.setEnabled(true);
- } else {
- radio_enable_value.setSelected(true);
- radio_enable_value.setVisible(radio_frequency() > 0);
- radio_enable_value.setEnabled(false);
- }
+ if (new_radio_enable != AltosLib.MISSING)
+ radio_enable_value.setSelected(new_radio_enable != 0);
+ radio_enable_label.setVisible(new_radio_enable != AltosLib.MISSING);
+ radio_enable_value.setVisible(new_radio_enable != AltosLib.MISSING);
set_radio_enable_tool_tip();
}
public int radio_enable() {
- if (radio_enable_value.isEnabled())
+ if (radio_enable_value.isVisible())
return radio_enable_value.isSelected() ? 1 : 0;
else
- return -1;
+ return AltosLib.MISSING;
}
public void set_telemetry_rate(int new_rate) {
- rate_value.set_rate(new_rate);
+ if (new_rate != AltosLib.MISSING)
+ rate_value.set_rate(new_rate);
+ rate_label.setVisible(new_rate != AltosLib.MISSING);
+ rate_value.setVisible(new_rate != AltosLib.MISSING);
}
public int telemetry_rate() {
@@ -780,12 +770,27 @@ public class TeleGPSConfigUI
}
public void set_callsign(String new_callsign) {
+ if (new_callsign != null)
+ callsign_value.setText(new_callsign);
callsign_value.setVisible(new_callsign != null);
- callsign_value.setText(new_callsign);
+ callsign_label.setVisible(new_callsign != null);
}
public String callsign() {
- return callsign_value.getText();
+ if (callsign_value.isVisible())
+ return callsign_value.getText();
+ return null;
+ }
+
+ private int parse_int(String name, String s, boolean split) throws AltosConfigDataException {
+ String v = s;
+ if (split)
+ v = s.split("\\s+")[0];
+ try {
+ return Integer.parseInt(v);
+ } catch (NumberFormatException ne) {
+ throw new AltosConfigDataException("Invalid %s \"%s\"", name, s);
+ }
}
int flight_log_max_limit;
@@ -828,15 +833,15 @@ public class TeleGPSConfigUI
}
public void set_ignite_mode(int new_ignite_mode) { }
- public int ignite_mode() { return -1; }
+ public int ignite_mode() { return AltosLib.MISSING; }
public void set_pad_orientation(int new_pad_orientation) { }
- public int pad_orientation() { return -1; }
+ public int pad_orientation() { return AltosLib.MISSING; }
public void set_beep(int new_beep) { }
- public int beep() { return -1; }
+ public int beep() { return AltosLib.MISSING; }
String[] tracker_motion_values() {
if (AltosConvert.imperial_units)
@@ -859,87 +864,92 @@ public class TeleGPSConfigUI
}
void set_tracker_tool_tip() {
- if (tracker_motion_value.isEnabled())
+ if (tracker_motion_value.isVisible())
tracker_motion_value.setToolTipText("How far the device must move before logging");
else
tracker_motion_value.setToolTipText("This device doesn't disable logging when stationary");
- if (tracker_interval_value.isEnabled())
+ if (tracker_interval_value.isVisible())
tracker_interval_value.setToolTipText("How often to report GPS position");
else
tracker_interval_value.setToolTipText("This device can't configure interval");
}
public void set_tracker_motion(int tracker_motion) {
- if (tracker_motion < 0) {
- tracker_motion_value.setEnabled(false);
- } else {
- tracker_motion_value.setEnabled(true);
+ if (tracker_motion != AltosLib.MISSING)
tracker_motion_value.setSelectedItem(AltosConvert.height.say(tracker_motion));
- }
+ tracker_motion_label.setVisible(tracker_motion != AltosLib.MISSING);
+ tracker_motion_value.setVisible(tracker_motion != AltosLib.MISSING);
}
public int tracker_motion() throws AltosConfigDataException {
- String str = tracker_motion_value.getSelectedItem().toString();
- try {
- return (int) (AltosConvert.height.parse_locale(str) + 0.5);
- } catch (ParseException pe) {
- throw new AltosConfigDataException("invalid tracker motion %s", str);
+ if (tracker_motion_value.isVisible()) {
+ String str = tracker_motion_value.getSelectedItem().toString();
+ try {
+ return (int) (AltosConvert.height.parse_locale(str) + 0.5);
+ } catch (ParseException pe) {
+ throw new AltosConfigDataException("invalid tracker motion %s", str);
+ }
}
+ return AltosLib.MISSING;
}
public void set_tracker_interval(int tracker_interval) {
- if (tracker_interval< 0) {
- tracker_interval_value.setEnabled(false);
- } else {
- tracker_interval_value.setEnabled(true);
+ if (tracker_interval != AltosLib.MISSING)
tracker_interval_value.setSelectedItem(String.format("%d", tracker_interval));
- }
+ tracker_interval_label.setVisible(tracker_interval != AltosLib.MISSING);
+ tracker_interval_value.setVisible(tracker_interval != AltosLib.MISSING);
}
public int tracker_interval() throws AltosConfigDataException {
- return parse_int ("tracker interval", tracker_interval_value.getSelectedItem().toString(), false);
+ if (tracker_interval_value.isVisible())
+ return parse_int ("tracker interval", tracker_interval_value.getSelectedItem().toString(), false);
+ return AltosLib.MISSING;
}
public void set_aprs_interval(int new_aprs_interval) {
- String s;
-
- if (new_aprs_interval <= 0)
- s = "Disabled";
- else
- s = Integer.toString(new_aprs_interval);
- aprs_interval_value.setSelectedItem(s);
- aprs_interval_value.setVisible(new_aprs_interval >= 0);
+ if (new_aprs_interval != AltosLib.MISSING)
+ aprs_interval_value.setSelectedItem(Integer.toString(new_aprs_interval));
+ aprs_interval_value.setVisible(new_aprs_interval != AltosLib.MISSING);
+ aprs_interval_label.setVisible(new_aprs_interval != AltosLib.MISSING);
set_aprs_interval_tool_tip();
}
public int aprs_interval() throws AltosConfigDataException {
- String s = aprs_interval_value.getSelectedItem().toString();
+ if (aprs_interval_value.isVisible()) {
+ String s = aprs_interval_value.getSelectedItem().toString();
- if (s.equals("Disabled"))
- return 0;
- return parse_int("aprs interval", s, false);
+ return parse_int("aprs interval", s, false);
+ }
+ return AltosLib.MISSING;
}
public void set_aprs_ssid(int new_aprs_ssid) {
- aprs_ssid_value.setSelectedItem(Math.max(0,new_aprs_ssid));
- aprs_ssid_value.setVisible(new_aprs_ssid >= 0);
+ if (new_aprs_ssid != AltosLib.MISSING)
+ aprs_ssid_value.setSelectedItem(new_aprs_ssid);
+ aprs_ssid_value.setVisible(new_aprs_ssid != AltosLib.MISSING);
+ aprs_ssid_label.setVisible(new_aprs_ssid != AltosLib.MISSING);
set_aprs_ssid_tool_tip();
}
public int aprs_ssid() throws AltosConfigDataException {
- Integer i = (Integer) aprs_ssid_value.getSelectedItem();
- return i;
+ if (aprs_ssid_value.isVisible()) {
+ Integer i = (Integer) aprs_ssid_value.getSelectedItem();
+ return i;
+ }
+ return AltosLib.MISSING;
}
public void set_aprs_format(int new_aprs_format) {
- aprs_format_value.setVisible(new_aprs_format >= 0);
- aprs_format_label.setVisible(new_aprs_format >= 0);
-
- aprs_format_value.setSelectedIndex(Math.max(0,new_aprs_format));
+ if (new_aprs_format != AltosLib.MISSING)
+ aprs_format_value.setSelectedIndex(new_aprs_format);
+ aprs_format_value.setVisible(new_aprs_format != AltosLib.MISSING);
+ aprs_format_label.setVisible(new_aprs_format != AltosLib.MISSING);
set_aprs_format_tool_tip();
}
public int aprs_format() throws AltosConfigDataException {
- return aprs_format_value.getSelectedIndex();
+ if (aprs_format_value.isVisible())
+ return aprs_format_value.getSelectedIndex();
+ return AltosLib.MISSING;
}
}
diff --git a/telegps/TeleGPSDisplayThread.java b/telegps/TeleGPSDisplayThread.java
index a9c80dc0..fdf0e201 100644
--- a/telegps/TeleGPSDisplayThread.java
+++ b/telegps/TeleGPSDisplayThread.java
@@ -22,8 +22,8 @@ import java.awt.*;
import javax.swing.*;
import java.io.*;
import java.text.*;
-import org.altusmetrum.altoslib_11.*;
-import org.altusmetrum.altosuilib_11.*;
+import org.altusmetrum.altoslib_12.*;
+import org.altusmetrum.altosuilib_12.*;
public class TeleGPSDisplayThread extends Thread {
@@ -31,7 +31,9 @@ public class TeleGPSDisplayThread extends Thread {
IdleThread idle_thread;
AltosVoice voice;
AltosFlightReader reader;
- AltosState old_state, state;
+ AltosState state;
+ int old_state = AltosLib.ao_flight_invalid;
+ boolean old_gps_ready = false;
AltosListenerState listener_state;
AltosFlightDisplay display;
@@ -130,11 +132,12 @@ public class TeleGPSDisplayThread extends Thread {
}
public synchronized void notice(boolean spoken) {
- if (old_state != null && old_state.state() != state.state()) {
+ if (old_state != state.state()) {
report_time = now();
this.notify();
} else if (spoken)
set_report_time();
+ old_state = state.state();
}
public IdleThread() {
@@ -144,17 +147,17 @@ public class TeleGPSDisplayThread extends Thread {
synchronized boolean tell() {
boolean ret = false;
- if (old_state == null || old_state.gps_ready != state.gps_ready) {
+ if (old_gps_ready != state.gps_ready) {
if (state.gps_ready) {
voice.speak("GPS ready");
ret = true;
}
- else if (old_state != null) {
+ else if (old_gps_ready) {
voice.speak("GPS lost");
ret = true;
}
+ old_gps_ready = state.gps_ready;
}
- old_state = state;
return ret;
}
@@ -173,7 +176,6 @@ public class TeleGPSDisplayThread extends Thread {
listener_state.running = false;
break;
}
- reader.update(state);
show_safely();
told = tell();
idle_thread.notice(told);
diff --git a/telegps/TeleGPSGraphUI.java b/telegps/TeleGPSGraphUI.java
index 55ee370e..9d8c6bf5 100644
--- a/telegps/TeleGPSGraphUI.java
+++ b/telegps/TeleGPSGraphUI.java
@@ -27,14 +27,14 @@ import javax.swing.*;
import java.io.*;
import java.util.concurrent.*;
import java.util.*;
-import org.altusmetrum.altoslib_11.*;
-import org.altusmetrum.altosuilib_11.*;
+import org.altusmetrum.altoslib_12.*;
+import org.altusmetrum.altosuilib_12.*;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.ui.RefineryUtilities;
-public class TeleGPSGraphUI extends AltosUIFrame
+public class TeleGPSGraphUI extends AltosUIFrame implements AltosFontListener, AltosUnitsListener
{
JTabbedPane pane;
AltosGraph graph;
@@ -42,13 +42,33 @@ public class TeleGPSGraphUI extends AltosUIFrame
AltosUIMap map;
AltosState state;
AltosFlightStats stats;
- AltosGraphDataSet graphDataSet;
AltosFlightStatsTable statsTable;
-
- void fill_map(AltosStateIterable states) {
- for (AltosState state : states) {
- if (state.gps != null && state.gps.locked && state.gps.nsat >= 4)
- map.show(state, null);
+ AltosGPS gps;
+ boolean has_gps;
+
+ void fill_map(AltosFlightSeries flight_series) {
+ boolean any_gps = false;
+ AltosGPSTimeValue gtv_last = null;
+
+ if (flight_series.gps_series != null) {
+ for (AltosGPSTimeValue gtv : flight_series.gps_series) {
+ gtv_last = gtv;
+ AltosGPS gps = gtv.gps;
+ if (gps != null &&
+ gps.locked &&
+ gps.nsat >= 4) {
+ if (map == null)
+ map = new AltosUIMap();
+ map.show(gps, (int) flight_series.value_before(AltosFlightSeries.state_name, gtv.time));
+ this.gps = gps;
+ has_gps = true;
+ }
+ }
+ }
+ if (gtv_last != null) {
+ int state = (int) flight_series.value_after(AltosFlightSeries.state_name, gtv_last.time);
+ if (state == AltosLib.ao_flight_landed)
+ map.show(gtv_last.gps, state);
}
}
@@ -58,16 +78,35 @@ public class TeleGPSGraphUI extends AltosUIFrame
TeleGPS.subtract_window();
}
- TeleGPSGraphUI(AltosStateIterable states, File file) throws InterruptedException, IOException {
+ public void font_size_changed(int font_size) {
+ if (map != null)
+ map.font_size_changed(font_size);
+ if (statsTable != null)
+ statsTable.font_size_changed(font_size);
+ }
+
+ public void units_changed(boolean imperial_units) {
+ if (map != null)
+ map.units_changed(imperial_units);
+ if (enable != null)
+ enable.units_changed(imperial_units);
+ }
+
+ TeleGPSGraphUI(AltosRecordSet set, File file) throws InterruptedException, IOException {
super(file.getName());
- state = null;
+ AltosCalData cal_data = set.cal_data();
+
+ AltosUIFlightSeries flight_series = new AltosUIFlightSeries(cal_data);
+ set.capture_series(flight_series);
+ flight_series.finish();
pane = new JTabbedPane();
enable = new AltosUIEnable();
- stats = new AltosFlightStats(states);
- graphDataSet = new AltosGraphDataSet(states);
- graph = new AltosGraph(enable, stats, graphDataSet);
+ stats = new AltosFlightStats(flight_series);
+
+ graph = new AltosGraph(enable, stats, flight_series);
+
statsTable = new AltosFlightStatsTable(stats);
map = new AltosUIMap();
@@ -75,11 +114,14 @@ public class TeleGPSGraphUI extends AltosUIFrame
pane.add("Graph", graph.panel);
pane.add("Configure Graph", enable);
pane.add("Statistics", statsTable);
- fill_map(states);
+ fill_map(flight_series);
pane.add("Map", map);
setContentPane (pane);
+ AltosUIPreferences.register_font_listener(this);
+ AltosPreferences.register_units_listener(this);
+
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
diff --git a/telegps/TeleGPSInfo.java b/telegps/TeleGPSInfo.java
index f4fa7216..383a0a44 100644
--- a/telegps/TeleGPSInfo.java
+++ b/telegps/TeleGPSInfo.java
@@ -22,8 +22,8 @@ import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
-import org.altusmetrum.altoslib_11.*;
-import org.altusmetrum.altosuilib_11.*;
+import org.altusmetrum.altoslib_12.*;
+import org.altusmetrum.altosuilib_12.*;
public class TeleGPSInfo extends AltosUIFlightTab {
diff --git a/telegps/TeleGPSPreferences.java b/telegps/TeleGPSPreferences.java
index 61952326..58b3ae35 100644
--- a/telegps/TeleGPSPreferences.java
+++ b/telegps/TeleGPSPreferences.java
@@ -23,7 +23,7 @@ import java.awt.event.*;
import java.beans.*;
import javax.swing.*;
import javax.swing.event.*;
-import org.altusmetrum.altosuilib_11.*;
+import org.altusmetrum.altosuilib_12.*;
public class TeleGPSPreferences
extends AltosUIConfigure
diff --git a/telegps/TeleGPSState.java b/telegps/TeleGPSState.java
index 9ba0b7a5..21173394 100644
--- a/telegps/TeleGPSState.java
+++ b/telegps/TeleGPSState.java
@@ -22,8 +22,8 @@ import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
-import org.altusmetrum.altoslib_11.*;
-import org.altusmetrum.altosuilib_11.*;
+import org.altusmetrum.altoslib_12.*;
+import org.altusmetrum.altosuilib_12.*;
public class TeleGPSState extends AltosUIFlightTab {
@@ -124,10 +124,11 @@ public class TeleGPSState extends AltosUIFlightTab {
class FirmwareVersion extends AltosUIIndicator {
public void show(AltosState state, AltosListenerState listener_state) {
- if (state.firmware_version == null)
+ AltosCalData cal_data = state.cal_data();
+ if (cal_data.firmware_version == null)
show("Missing");
else
- show(state.firmware_version);
+ show(cal_data.firmware_version);
}
public FirmwareVersion(Container container, int y) {
@@ -137,9 +138,8 @@ public class TeleGPSState extends AltosUIFlightTab {
class FlightLogMax extends AltosUIIndicator {
public void show(AltosState state, AltosListenerState listener_state) {
- int storage = state.flight_log_max;
- if (storage == AltosLib.MISSING)
- storage = state.log_space >> 10;
+ AltosCalData cal_data = state.cal_data();
+ int storage = cal_data.flight_log_max;
if (storage == AltosLib.MISSING)
show("Missing");
else
diff --git a/telegps/TeleGPSStatus.java b/telegps/TeleGPSStatus.java
index 5479f43a..e1be69a4 100644
--- a/telegps/TeleGPSStatus.java
+++ b/telegps/TeleGPSStatus.java
@@ -20,8 +20,8 @@ package org.altusmetrum.telegps;
import java.awt.*;
import javax.swing.*;
-import org.altusmetrum.altoslib_11.*;
-import org.altusmetrum.altosuilib_11.*;
+import org.altusmetrum.altoslib_12.*;
+import org.altusmetrum.altosuilib_12.*;
public class TeleGPSStatus extends JComponent implements AltosFlightDisplay {
GridBagLayout layout;
@@ -75,11 +75,14 @@ public class TeleGPSStatus extends JComponent implements AltosFlightDisplay {
String call;
void show(AltosState state, AltosListenerState listener_state) {
- if (state.callsign != call) {
- value.setText(state.callsign);
- call = state.callsign;
+ AltosCalData cal_data = state.cal_data();
+ if (cal_data == null)
+ System.out.printf("null cal data?\n");
+ if (cal_data.callsign != call) {
+ value.setText(cal_data.callsign);
+ call = cal_data.callsign;
}
- if (state.callsign == null)
+ if (cal_data.callsign == null)
setVisible(false);
else
setVisible(true);
@@ -100,12 +103,13 @@ public class TeleGPSStatus extends JComponent implements AltosFlightDisplay {
class Serial extends Value {
int serial = -1;
void show(AltosState state, AltosListenerState listener_state) {
- if (state.serial != serial) {
- if (state.serial == AltosLib.MISSING)
+ AltosCalData cal_data = state.cal_data();
+ if (cal_data.serial != serial) {
+ if (cal_data.serial == AltosLib.MISSING)
value.setText("none");
else
- value.setText(String.format("%d", state.serial));
- serial = state.serial;
+ value.setText(String.format("%d", cal_data.serial));
+ serial = cal_data.serial;
}
}
@@ -126,12 +130,13 @@ public class TeleGPSStatus extends JComponent implements AltosFlightDisplay {
int last_flight = -1;
void show(AltosState state, AltosListenerState listener_state) {
- if (state.flight != last_flight) {
- if (state.flight == AltosLib.MISSING)
+ AltosCalData cal_data = state.cal_data();
+ if (cal_data.flight != last_flight) {
+ if (cal_data.flight == AltosLib.MISSING)
value.setText("none");
else
- value.setText(String.format("%d", state.flight));
- last_flight = state.flight;
+ value.setText(String.format("%d", cal_data.flight));
+ last_flight = cal_data.flight;
}
}
diff --git a/telegps/TeleGPSStatusUpdate.java b/telegps/TeleGPSStatusUpdate.java
index ac37af31..1b66d142 100644
--- a/telegps/TeleGPSStatusUpdate.java
+++ b/telegps/TeleGPSStatusUpdate.java
@@ -19,7 +19,7 @@
package org.altusmetrum.telegps;
import java.awt.event.*;
-import org.altusmetrum.altoslib_11.*;
+import org.altusmetrum.altoslib_12.*;
public class TeleGPSStatusUpdate implements ActionListener {
diff --git a/telegps/telegps-windows.nsi.in b/telegps/telegps-windows.nsi.in
index b0b5d6a6..d0cd969c 100644
--- a/telegps/telegps-windows.nsi.in
+++ b/telegps/telegps-windows.nsi.in
@@ -124,6 +124,8 @@ Section "TeleGPS, TeleDongle and TeleBT Firmware"
File "../src/teledongle-v0.2/teledongle-v0.2-${VERSION}.ihx"
File "../src/teledongle-v3.0/teledongle-v3.0-${VERSION}.ihx"
File "../src/telebt-v1.0/telebt-v1.0-${VERSION}.ihx"
+ File "../src/telebt-v3.0/telebt-v3.0-${VERSION}.ihx"
+ File "../src/telebt-v4.0/telebt-v4.0-${VERSION}.ihx"
SectionEnd