X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=telegps%2FTeleGPS.java;h=a4b221e814b5444df1630fb46cd82fb15273b580;hp=e78c2124ab5142102b7a6da44fc55e49b720dc19;hb=6f2a4c610dfacbf500650db0eeeca6623bb49c5c;hpb=bd440afc2a6e37b74fffcf1b977e149485095316 diff --git a/telegps/TeleGPS.java b/telegps/TeleGPS.java index e78c2124..a4b221e8 100644 --- a/telegps/TeleGPS.java +++ b/telegps/TeleGPS.java @@ -32,12 +32,12 @@ public class TeleGPS { static String[] telegps_icon_names = { - "/telegps-16.png", - "/telegps-32.png", - "/telegps-48.png", - "/telegps-64.png", - "/telegps-128.png", - "/telegps-256.png" + "/altusmetrum-telegps-16.png", + "/altusmetrum-telegps-32.png", + "/altusmetrum-telegps-48.png", + "/altusmetrum-telegps-64.png", + "/altusmetrum-telegps-128.png", + "/altusmetrum-telegps-256.png" }; static { set_icon_names(telegps_icon_names); } @@ -58,8 +58,10 @@ public class TeleGPS JMenu file_menu; JMenu monitor_menu; JMenu device_menu; - AltosFreqList frequencies; + 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) { @@ -351,18 +354,51 @@ public class TeleGPS frequencies.set_product("Monitor"); frequencies.set_serial(serial); frequencies.set_frequency(AltosUIPreferences.frequency(serial)); + frequencies.setEnabled(true); - menu_bar.add(frequencies); - menu_bar.repaint(); } void disable_frequency_menu() { - if (frequency_listener == null) - return; - frequencies.removeActionListener(frequency_listener); - menu_bar.remove(frequencies); - menu_bar.repaint(); - frequency_listener = null; + if (frequency_listener != null) { + frequencies.removeActionListener(frequency_listener); + frequencies.setEnabled(false); + frequency_listener = null; + } + + } + + 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) { @@ -375,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; @@ -457,7 +495,26 @@ public class TeleGPS file_menu = make_menu("File", file_menu_entries); monitor_menu = make_menu("Monitor", monitor_menu_entries); device_menu = make_menu("Device", device_menu_entries); - frequencies = new AltosFreqList(); + + frequencies = new AltosUIFreqList(); + frequencies.setEnabled(false); + c.gridx = 0; + c.gridy = 0; + c.fill = GridBagConstraints.NONE; + c.anchor = GridBagConstraints.WEST; + c.weightx = 0; + 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();