X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=altoslib%2FAltosConfigData.java;h=5d58566ecb3dc0b9836e1bd676a5857f04a1cde1;hb=b07ca2827a498e6dd3c6b62819f71679291f9acc;hp=3c5f6c06678977f6a7790c850e125a543dbc0611;hpb=47f4121ae6596bdf18566295df2fdbe94fe676b8;p=fw%2Faltos diff --git a/altoslib/AltosConfigData.java b/altoslib/AltosConfigData.java index 3c5f6c06..5d58566e 100644 --- a/altoslib/AltosConfigData.java +++ b/altoslib/AltosConfigData.java @@ -89,6 +89,7 @@ public class AltosConfigData { /* Log listing replies */ public int stored_flight; + public AltosEepromFlight[] flights; /* HAS_TRACKER */ public int tracker_motion; @@ -162,7 +163,7 @@ public class AltosConfigData { public int log_available() { switch (log_format) { case AltosLib.AO_LOG_FORMAT_TINY: - if (stored_flight == 0) + if (flights == null) return 1; return 0; case AltosLib.AO_LOG_FORMAT_TELEMETRY: @@ -175,10 +176,10 @@ public class AltosConfigData { int log_space = log_space(); int log_used; - if (stored_flight <= 0) + if (flights == null) log_used = 0; else - log_used = stored_flight * log_max; + log_used = flights.length * log_max; int log_avail; if (log_used >= log_space) @@ -306,7 +307,8 @@ public class AltosConfigData { storage_size = AltosLib.MISSING; storage_erase_unit = AltosLib.MISSING; - stored_flight = AltosLib.MISSING; + stored_flight = 0; + flights = null; accel_zero_along = AltosLib.MISSING; accel_zero_across = AltosLib.MISSING; @@ -318,8 +320,12 @@ public class AltosConfigData { adjust_accel_cal(); switch (pad_orientation) { case AltosLib.AO_PAD_ORIENTATION_ANTENNA_UP: + case AltosLib.AO_PAD_ORIENTATION_WORDS_UPRIGHT: + case AltosLib.AO_PAD_ORIENTATION_BIG_PARTS_UP: return accel_cal_plus_cooked; case AltosLib.AO_PAD_ORIENTATION_ANTENNA_DOWN: + case AltosLib.AO_PAD_ORIENTATION_WORDS_UPSIDEDOWN: + case AltosLib.AO_PAD_ORIENTATION_BIG_PARTS_DOWN: return invert_accel_value(accel_cal_minus_cooked); default: return AltosLib.MISSING; @@ -331,8 +337,12 @@ public class AltosConfigData { adjust_accel_cal(); switch (pad_orientation) { case AltosLib.AO_PAD_ORIENTATION_ANTENNA_UP: + case AltosLib.AO_PAD_ORIENTATION_WORDS_UPRIGHT: + case AltosLib.AO_PAD_ORIENTATION_BIG_PARTS_UP: return accel_cal_minus_cooked; case AltosLib.AO_PAD_ORIENTATION_ANTENNA_DOWN: + case AltosLib.AO_PAD_ORIENTATION_WORDS_UPSIDEDOWN: + case AltosLib.AO_PAD_ORIENTATION_BIG_PARTS_DOWN: return invert_accel_value(accel_cal_plus_cooked); default: return AltosLib.MISSING; @@ -351,11 +361,15 @@ public class AltosConfigData { { switch (pad_orientation) { case AltosLib.AO_PAD_ORIENTATION_ANTENNA_UP: + case AltosLib.AO_PAD_ORIENTATION_WORDS_UPRIGHT: + case AltosLib.AO_PAD_ORIENTATION_BIG_PARTS_UP: accel_cal_plus_cooked = accel_cal_plus; accel_cal_minus_cooked = accel_cal_minus; accel_cal_adjusted = true; break; case AltosLib.AO_PAD_ORIENTATION_ANTENNA_DOWN: + case AltosLib.AO_PAD_ORIENTATION_WORDS_UPSIDEDOWN: + case AltosLib.AO_PAD_ORIENTATION_BIG_PARTS_DOWN: accel_cal_plus_cooked = invert_accel_value(accel_cal_minus); accel_cal_minus_cooked = invert_accel_value(accel_cal_plus); accel_cal_adjusted = true; @@ -484,7 +498,32 @@ public class AltosConfigData { try { storage_erase_unit = get_int(line, "Storage erase unit:"); } catch (Exception e) {} /* Log listing replies */ - try { get_int(line, "flight"); stored_flight++; } catch (Exception e) {} + try { + int flight = get_int(line, "flight"); + String[] tokens = line.split("\\s+"); + if (tokens.length >= 6) { + int start = -1, end = -1; + try { + if (tokens[2].equals("start")) + start = AltosParse.parse_hex(tokens[3]); + if (tokens[4].equals("end")) + end = AltosParse.parse_hex(tokens[5]); + if (flight != 0 && start >= 0 && end > 0) { + int len; + if (flights == null) + len = 0; + else + len = flights.length; + AltosEepromFlight [] new_flights = new AltosEepromFlight[len + 1]; + for (int i = 0; i < len; i++) + new_flights[i] = flights[i]; + new_flights[len] = new AltosEepromFlight(flight, start, end); + flights = new_flights; + stored_flight = flights.length; + } + } catch (ParseException pe) { System.out.printf("Parse error %s\n", pe.toString()); } + } + } catch (Exception e) {} /* HAS_GYRO */ try { @@ -701,14 +740,14 @@ public class AltosConfigData { max_enabled = false; break; default: - if (stored_flight != AltosLib.MISSING) + if (flights != null) max_enabled = false; break; } dest.set_flight_log_max_enabled(max_enabled); dest.set_radio_enable(radio_enable); - dest.set_flight_log_max_limit(log_space() / 1024); + dest.set_flight_log_max_limit(log_space() >> 10, storage_erase_unit >> 10); dest.set_flight_log_max(flight_log_max); dest.set_ignite_mode(ignite_mode); dest.set_pad_orientation(pad_orientation); @@ -801,7 +840,7 @@ public class AltosConfigData { link.printf("c a %d %d\n", plus, minus); /* HAS_LOG */ - if (flight_log_max != 0) + if (flight_log_max != 0 && flight_log_max != AltosLib.MISSING) link.printf("c l %d\n", flight_log_max); /* HAS_IGNITE */