From 9a4c2c7fc6af922d052e23a1b99bf847fbf9b0e9 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Wed, 28 May 2014 20:48:59 -0700 Subject: [PATCH] telegps: Add scan UI Move scan UI bits into altosuilib, allow telegps to not show telemetry format options. Signed-off-by: Keith Packard --- altosui/AltosUI.java | 6 +- altosui/Makefile.am | 2 - {altosui => altosuilib}/AltosScanUI.java | 96 ++++++++++++++---------- altosuilib/AltosUIFrame.java | 3 + altosuilib/Makefile.am | 1 + telegps/TeleGPS.java | 27 ++++--- 6 files changed, 84 insertions(+), 51 deletions(-) rename {altosui => altosuilib}/AltosScanUI.java (85%) diff --git a/altosui/AltosUI.java b/altosui/AltosUI.java index 9df02ec9..ad7964e9 100644 --- a/altosui/AltosUI.java +++ b/altosui/AltosUI.java @@ -74,6 +74,10 @@ public class AltosUI extends AltosUIFrame { } } + public void scan_device_selected(AltosDevice device) { + telemetry_window(device); + } + Container pane; GridBagLayout gridbag; @@ -272,7 +276,7 @@ public class AltosUI extends AltosUIFrame { } void ScanChannels() { - new AltosScanUI(AltosUI.this); + new AltosScanUI(AltosUI.this, true); } void LoadMaps() { diff --git a/altosui/Makefile.am b/altosui/Makefile.am index 6f491d7d..cd6af84b 100644 --- a/altosui/Makefile.am +++ b/altosui/Makefile.am @@ -15,7 +15,6 @@ altosui_JAVA = \ AltosChannelMenu.java \ AltosCompanionInfo.java \ AltosConfig.java \ - AltosConfigFreqUI.java \ AltosConfigUI.java \ AltosConfigPyroUI.java \ AltosConfigureUI.java \ @@ -46,7 +45,6 @@ altosui_JAVA = \ AltosPad.java \ AltosUIPreferencesBackend.java \ AltosRomconfigUI.java \ - AltosScanUI.java \ AltosUI.java \ AltosGraph.java \ AltosGraphDataPoint.java \ diff --git a/altosui/AltosScanUI.java b/altosuilib/AltosScanUI.java similarity index 85% rename from altosui/AltosScanUI.java rename to altosuilib/AltosScanUI.java index 1f1f59ad..b0cde059 100644 --- a/altosui/AltosScanUI.java +++ b/altosuilib/AltosScanUI.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package altosui; +package org.altusmetrum.altosuilib_2; import java.awt.*; import java.awt.event.*; @@ -26,7 +26,6 @@ import java.util.*; import java.text.*; import java.util.concurrent.*; import org.altusmetrum.altoslib_4.*; -import org.altusmetrum.altosuilib_2.*; class AltosScanResult { String callsign; @@ -39,7 +38,7 @@ class AltosScanResult { public String toString() { return String.format("%-9.9s serial %-4d flight %-4d (%s %s)", - callsign, serial, flight, frequency.toShortString(), Altos.telemetry_name(telemetry)); + callsign, serial, flight, frequency.toShortString(), AltosLib.telemetry_name(telemetry)); } public String toShortString() { @@ -125,7 +124,7 @@ public class AltosScanUI extends AltosUIDialog implements ActionListener { - AltosUI owner; + AltosUIFrame owner; AltosDevice device; AltosConfigData config_data; AltosTelemetryReader reader; @@ -140,6 +139,7 @@ public class AltosScanUI AltosScanResults results = new AltosScanResults(); int telemetry; + boolean select_telemetry = false; final static int timeout = 1200; TelemetryHandler handler; @@ -215,7 +215,8 @@ public class AltosScanUI void set_label() { frequency_label.setText(String.format("Frequency: %s", frequencies[frequency_index].toString())); - telemetry_label.setText(String.format("Telemetry: %s", Altos.telemetry_name(telemetry))); + if (select_telemetry) + telemetry_label.setText(String.format("Telemetry: %s", AltosLib.telemetry_name(telemetry))); } void set_telemetry() { @@ -231,16 +232,21 @@ public class AltosScanUI reader.set_monitor(false); Thread.sleep(100); ++frequency_index; - if (frequency_index >= frequencies.length || - !telemetry_boxes[telemetry - Altos.ao_telemetry_min].isSelected()) - { - frequency_index = 0; - do { - ++telemetry; - if (telemetry > Altos.ao_telemetry_max) - telemetry = Altos.ao_telemetry_min; - } while (!telemetry_boxes[telemetry - Altos.ao_telemetry_min].isSelected()); - set_telemetry(); + if (select_telemetry) { + if (frequency_index >= frequencies.length || + !telemetry_boxes[telemetry - AltosLib.ao_telemetry_min].isSelected()) + { + frequency_index = 0; + do { + ++telemetry; + if (telemetry > AltosLib.ao_telemetry_max) + telemetry = AltosLib.ao_telemetry_min; + } while (!telemetry_boxes[telemetry - AltosLib.ao_telemetry_min].isSelected()); + set_telemetry(); + } + } else { + if (frequency_index >= frequencies.length) + frequency_index = 0; } set_frequency(); set_label(); @@ -279,14 +285,14 @@ public class AltosScanUI if (cmd.equals("telemetry")) { int k; int scanning_telemetry = 0; - for (k = Altos.ao_telemetry_min; k <= Altos.ao_telemetry_max; k++) { - int j = k - Altos.ao_telemetry_min; + for (k = AltosLib.ao_telemetry_min; k <= AltosLib.ao_telemetry_max; k++) { + int j = k - AltosLib.ao_telemetry_min; if (telemetry_boxes[j].isSelected()) scanning_telemetry |= (1 << k); } if (scanning_telemetry == 0) { - scanning_telemetry |= (1 << Altos.ao_telemetry_standard); - telemetry_boxes[Altos.ao_telemetry_standard - Altos.ao_telemetry_min].setSelected(true); + scanning_telemetry |= (1 << AltosLib.ao_telemetry_standard); + telemetry_boxes[AltosLib.ao_telemetry_standard - AltosLib.ao_telemetry_min].setSelected(true); } AltosUIPreferences.set_scanning_telemetry(scanning_telemetry); } @@ -300,7 +306,7 @@ public class AltosScanUI reader.set_telemetry(r.telemetry); reader.set_frequency(r.frequency.frequency); reader.save_frequency(); - owner.telemetry_window(device); + owner.scan_device_selected(device); } } } @@ -328,7 +334,7 @@ public class AltosScanUI } private boolean open() { - device = AltosDeviceUIDialog.show(owner, Altos.product_basestation); + device = AltosDeviceUIDialog.show(owner, AltosLib.product_basestation); if (device == null) return false; try { @@ -376,13 +382,15 @@ public class AltosScanUI return false; } - public AltosScanUI(AltosUI in_owner) { + public AltosScanUI(AltosUIFrame in_owner, boolean in_select_telemetry) { owner = in_owner; + select_telemetry = in_select_telemetry; frequencies = AltosUIPreferences.common_frequencies(); frequency_index = 0; - telemetry = Altos.ao_telemetry_min; + + telemetry = AltosLib.ao_telemetry_standard; if (!open()) return; @@ -401,7 +409,13 @@ public class AltosScanUI scanning_label = new JLabel("Scanning:"); frequency_label = new JLabel(""); - telemetry_label = new JLabel(""); + + if (select_telemetry) { + telemetry_label = new JLabel(""); + telemetry = AltosLib.ao_telemetry_min; + } else { + telemetry = AltosLib.ao_telemetry_standard; + } set_label(); @@ -418,22 +432,26 @@ public class AltosScanUI pane.add(scanning_label, c); c.gridy = 1; pane.add(frequency_label, c); - c.gridy = 2; - pane.add(telemetry_label, c); - - int scanning_telemetry = AltosUIPreferences.scanning_telemetry(); - telemetry_boxes = new JCheckBox[Altos.ao_telemetry_max - Altos.ao_telemetry_min + 1]; - for (int k = Altos.ao_telemetry_min; k <= Altos.ao_telemetry_max; k++) { - int j = k - Altos.ao_telemetry_min; - telemetry_boxes[j] = new JCheckBox(AltosLib.telemetry_name(k)); - c.gridy = 3 + j; - pane.add(telemetry_boxes[j], c); - telemetry_boxes[j].setActionCommand("telemetry"); - telemetry_boxes[j].addActionListener(this); - telemetry_boxes[j].setSelected((scanning_telemetry & (1 << k)) != 0); - } - int y_offset = 3 + (Altos.ao_telemetry_max - Altos.ao_telemetry_min + 1); + int y_offset = 3; + + if (select_telemetry) { + c.gridy = 2; + pane.add(telemetry_label, c); + + int scanning_telemetry = AltosUIPreferences.scanning_telemetry(); + telemetry_boxes = new JCheckBox[AltosLib.ao_telemetry_max - AltosLib.ao_telemetry_min + 1]; + for (int k = AltosLib.ao_telemetry_min; k <= AltosLib.ao_telemetry_max; k++) { + int j = k - AltosLib.ao_telemetry_min; + telemetry_boxes[j] = new JCheckBox(AltosLib.telemetry_name(k)); + c.gridy = 3 + j; + pane.add(telemetry_boxes[j], c); + telemetry_boxes[j].setActionCommand("telemetry"); + telemetry_boxes[j].addActionListener(this); + telemetry_boxes[j].setSelected((scanning_telemetry & (1 << k)) != 0); + } + y_offset += (AltosLib.ao_telemetry_max - AltosLib.ao_telemetry_min + 1); + } list = new JList(results) { //Subclass JList to workaround bug 4832765, which can cause the diff --git a/altosuilib/AltosUIFrame.java b/altosuilib/AltosUIFrame.java index ce86ad83..6e62c762 100644 --- a/altosuilib/AltosUIFrame.java +++ b/altosuilib/AltosUIFrame.java @@ -73,6 +73,9 @@ public class AltosUIFrame extends JFrame implements AltosUIListener, AltosPositi super.setLocationByPlatform(lbp); } + public void scan_device_selected(AltosDevice device) { + } + public void setSize() { /* Smash sizes around so that the window comes up in the right shape */ Insets i = getInsets(); diff --git a/altosuilib/Makefile.am b/altosuilib/Makefile.am index abf0d79c..b4c4f79f 100644 --- a/altosuilib/Makefile.am +++ b/altosuilib/Makefile.am @@ -45,6 +45,7 @@ altosuilib_JAVA = \ AltosSerial.java \ AltosSerialInUseException.java \ AltosConfigFreqUI.java \ + AltosScanUI.java \ AltosBTDevice.java \ AltosBTDeviceIterator.java \ AltosBTManage.java \ diff --git a/telegps/TeleGPS.java b/telegps/TeleGPS.java index cceb79b9..34509e4e 100644 --- a/telegps/TeleGPS.java +++ b/telegps/TeleGPS.java @@ -158,11 +158,13 @@ public class TeleGPS extends AltosUIFrame implements AltosFlightDisplay, AltosFo new AltosSiteMapPreload(this); } - void monitor() { - AltosDevice device = AltosDeviceUIDialog.show(this, - AltosLib.product_basestation); - if (device == null) - return; + void disconnect() { + setTitle("TeleGPS"); + stop_display(); + remove_frequency_menu(); + } + + void connect(AltosDevice device) { if (reader != null) disconnect(); try { @@ -198,13 +200,20 @@ public class TeleGPS extends AltosUIFrame implements AltosFlightDisplay, AltosFo } } - void disconnect() { - setTitle("TeleGPS"); - stop_display(); - remove_frequency_menu(); + void monitor() { + AltosDevice device = AltosDeviceUIDialog.show(this, + AltosLib.product_basestation); + if (device == null) + return; + connect(device); + } + + public void scan_device_selected(AltosDevice device) { + connect(device); } void scan() { + new AltosScanUI(this, false); } void download(){ -- 2.30.2