diff options
Diffstat (limited to 'altosui/AltosConfig.java')
| -rw-r--r-- | altosui/AltosConfig.java | 115 | 
1 files changed, 11 insertions, 104 deletions
| diff --git a/altosui/AltosConfig.java b/altosui/AltosConfig.java index 92191564..e1ffebb4 100644 --- a/altosui/AltosConfig.java +++ b/altosui/AltosConfig.java @@ -78,43 +78,8 @@ public class AltosConfig implements ActionListener {  			serial_line.stop_remote();  	} -	int log_limit() { -		if (data.storage_size > 0 && data.storage_erase_unit > 0) { -			int	log_limit = data.storage_size - data.storage_erase_unit; -			if (log_limit > 0) -				return log_limit / 1024; -		} -		return 1024; -	} -  	void update_ui() { -		config_ui.set_serial(data.serial); -		config_ui.set_product(data.product); -		config_ui.set_version(data.version); -		config_ui.set_main_deploy(data.main_deploy); -		config_ui.set_apogee_delay(data.apogee_delay); -		config_ui.set_apogee_lockout(data.apogee_lockout); -		config_ui.set_radio_calibration(data.radio_calibration); -		config_ui.set_radio_frequency(frequency()); -		boolean max_enabled = true; -		switch (data.log_format) { -		case Altos.AO_LOG_FORMAT_TINY: -			max_enabled = false; -			break; -		default: -			if (data.stored_flight >= 0) -				max_enabled = false; -			break; -		} -		config_ui.set_flight_log_max_enabled(max_enabled); -		config_ui.set_radio_enable(data.radio_enable); -		config_ui.set_flight_log_max_limit(log_limit()); -		config_ui.set_flight_log_max(data.flight_log_max); -		config_ui.set_ignite_mode(data.ignite_mode); -		config_ui.set_pad_orientation(data.pad_orientation); -		config_ui.set_callsign(data.callsign); -		config_ui.set_pyros(data.pyros); -		config_ui.set_has_pyro(data.npyro > 0); +		data.set_values(config_ui);  		config_ui.set_clean();  		if (!made_visible) {  			made_visible = true; @@ -170,41 +135,11 @@ public class AltosConfig implements ActionListener {  		void save_data() {  			try { -				double frequency = frequency(); -				boolean has_frequency = data.radio_frequency > 0; -				boolean has_setting = data.radio_setting > 0;  				start_serial(); -				serial_line.printf("c m %d\n", data.main_deploy); -				serial_line.printf("c d %d\n", data.apogee_delay); -				serial_line.printf("c L %d\n", data.apogee_lockout); -				if (!remote) -					serial_line.printf("c f %d\n", data.radio_calibration); -				serial_line.set_radio_frequency(frequency, -								has_frequency, -								has_setting, -								data.radio_calibration); -				if (remote) { -					serial_line.stop_remote(); -					serial_line.set_radio_frequency(frequency); -					AltosUIPreferences.set_frequency(device.getSerial(), frequency); -					serial_line.start_remote(); -				} -				serial_line.printf("c c %s\n", data.callsign); -				if (data.flight_log_max != 0) -					serial_line.printf("c l %d\n", data.flight_log_max); -				if (data.radio_enable >= 0) -					serial_line.printf("c e %d\n", data.radio_enable); -				if (data.ignite_mode >= 0) -					serial_line.printf("c i %d\n", data.ignite_mode); -				if (data.pad_orientation >= 0) -					serial_line.printf("c o %d\n", data.pad_orientation); -				if (data.pyros.length > 0) { -					for (int p = 0; p < data.pyros.length; p++) { -						serial_line.printf("c P %s\n", -								   data.pyros[p].toString()); -					} -				} -				serial_line.printf("c w\n"); +				data.save(serial_line, remote); +				if (remote) +					AltosUIPreferences.set_frequency(device.getSerial(), +									 data.frequency());  			} catch (InterruptedException ie) {  			} catch (TimeoutException te) {  			} finally { @@ -291,51 +226,23 @@ public class AltosConfig implements ActionListener {  						       data.radio_channel);  	} -	void set_frequency(double freq) { -		int	frequency = data.radio_frequency; -		int	setting = data.radio_setting; - -		if (frequency > 0) { -			data.radio_frequency = (int) Math.floor (freq * 1000 + 0.5); -			data.radio_channel = 0; -		} else if (setting > 0) { -			data.radio_setting =AltosConvert.radio_frequency_to_setting(freq, -										    data.radio_calibration); -			data.radio_channel = 0; -		} else { -			data.radio_channel = AltosConvert.radio_frequency_to_channel(freq); -		} -	} -  	void save_data() {  		/* bounds check stuff */ -		if (config_ui.flight_log_max() > log_limit()) { +		if (config_ui.flight_log_max() > data.log_limit()) {  			JOptionPane.showMessageDialog(owner,  						      String.format("Requested flight log, %dk, is larger than the available space, %dk.\n",  								    config_ui.flight_log_max(), -								    log_limit()), +								    data.log_limit()),  						      "Maximum Flight Log Too Large",  						      JOptionPane.ERROR_MESSAGE);  			return;  		} -		data.main_deploy = config_ui.main_deploy(); -		data.apogee_delay = config_ui.apogee_delay(); -		data.apogee_lockout = config_ui.apogee_lockout(); -		data.radio_calibration = config_ui.radio_calibration(); -		set_frequency(config_ui.radio_frequency()); -		data.flight_log_max = config_ui.flight_log_max(); -		if (data.radio_enable >= 0) -			data.radio_enable = config_ui.radio_enable(); -		if (data.ignite_mode >= 0) -			data.ignite_mode = config_ui.ignite_mode(); -		if (data.pad_orientation >= 0) -			data.pad_orientation = config_ui.pad_orientation(); -		data.callsign = config_ui.callsign(); -		if (data.npyro > 0) { -			data.pyros = config_ui.pyros(); -		} +		/* Pull data out of the UI and stuff back into our local data record */ + +		data.get_values(config_ui); +  		run_serial_thread(serial_mode_save);  	} | 
