String manufacturer;
String product;
String version;
+ int log_format;
int serial;
/* Strings returned */
int main_deploy;
int apogee_delay;
int radio_channel;
+ int radio_setting;
String callsign;
int accel_cal_plus, accel_cal_minus;
int radio_calibration;
int flight_log_max;
int ignite_mode;
-
+ int stored_flight;
+ int storage_size;
+ int storage_erase_unit;
static String get_string(String line, String label) throws ParseException {
if (line.startsWith(label)) {
return lines.iterator();
}
+ public int log_available() {
+ switch (log_format) {
+ case Altos.AO_LOG_FORMAT_TINY:
+ if (stored_flight == 0)
+ return 1;
+ return 0;
+ default:
+ if (flight_log_max <= 0)
+ return 1;
+ int log_space = storage_size - storage_erase_unit;
+ int log_used = stored_flight * flight_log_max;
+
+ if (log_used >= log_space)
+ return 0;
+ return (log_space - log_used) / flight_log_max;
+ }
+ }
+
public AltosConfigData(AltosSerial serial_line) throws InterruptedException, TimeoutException {
- serial_line.printf("c s\nv\n");
+ serial_line.printf("c s\nf\nl\nv\n");
lines = new LinkedList<String>();
+ radio_setting = 0;
+ stored_flight = 0;
for (;;) {
- String line = serial_line.get_reply(5000);
+ String line = serial_line.get_reply();
if (line == null)
throw new TimeoutException();
if (line.contains("Syntax error"))
continue;
lines.add(line);
try { serial = get_int(line, "serial-number"); } catch (Exception e) {}
+ try { log_format = get_int(line, "log-format"); } catch (Exception e) {}
try { main_deploy = get_int(line, "Main deploy:"); } catch (Exception e) {}
try { apogee_delay = get_int(line, "Apogee delay:"); } catch (Exception e) {}
try { radio_channel = get_int(line, "Radio channel:"); } catch (Exception e) {}
+ try { radio_setting = get_int(line, "Radio setting:"); } catch (Exception e) {}
try {
if (line.startsWith("Accel cal")) {
String[] bits = line.split("\\s+");
try { version = get_string(line,"software-version"); } catch (Exception e) {}
try { product = get_string(line,"product"); } catch (Exception e) {}
+ try { get_int(line, "flight"); stored_flight++; } catch (Exception e) {}
+ try { storage_size = get_int(line, "Storage size:"); } catch (Exception e) {}
+ try { storage_erase_unit = get_int(line, "Storage erase unit"); } catch (Exception e) {}
+
/* signals the end of the version info */
if (line.startsWith("software-version"))
break;