diff options
author | Keith Packard <keithp@keithp.com> | 2014-07-05 00:16:57 -0700 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2014-07-05 00:38:10 -0700 |
commit | f02cc3eec53e9d703837dad55ec2e6625b192588 (patch) | |
tree | 8a6f731ab5f9415642b9de9a1eed5741b8f1ba5b /telegps/TeleGPS.java | |
parent | efb86669b5a74f244e2218f3385db633c36208af (diff) |
telegps: Support variable telemetry rate
Add combo box to monitoring window and device configuration.
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'telegps/TeleGPS.java')
-rw-r--r-- | telegps/TeleGPS.java | 51 |
1 files changed, 50 insertions, 1 deletions
diff --git a/telegps/TeleGPS.java b/telegps/TeleGPS.java index 7e5ff42a..d4b7bacf 100644 --- a/telegps/TeleGPS.java +++ b/telegps/TeleGPS.java @@ -60,6 +60,8 @@ public class TeleGPS JMenu device_menu; AltosUIFreqList frequencies; ActionListener frequency_listener; + AltosUIRateList rates; + ActionListener rate_listener; Container bag; @@ -184,6 +186,7 @@ public class TeleGPS telegps_status.disable_receive(); disable_frequency_menu(); + disable_rate_menu(); } void connect(AltosDevice device) { @@ -364,6 +367,40 @@ public class TeleGPS } + void enable_rate_menu(int serial, final AltosFlightReader reader) { + + if (rate_listener != null) + disable_rate_menu(); + + rate_listener = new ActionListener() { + public void actionPerformed(ActionEvent e) { + int rate = rates.rate(); + try { + System.out.printf("set rate %d\n", rate); + reader.set_telemetry_rate(rate); + } catch (TimeoutException te) { + } catch (InterruptedException ie) { + } + reader.save_telemetry_rate(); + } + }; + + rates.addActionListener(rate_listener); + rates.set_product("Monitor"); + rates.set_serial(serial); + rates.set_rate(AltosUIPreferences.telemetry_rate(serial)); + rates.setEnabled(reader.supports_telemetry_rate(AltosLib.ao_telemetry_rate_2400)); + } + + void disable_rate_menu() { + if (rate_listener != null) { + rates.removeActionListener(rate_listener); + rates.setEnabled(false); + rate_listener = null; + } + + } + public void set_reader(AltosFlightReader reader, AltosDevice device) { status_update = new TeleGPSStatusUpdate(telegps_status); @@ -374,8 +411,10 @@ public class TeleGPS thread = new TeleGPSDisplayThread(this, voice(), this, reader); thread.start(); - if (device != null) + if (device != null) { enable_frequency_menu(device.getSerial(), reader); + enable_rate_menu(device.getSerial(), reader); + } } static int number_of_windows; @@ -467,6 +506,16 @@ public class TeleGPS c.gridwidth = 1; bag.add(frequencies, c); + rates = new AltosUIRateList(); + rates.setEnabled(false); + c.gridx = 1; + c.gridy = 0; + c.fill = GridBagConstraints.NONE; + c.anchor = GridBagConstraints.WEST; + c.weightx = 0; + c.gridwidth = 1; + bag.add(rates, c); + displays = new LinkedList<AltosFlightDisplay>(); int serial = -1; |