diff options
| author | Keith Packard <keithp@keithp.com> | 2012-12-07 17:35:15 -0800 | 
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2012-12-07 17:35:15 -0800 | 
| commit | abf82991b8e69754ebc4857ce78ac4a4b01f16e4 (patch) | |
| tree | c0efecd8a72510f8a13712b823add06ca5615b00 | |
| parent | bd05421991b596fe9cf73ee25c9046b0fb4e32f7 (diff) | |
altosui: Add APRS interval configuration to UI
Signed-off-by: Keith Packard <keithp@keithp.com>
| -rw-r--r-- | altoslib/AltosConfigData.java | 18 | ||||
| -rw-r--r-- | altoslib/AltosConfigValues.java | 4 | ||||
| -rw-r--r-- | altosui/AltosConfigUI.java | 64 | 
3 files changed, 84 insertions, 2 deletions
| diff --git a/altoslib/AltosConfigData.java b/altoslib/AltosConfigData.java index 515ff480..f940b150 100644 --- a/altoslib/AltosConfigData.java +++ b/altoslib/AltosConfigData.java @@ -67,6 +67,9 @@ public class AltosConfigData implements Iterable<String> {  	public int		npyro;  	public int		pyro; +	/* HAS_APRS */ +	public int		aprs_interval; +  	/* Storage info replies */  	public int	storage_size;  	public int	storage_erase_unit; @@ -189,6 +192,8 @@ public class AltosConfigData implements Iterable<String> {  		npyro = 0;  		pyros = null; +		aprs_interval = -1; +  		storage_size = -1;  		storage_erase_unit = -1;  		stored_flight = -1; @@ -262,6 +267,9 @@ public class AltosConfigData implements Iterable<String> {  			} catch (Exception e) {}  		} +		/* HAS_APRS */ +		try { aprs_interval = get_int(line, "APRS interval:"); } catch (Exception e) {} +  		/* Storage info replies */  		try { storage_size = get_int(line, "Storage size:"); } catch (Exception e) {}  		try { storage_erase_unit = get_int(line, "Storage erase unit"); } catch (Exception e) {} @@ -367,6 +375,9 @@ public class AltosConfigData implements Iterable<String> {  		/* AO_PYRO_NUM */  		if (npyro > 0)  			pyros = source.pyros(); + +		if (aprs_interval >= 0) +			aprs_interval = source.aprs_interval();  	}  	public void set_values(AltosConfigValues dest) { @@ -399,6 +410,7 @@ public class AltosConfigData implements Iterable<String> {  			dest.set_pyros(pyros);  		else  			dest.set_pyros(null); +		dest.set_aprs_interval(aprs_interval);  	}  	public void save(AltosLink link, boolean remote) throws InterruptedException, TimeoutException { @@ -461,6 +473,10 @@ public class AltosConfigData implements Iterable<String> {  			}  		} +		/* HAS_APRS */ +		if (aprs_interval >= 0) +			link.printf("c A %d\n", aprs_interval); +  		link.printf("c w\n");  		link.flush_output();  	} @@ -479,4 +495,4 @@ public class AltosConfigData implements Iterable<String> {  		}  	} -}
\ No newline at end of file +} diff --git a/altoslib/AltosConfigValues.java b/altoslib/AltosConfigValues.java index 69239f21..40d5217e 100644 --- a/altoslib/AltosConfigValues.java +++ b/altoslib/AltosConfigValues.java @@ -72,4 +72,8 @@ public interface AltosConfigValues {  	public abstract void set_pyros(AltosPyro[] new_pyros);  	public abstract AltosPyro[] pyros(); + +	public abstract int aprs_interval(); + +	public abstract void set_aprs_interval(int new_aprs_interval);  } diff --git a/altosui/AltosConfigUI.java b/altosui/AltosConfigUI.java index 2c3435c1..95780e2b 100644 --- a/altosui/AltosConfigUI.java +++ b/altosui/AltosConfigUI.java @@ -39,6 +39,7 @@ public class AltosConfigUI  	JLabel		radio_calibration_label;  	JLabel		radio_frequency_label;  	JLabel		radio_enable_label; +	JLabel		aprs_interval_label;  	JLabel		flight_log_max_label;  	JLabel		ignite_mode_label;  	JLabel		pad_orientation_label; @@ -56,6 +57,7 @@ public class AltosConfigUI  	AltosFreqList	radio_frequency_value;  	JTextField	radio_calibration_value;  	JRadioButton	radio_enable_value; +	JComboBox	aprs_interval_value;  	JComboBox	flight_log_max_value;  	JComboBox	ignite_mode_value;  	JComboBox	pad_orientation_value; @@ -97,6 +99,13 @@ public class AltosConfigUI  		"Redundant Main",  	}; +	static String[] aprs_interval_values = { +		"Disabled", +		"2", +		"5", +		"10" +	}; +  	static String[] pad_orientation_values = {  		"Antenna Up",  		"Antenna Down", @@ -141,6 +150,13 @@ public class AltosConfigUI  			radio_enable_value.setToolTipText("Firmware version does not support disabling radio");  	} +	void set_aprs_interval_tool_tip() { +		if (aprs_interval_value.isEnabled()) +			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_flight_log_max_tool_tip() {  		if (flight_log_max_value.isEnabled())  			flight_log_max_value.setToolTipText("Size reserved for each flight log (in kB)"); @@ -393,7 +409,7 @@ public class AltosConfigUI  		c.anchor = GridBagConstraints.LINE_START;  		c.insets = il;  		c.ipady = 5; -		radio_enable_label = new JLabel("Telemetry/RDF Enable:"); +		radio_enable_label = new JLabel("Telemetry/RDF/APRS Enable:");  		pane.add(radio_enable_label, c);  		c = new GridBagConstraints(); @@ -410,6 +426,32 @@ public class AltosConfigUI  		set_radio_enable_tool_tip();  		row++; +		/* APRS interval */ +		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_interval_label = new JLabel("APRS Interval(s):"); +		pane.add(aprs_interval_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_interval_value = new JComboBox(aprs_interval_values); +		aprs_interval_value.setEditable(true); +		aprs_interval_value.addItemListener(this); +		pane.add(aprs_interval_value, c); +		set_aprs_interval_tool_tip(); +		row++; +  		/* Callsign */  		c = new GridBagConstraints();  		c.gridx = 0; c.gridy = row; @@ -843,4 +885,24 @@ public class AltosConfigUI  			pyros = pyro_ui.get_pyros();  		return pyros;  	} + +	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.setEnabled(new_aprs_interval >= 0); +		set_aprs_interval_tool_tip(); +	} + +	public int aprs_interval() { +		String	s = aprs_interval_value.getSelectedItem().toString(); + +		if (s.equals("Disabled")) +			return 0; +		return Integer.parseInt(s); +	}  } | 
