projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
altosuilib: Limit EasyMotor graphs to motor pressure and accel by default
[fw/altos]
/
altoslib
/
AltosEepromRecord.java
diff --git
a/altoslib/AltosEepromRecord.java
b/altoslib/AltosEepromRecord.java
index c0edb9526bf235a80a2c7b557054aa97e5f29f77..bad50329a2c0b75f1ceffa62bd6ae8d5b8a73522 100644
(file)
--- a/
altoslib/AltosEepromRecord.java
+++ b/
altoslib/AltosEepromRecord.java
@@
-12,12
+12,11
@@
* General Public License for more details.
*/
* General Public License for more details.
*/
-package org.altusmetrum.altoslib_11;
-
+package org.altusmetrum.altoslib_14;
public abstract class AltosEepromRecord implements Comparable<AltosEepromRecord> {
public abstract class AltosEepromRecord implements Comparable<AltosEepromRecord> {
- AltosEeprom
New
eeprom;
+ AltosEeprom
eeprom;
int wide_tick;
int wide_tick;
@@
-51,8
+50,22
@@
public abstract class AltosEepromRecord implements Comparable<AltosEepromRecord>
return data8(i) | (data8(i+1) << 8) | (data8(i+2) << 16) | (data8(i+3) << 24);
}
return data8(i) | (data8(i+1) << 8) | (data8(i+2) << 16) | (data8(i+3) << 24);
}
+ public boolean empty(int s) {
+ for (int i = 0; i < length; i++)
+ if (eeprom.data8(s + i) != 0xff)
+ return false;
+ return true;
+ }
+
public boolean valid(int s) {
public boolean valid(int s) {
- return AltosConvert.checksum(eeprom.data, s, length) == 0;
+ int ck = AltosConvert.checksum(eeprom.data, s, length);
+
+ if (ck != 0) {
+ ++eeprom.errors;
+ System.out.printf("invalid checksum 0x%x at 0x%x\n", ck, s);
+ return false;
+ }
+ return true;
}
public boolean valid() {
}
public boolean valid() {
@@
-65,49
+78,54
@@
public abstract class AltosEepromRecord implements Comparable<AltosEepromRecord>
return 1;
}
return 1;
}
+ public AltosConfigData config_data() {
+ return eeprom.config_data();
+ }
+
public int compareTo(AltosEepromRecord o) {
int cmd_diff = cmdi() - o.cmdi();
if (cmd_diff != 0)
return cmd_diff;
public int compareTo(AltosEepromRecord o) {
int cmd_diff = cmdi() - o.cmdi();
if (cmd_diff != 0)
return cmd_diff;
- int tick_diff =
tick() - o.tick()
;
+ int tick_diff =
wide_tick - o.wide_tick
;
if (tick_diff != 0)
return tick_diff;
return start - o.start;
}
if (tick_diff != 0)
return tick_diff;
return start - o.start;
}
- public void update_state(AltosState state) {
+ /* AltosDataProvider */
+ public void provide_data(AltosDataListener listener, AltosCalData cal_data) {
+ listener.set_tick(tick());
if (cmd() == AltosLib.AO_LOG_FLIGHT)
if (cmd() == AltosLib.AO_LOG_FLIGHT)
- state.set_boost_tick(tick());
- else
- state.set_tick(tick());
+ cal_data.set_boost_tick();
+ listener.set_time(cal_data.time());
+
+ /* Flush any pending GPS changes */
+ if (!AltosLib.is_gps_cmd(cmd())) {
+ AltosGPS gps = listener.temp_gps();
+ if (gps != null)
+ listener.set_gps(gps, true, true);
+ }
}
public int next_start() {
int s = start + length;
}
public int next_start() {
int s = start + length;
- while (s + length < eeprom.data.size()) {
- if (valid(s))
+ while (s + length <
=
eeprom.data.size()) {
+ if (
!empty(s) &&
valid(s))
return s;
s += length;
}
return -1;
}
return s;
s += length;
}
return -1;
}
- public boolean hasNext() {
- return next_start() >= 0;
- }
-
public abstract AltosEepromRecord next();
public abstract AltosEepromRecord next();
- public AltosEepromRecord(AltosEeprom
New
eeprom, int start, int length) {
+ public AltosEepromRecord(AltosEeprom eeprom, int start, int length) {
this.eeprom = eeprom;
this.start = start;
this.length = length;
this.eeprom = eeprom;
this.start = start;
this.length = length;
-
- while (start + length < eeprom.data.size() && !valid())
- start += length;
}
}
}
}