* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
*/
-package org.altusmetrum.altoslib_11;
+package org.altusmetrum.altoslib_14;
import java.io.*;
import java.util.*;
class AltosEepromNameData extends AltosDataListener {
AltosGPS gps = null;
+ boolean avoid_duplicate_files = false;
+
public void set_rssi(int rssi, int status) { }
public void set_received_time(long received_time) { }
public void set_apogee_voltage(double volts) { }
public void set_main_voltage(double volts) { }
- public void set_gps(AltosGPS gps) {
+ public void set_avoid_duplicate_files() {
+ avoid_duplicate_files = true;
+ }
+
+ public void set_gps(AltosGPS gps, boolean set_location, boolean set_sats) {
+ super.set_gps(gps, set_location, set_sats);
if (gps != null &&
gps.year != AltosLib.MISSING &&
gps.month != AltosLib.MISSING &&
public void set_accel(double along, double across, double through) { }
public void set_mag(double along, double across, double through) { }
public void set_pyro_voltage(double volts) { }
- public void set_ignitor_voltage(double[] voltage) { }
+ public void set_igniter_voltage(double[] voltage) { }
public void set_pyro_fired(int pyro_mask) { }
public void set_companion(AltosCompanion companion) { }
public void set_kalman(double height, double speed, double acceleration) { }
public void set_orient(double new_orient) { }
+ public void set_motor_pressure(double motor_pressure) { }
public AltosEepromNameData(AltosCalData cal_data) {
super(cal_data);
private AltosFile MakeFile(int serial, int flight, AltosEepromNameData name_data) throws IOException {
AltosFile eeprom_name;
- if (name_data.gps != null) {
- AltosGPS gps = name_data.gps;
- eeprom_name = new AltosFile(gps.year, gps.month, gps.day,
- serial, flight, "eeprom");
- } else
- eeprom_name = new AltosFile(serial, flight, "eeprom");
+ for (;;) {
+ if (name_data.gps != null) {
+ AltosGPS gps = name_data.gps;
+ eeprom_name = new AltosFile(gps.year, gps.month, gps.day,
+ serial, flight, "eeprom");
+ } else
+ eeprom_name = new AltosFile(serial, flight, "eeprom");
+ if (!name_data.avoid_duplicate_files)
+ break;
+ if (!eeprom_name.exists())
+ break;
+ flight++;
+ }
return eeprom_name;
}
}
/* Construct our internal representation of the eeprom data */
- AltosEepromNew eeprom = new AltosEepromNew(flights.config_data, data);
+ AltosEeprom eeprom = new AltosEeprom(flights.config_data, data);
/* Now see if we can't actually parse the resulting
* file to generate a better filename. Note that this
AltosFile f = MakeFile(flights.config_data.serial, log.flight, name_data);
- monitor.set_filename(f.toString());
+ log.set_file(f);
+
+ boolean do_write = true;
+
+ if (f.exists())
+ do_write = monitor.check_overwrite(f);
- FileWriter w = new FileWriter(f);
+ if (do_write) {
+ FileWriter w = new FileWriter(f);
+
+ eeprom.write(w);
+ w.close();
+ }
+
+ if (eeprom.errors != 0)
+ throw new ParseException(String.format("%d CRC Errors", eeprom.errors), 0);
+ }
+
+ static String label(int flight) {
+ if (flight < 0)
+ return "Corrupt";
+ else
+ return "Flight";
+ }
- eeprom.write(w);
- w.close();
+ static int flight(int flight) {
+ if (flight < 0)
+ return -flight;
+ return flight;
}
public void run () {
boolean success = false;
try {
- boolean failed = false;
if (remote)
link.start_remote();
for (AltosEepromLog log : flights) {
parse_errors = null;
- if (log.selected) {
+ if (log.download_selected) {
monitor.reset();
try {
CaptureLog(log);
LogError(e.getMessage());
}
}
+ success = true;
if (parse_errors != null) {
- failed = true;
- monitor.show_message(String.format("Flight %d download error. Valid log data saved\n%s",
- log.flight,
+ monitor.show_message(String.format("%s %d download error. Valid log data saved\n%s",
+ label(log.flight),
+ flight(log.flight),
parse_errors),
link.name,
AltosEepromMonitor.WARNING_MESSAGE);
}
}
- success = !failed;
} catch (IOException ee) {
monitor.show_message(ee.getLocalizedMessage(),
link.name,