summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--altoslib/AltosCalData.java7
-rw-r--r--altoslib/AltosDataListener.java31
-rw-r--r--altoslib/AltosEepromRecord.java2
-rw-r--r--altoslib/AltosEepromRecordSet.java2
-rw-r--r--altoslib/AltosFlightSeries.java16
-rw-r--r--altoslib/AltosState.java34
-rw-r--r--altoslib/AltosTelemetry.java2
-rw-r--r--altoslib/AltosTelemetryConfiguration.java2
-rw-r--r--altoslib/AltosTelemetryFile.java2
-rw-r--r--altoslib/AltosTelemetryReader.java8
10 files changed, 62 insertions, 44 deletions
diff --git a/altoslib/AltosCalData.java b/altoslib/AltosCalData.java
index 6258c1a8..7415d5ad 100644
--- a/altoslib/AltosCalData.java
+++ b/altoslib/AltosCalData.java
@@ -72,6 +72,13 @@ public class AltosCalData {
}
}
+ public int log_format = AltosLib.MISSING;
+
+ public void set_log_format(int log_format) {
+ if (log_format != AltosLib.MISSING)
+ this.log_format = log_format;
+ }
+
public int config_major = AltosLib.MISSING;
public int config_minor = AltosLib.MISSING;
public int flight_log_max = AltosLib.MISSING;
diff --git a/altoslib/AltosDataListener.java b/altoslib/AltosDataListener.java
index be6d840f..fb37fe3d 100644
--- a/altoslib/AltosDataListener.java
+++ b/altoslib/AltosDataListener.java
@@ -19,7 +19,6 @@ public abstract class AltosDataListener {
private AltosCalData cal_data = null;
public double time = AltosLib.MISSING;
- public int state = AltosLib.MISSING;
public double frequency = AltosLib.MISSING;
public void set_tick(int tick) {
@@ -42,14 +41,34 @@ public abstract class AltosDataListener {
cal_data().set_serial(serial);
}
+ public void set_device_type(int device_type) {
+ cal_data().set_device_type(device_type);
+ switch (device_type) {
+ case AltosLib.product_telegps:
+ set_state(AltosLib.ao_flight_stateless);
+ break;
+ }
+ }
+
+ public void set_log_format(int log_format) {
+ cal_data().set_log_format(log_format);
+ switch (log_format) {
+ case AltosLib.AO_LOG_FORMAT_TELEGPS:
+ set_state(AltosLib.ao_flight_stateless);
+ break;
+ }
+ }
+
public double time() {
return time;
}
public void set_state(int state) {
cal_data().set_state(state);
- if (state != AltosLib.MISSING)
- this.state = state;
+ }
+
+ public int state() {
+ return cal_data().state;
}
public void set_flight(int flight) {
@@ -64,6 +83,12 @@ public abstract class AltosDataListener {
public void finish() {
}
+ public void init() {
+ set_state(AltosLib.ao_flight_invalid);
+ time = AltosLib.MISSING;
+ frequency = AltosLib.MISSING;
+ }
+
public abstract void set_rssi(int rssi, int status);
public abstract void set_received_time(long received_time);
diff --git a/altoslib/AltosEepromRecord.java b/altoslib/AltosEepromRecord.java
index 094584fe..e937c3d0 100644
--- a/altoslib/AltosEepromRecord.java
+++ b/altoslib/AltosEepromRecord.java
@@ -83,7 +83,7 @@ public abstract class AltosEepromRecord implements Comparable<AltosEepromRecord>
/* AltosDataProvider */
public void provide_data(AltosDataListener listener, AltosCalData cal_data) {
- cal_data.set_tick(tick());
+ listener.set_tick(tick());
if (cmd() == AltosLib.AO_LOG_FLIGHT)
cal_data.set_boost_tick();
listener.set_time(cal_data.time());
diff --git a/altoslib/AltosEepromRecordSet.java b/altoslib/AltosEepromRecordSet.java
index 48e90c05..d91ae3ac 100644
--- a/altoslib/AltosEepromRecordSet.java
+++ b/altoslib/AltosEepromRecordSet.java
@@ -44,6 +44,8 @@ public class AltosEepromRecordSet implements AltosRecordSet {
AltosCalData cal_data = cal_data();
cal_data.reset();
+ listener.set_log_format(config_data().log_format);
+
for (AltosEepromRecord record : ordered) {
record.provide_data(listener, cal_data);
}
diff --git a/altoslib/AltosFlightSeries.java b/altoslib/AltosFlightSeries.java
index df575189..f7ea0d15 100644
--- a/altoslib/AltosFlightSeries.java
+++ b/altoslib/AltosFlightSeries.java
@@ -150,15 +150,13 @@ public class AltosFlightSeries extends AltosDataListener {
public void set_state(int state) {
- if (state == AltosLib.ao_flight_pad)
- return;
-
- if (state_series == null)
- state_series = add_series(state_name, AltosConvert.state_name);
- else if (this.state == state)
- return;
- this.state = state;
- state_series.add(time(), state);
+ if (state != AltosLib.ao_flight_pad && state != AltosLib.MISSING && state != AltosLib.ao_flight_stateless) {
+ if (state_series == null)
+ state_series = add_series(state_name, AltosConvert.state_name);
+ if (this.state() != state)
+ state_series.add(time(), state);
+ }
+ super.set_state(state);
}
public AltosTimeSeries accel_series;
diff --git a/altoslib/AltosState.java b/altoslib/AltosState.java
index 39ab10da..54c70094 100644
--- a/altoslib/AltosState.java
+++ b/altoslib/AltosState.java
@@ -480,7 +480,7 @@ public class AltosState extends AltosDataListener {
class AltosPressure extends AltosValue {
void set(double p, double time) {
super.set(p, time);
- if (state == AltosLib.ao_flight_pad)
+ if (state() == AltosLib.ao_flight_pad)
ground_pressure.set_filtered(p, time);
double a = pressure_to_altitude(p);
altitude.set_computed(a, time);
@@ -557,7 +557,7 @@ public class AltosState extends AltosDataListener {
class AltosSpeed extends AltosCValue {
boolean can_max() {
- return state < AltosLib.ao_flight_fast || state == AltosLib.ao_flight_stateless;
+ return state() < AltosLib.ao_flight_fast || state() == AltosLib.ao_flight_stateless;
}
void set_accel() {
@@ -615,7 +615,7 @@ public class AltosState extends AltosDataListener {
class AltosAccel extends AltosCValue {
boolean can_max() {
- return state < AltosLib.ao_flight_fast || state == AltosLib.ao_flight_stateless;
+ return state() < AltosLib.ao_flight_fast || state() == AltosLib.ao_flight_stateless;
}
void set_measured(double a, double time) {
@@ -712,11 +712,11 @@ public class AltosState extends AltosDataListener {
}
public void init() {
+ super.init();
+
set = 0;
received_time = System.currentTimeMillis();
- time = AltosLib.MISSING;
- state = AltosLib.ao_flight_invalid;
landed = false;
boost = false;
rssi = AltosLib.MISSING;
@@ -819,9 +819,9 @@ public class AltosState extends AltosDataListener {
if (gps.locked && gps.nsat >= 4) {
/* Track consecutive 'good' gps reports, waiting for 10 of them */
- if (state == AltosLib.ao_flight_pad || state == AltosLib.ao_flight_stateless) {
+ if (state() == AltosLib.ao_flight_pad || state() == AltosLib.ao_flight_stateless) {
set_npad(npad+1);
- if (pad_lat != AltosLib.MISSING && (npad < 10 || state == AltosLib.ao_flight_pad)) {
+ if (pad_lat != AltosLib.MISSING && (npad < 10 || state() == AltosLib.ao_flight_pad)) {
pad_lat = (pad_lat * 31 + gps.lat) / 32;
pad_lon = (pad_lon * 31 + gps.lon) / 32;
gps_ground_altitude.set_filtered(gps.alt, time);
@@ -859,24 +859,14 @@ public class AltosState extends AltosDataListener {
}
public String state_name() {
- return AltosLib.state_name(state);
+ return AltosLib.state_name(state());
}
public void set_state(int state) {
- if (state != AltosLib.ao_flight_invalid) {
- this.state = state;
- ascent = (AltosLib.ao_flight_boost <= state &&
- state <= AltosLib.ao_flight_coast);
- boost = (AltosLib.ao_flight_boost == state);
- }
- }
-
- public int state() {
- return state;
- }
-
- private void re_init() {
- init();
+ super.set_state(state);
+ ascent = (AltosLib.ao_flight_boost <= state() &&
+ state() <= AltosLib.ao_flight_coast);
+ boost = (AltosLib.ao_flight_boost == state());
}
public int rssi() {
diff --git a/altoslib/AltosTelemetry.java b/altoslib/AltosTelemetry.java
index f17e1171..fe536c6a 100644
--- a/altoslib/AltosTelemetry.java
+++ b/altoslib/AltosTelemetry.java
@@ -51,7 +51,7 @@ public abstract class AltosTelemetry implements AltosDataProvider {
public void provide_data(AltosDataListener listener) {
listener.set_serial(serial());
- if (listener.state == AltosLib.ao_flight_invalid)
+ if (listener.state() == AltosLib.ao_flight_invalid)
listener.set_state(AltosLib.ao_flight_startup);
if (frequency != AltosLib.MISSING)
listener.set_frequency(frequency);
diff --git a/altoslib/AltosTelemetryConfiguration.java b/altoslib/AltosTelemetryConfiguration.java
index ea307442..c8026a83 100644
--- a/altoslib/AltosTelemetryConfiguration.java
+++ b/altoslib/AltosTelemetryConfiguration.java
@@ -40,7 +40,7 @@ public class AltosTelemetryConfiguration extends AltosTelemetryStandard {
AltosCalData cal_data = listener.cal_data();
- cal_data.set_device_type(device_type());
+ listener.set_device_type(device_type());
cal_data.set_flight(flight());
cal_data.set_config(config_major(), config_minor(), flight_log_max());
if (device_type() == AltosLib.product_telegps)
diff --git a/altoslib/AltosTelemetryFile.java b/altoslib/AltosTelemetryFile.java
index 135b0284..e51455f8 100644
--- a/altoslib/AltosTelemetryFile.java
+++ b/altoslib/AltosTelemetryFile.java
@@ -128,7 +128,7 @@ public class AltosTelemetryFile implements AltosRecordSet {
/* Try to pick up at least one pre-boost value */
if (cal_data.time() >= -2)
telem.provide_data(listener);
- if (listener.state == AltosLib.ao_flight_landed)
+ if (listener.state() == AltosLib.ao_flight_landed)
break;
}
listener.finish();
diff --git a/altoslib/AltosTelemetryReader.java b/altoslib/AltosTelemetryReader.java
index 26fe4f26..8fb61a4f 100644
--- a/altoslib/AltosTelemetryReader.java
+++ b/altoslib/AltosTelemetryReader.java
@@ -41,19 +41,15 @@ public class AltosTelemetryReader extends AltosFlightReader {
throw new IOException("IO error");
} while (!link.get_monitor());
AltosTelemetry telem = AltosTelemetry.parse(l.line);
- if (state == null) {
- System.out.printf("Make state\n");
+ if (state == null)
state = new AltosState(cal_data());
- }
telem.provide_data(state);
return state;
}
public AltosCalData cal_data() {
- if (cal_data == null) {
- System.out.printf("Make cal data\n");
+ if (cal_data == null)
cal_data = new AltosCalData();
- }
return cal_data;
}