diff options
Diffstat (limited to 'telegps/TeleGPSConfigUI.java')
| -rw-r--r-- | telegps/TeleGPSConfigUI.java | 124 | 
1 files changed, 118 insertions, 6 deletions
| diff --git a/telegps/TeleGPSConfigUI.java b/telegps/TeleGPSConfigUI.java index 5f269fd3..7a59bf48 100644 --- a/telegps/TeleGPSConfigUI.java +++ b/telegps/TeleGPSConfigUI.java @@ -21,8 +21,8 @@ import java.awt.*;  import java.awt.event.*;  import javax.swing.*;  import javax.swing.event.*; -import org.altusmetrum.altoslib_4.*; -import org.altusmetrum.altosuilib_2.*; +import org.altusmetrum.altoslib_5.*; +import org.altusmetrum.altosuilib_3.*;  public class TeleGPSConfigUI  	extends AltosUIDialog @@ -37,7 +37,9 @@ public class TeleGPSConfigUI  	JLabel			radio_calibration_label;  	JLabel			radio_frequency_label;  	JLabel			radio_enable_label; +	JLabel			rate_label;  	JLabel			aprs_interval_label; +	JLabel			aprs_ssid_label;  	JLabel			flight_log_max_label;  	JLabel			callsign_label;  	JLabel			tracker_motion_label; @@ -49,10 +51,12 @@ public class TeleGPSConfigUI  	JLabel			product_value;  	JLabel			version_value;  	JLabel			serial_value; -	AltosFreqList		radio_frequency_value; +	AltosUIFreqList		radio_frequency_value;  	JTextField		radio_calibration_value;  	JRadioButton		radio_enable_value; +	AltosUIRateList		rate_value;  	JComboBox<String>	aprs_interval_value; +	JComboBox<Integer>	aprs_ssid_value;  	JComboBox<String>	flight_log_max_value;  	JTextField		callsign_value;  	JComboBox<String>	tracker_motion_value; @@ -72,6 +76,10 @@ public class TeleGPSConfigUI  		"10"  	}; +	static Integer[]	aprs_ssid_values = { +		0, 1, 2 ,3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 +	}; +  	static String[]		tracker_motion_values_m = {  		"2",  		"5", @@ -141,6 +149,13 @@ public class TeleGPSConfigUI  			radio_enable_value.setToolTipText("Firmware version does not support disabling radio");  	} +	void set_rate_tool_tip() { +		if (rate_value.isEnabled()) +			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())  			aprs_interval_value.setToolTipText("Enable APRS and set the interval between APRS reports"); @@ -148,6 +163,15 @@ public class TeleGPSConfigUI  			aprs_interval_value.setToolTipText("Hardware doesn't support APRS");  	} +	void set_aprs_ssid_tool_tip() { +		if (aprs_ssid_value.isEnabled()) +			aprs_interval_value.setToolTipText("Set the APRS SSID (secondary station identifier)"); +		else if (aprs_interval_value.isEnabled()) +			aprs_interval_value.setToolTipText("Software version doesn't support setting the APRS SSID"); +		else +			aprs_interval_value.setToolTipText("Hardware doesn't support APRS"); +	} +  	void set_flight_log_max_tool_tip() {  		if (flight_log_max_value.isEnabled())  			flight_log_max_value.setToolTipText("Size reserved for each flight log (in kB)"); @@ -255,7 +279,7 @@ public class TeleGPSConfigUI  		c.anchor = GridBagConstraints.LINE_START;  		c.insets = ir;  		c.ipady = 5; -		radio_frequency_value = new AltosFreqList(); +		radio_frequency_value = new AltosUIFreqList();  		radio_frequency_value.addItemListener(this);  		pane.add(radio_frequency_value, c);  		radio_frequency_value.setToolTipText("Telemetry, RDF and packet frequency"); @@ -311,6 +335,31 @@ public class TeleGPSConfigUI  		set_radio_enable_tool_tip();  		row++; +		/* Telemetry Rate */ +		c = new GridBagConstraints(); +		c.gridx = 0; c.gridy = row; +		c.gridwidth = 4; +		c.fill = GridBagConstraints.NONE; +		c.anchor = GridBagConstraints.LINE_START; +		c.insets = il; +		c.ipady = 5; +		rate_label = new JLabel("Telemetry baud rate:"); +		pane.add(radio_enable_label, c); + +		c = new GridBagConstraints(); +		c.gridx = 4; c.gridy = row; +		c.gridwidth = 4; +		c.fill = GridBagConstraints.HORIZONTAL; +		c.weightx = 1; +		c.anchor = GridBagConstraints.LINE_START; +		c.insets = ir; +		c.ipady = 5; +		rate_value = new AltosUIRateList(); +		rate_value.addItemListener(this); +		pane.add(rate_value, c); +		set_rate_tool_tip(); +		row++; +  		/* APRS interval */  		c = new GridBagConstraints();  		c.gridx = 0; c.gridy = row; @@ -337,6 +386,33 @@ public class TeleGPSConfigUI  		set_aprs_interval_tool_tip();  		row++; +		/* APRS SSID */ +		c = new GridBagConstraints(); +		c.gridx = 0; c.gridy = row; +		c.gridwidth = 4; +		c.fill = GridBagConstraints.NONE; +		c.anchor = GridBagConstraints.LINE_START; +		c.insets = il; +		c.ipady = 5; +		aprs_ssid_label = new JLabel("APRS SSID:"); +		pane.add(aprs_ssid_label, c); + +		c = new GridBagConstraints(); +		c.gridx = 4; c.gridy = row; +		c.gridwidth = 4; +		c.fill = GridBagConstraints.HORIZONTAL; +		c.weightx = 1; +		c.anchor = GridBagConstraints.LINE_START; +		c.insets = ir; +		c.ipady = 5; +		aprs_ssid_value = new JComboBox<Integer>(aprs_ssid_values); +		aprs_ssid_value.setEditable(false); +		aprs_ssid_value.addItemListener(this); +		aprs_ssid_value.setMaximumRowCount(aprs_ssid_values.length); +		pane.add(aprs_ssid_value, c); +		set_aprs_ssid_tool_tip(); +		row++; +  		/* Callsign */  		c = new GridBagConstraints();  		c.gridx = 0; c.gridy = row; @@ -566,12 +642,16 @@ public class TeleGPSConfigUI  	}  	public void units_changed(boolean imperial_units) { +		boolean	was_dirty = dirty; +  		if (tracker_motion_value.isEnabled()) {  			String motion = tracker_motion_value.getSelectedItem().toString();  			tracker_motion_label.setText(get_tracker_motion_label());  			set_tracker_motion_values();  			set_tracker_motion((int) (AltosConvert.height.parse(motion, !imperial_units) + 0.5));  		} +		if (!was_dirty) +			set_clean();  	}  	/* set and get all of the dialog values */ @@ -590,6 +670,9 @@ public class TeleGPSConfigUI  		serial_value.setText(String.format("%d", serial));  	} +	public void set_altitude_32(int altitude_32) { +	} +  	public void set_main_deploy(int new_main_deploy) {  	} @@ -657,6 +740,14 @@ public class TeleGPSConfigUI  			return -1;  	} +	public void set_telemetry_rate(int new_rate) { +		rate_value.set_rate(new_rate); +	} + +	public int telemetry_rate() { +		return rate_value.rate(); +	} +  	public void set_callsign(String new_callsign) {  		callsign_value.setVisible(new_callsign != null);  		callsign_value.setText(new_callsign); @@ -748,7 +839,12 @@ public class TeleGPSConfigUI  	}  	public void set_tracker_motion(int tracker_motion) { -		tracker_motion_value.setSelectedItem(AltosConvert.height.say(tracker_motion)); +		if (tracker_motion < 0) { +			tracker_motion_value.setEnabled(false); +		} else { +			tracker_motion_value.setEnabled(true); +			tracker_motion_value.setSelectedItem(AltosConvert.height.say(tracker_motion)); +		}  	}  	public int tracker_motion() throws AltosConfigDataException { @@ -756,7 +852,12 @@ public class TeleGPSConfigUI  	}  	public void set_tracker_interval(int tracker_interval) { -		tracker_interval_value.setSelectedItem(String.format("%d", tracker_interval)); +		if (tracker_interval< 0) { +			tracker_interval_value.setEnabled(false); +		} else { +			tracker_interval_value.setEnabled(true); +			tracker_interval_value.setSelectedItem(String.format("%d", tracker_interval)); +		}  	}  	public int tracker_interval() throws AltosConfigDataException { @@ -782,4 +883,15 @@ public class TeleGPSConfigUI  			return 0;  		return parse_int("aprs interval", s, false);  	} + +	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); +		set_aprs_ssid_tool_tip(); +	} + +	public int aprs_ssid() throws AltosConfigDataException { +		Integer i = (Integer) aprs_ssid_value.getSelectedItem(); +		return i; +	}  } | 
