summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2012-01-02 20:57:57 -0800
committerKeith Packard <keithp@keithp.com>2012-01-02 20:57:57 -0800
commit2a9d7de8095c822031b6e2b5fa0276ceda6af57d (patch)
tree94869a8f7707fbbfc8393f6242c861252068dc3a
parent2a37f152720d9fafcb7066c08aa5f3362eb0181f (diff)
altosui: Move eeprom managment code to library
Signed-off-by: Keith Packard <keithp@keithp.com>
-rw-r--r--altosui/Makefile.am2
-rw-r--r--altosui/altoslib/Makefile.am2
-rw-r--r--altosui/altoslib/src/org/altusmetrum/AltosLib/AltosEepromIterable.java (renamed from altosui/AltosEepromIterable.java)118
-rw-r--r--altosui/altoslib/src/org/altusmetrum/AltosLib/AltosEepromRecord.java (renamed from altosui/AltosEepromRecord.java)46
4 files changed, 77 insertions, 91 deletions
diff --git a/altosui/Makefile.am b/altosui/Makefile.am
index 1a5275b1..d3f038ca 100644
--- a/altosui/Makefile.am
+++ b/altosui/Makefile.am
@@ -39,8 +39,6 @@ altosui_JAVA = \
AltosEepromLog.java \
AltosEepromManage.java \
AltosEepromMonitor.java \
- AltosEepromIterable.java \
- AltosEepromRecord.java \
AltosEepromTeleScience.java \
AltosEepromSelect.java \
AltosFile.java \
diff --git a/altosui/altoslib/Makefile.am b/altosui/altoslib/Makefile.am
index cce9b4c4..ad4d2d98 100644
--- a/altosui/altoslib/Makefile.am
+++ b/altosui/altoslib/Makefile.am
@@ -15,6 +15,8 @@ AltosLib_JAVA = \
$(SRC)/AltosConvert.java \
$(SRC)/AltosCRCException.java \
$(SRC)/AltosEepromChunk.java \
+ $(SRC)/AltosEepromIterable.java \
+ $(SRC)/AltosEepromRecord.java \
$(SRC)/AltosFrequency.java \
$(SRC)/AltosGPS.java \
$(SRC)/AltosGPSSat.java \
diff --git a/altosui/AltosEepromIterable.java b/altosui/altoslib/src/org/altusmetrum/AltosLib/AltosEepromIterable.java
index c944c527..4e5c0b7b 100644
--- a/altosui/AltosEepromIterable.java
+++ b/altosui/altoslib/src/org/altusmetrum/AltosLib/AltosEepromIterable.java
@@ -15,19 +15,13 @@
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
*/
-package altosui;
+package org.altusmetrum.AltosLib;
-import java.awt.*;
-import java.awt.event.*;
-import javax.swing.*;
-import javax.swing.filechooser.FileNameExtensionFilter;
-import javax.swing.table.*;
import java.io.*;
import java.util.*;
import java.text.*;
import java.util.prefs.*;
import java.util.concurrent.LinkedBlockingQueue;
-import org.altusmetrum.AltosLib.*;
/*
* AltosRecords with an index field so they can be sorted by tick while preserving
@@ -112,17 +106,17 @@ public class AltosEepromIterable extends AltosRecordIterable {
void update_state(AltosRecord state, AltosEepromRecord record, EepromState eeprom) {
state.tick = record.tick;
switch (record.cmd) {
- case Altos.AO_LOG_FLIGHT:
+ case AltosLib.AO_LOG_FLIGHT:
eeprom.seen |= seen_flight;
state.ground_accel = record.a;
state.flight_accel = record.a;
state.flight = record.b;
eeprom.boost_tick = record.tick;
break;
- case Altos.AO_LOG_SENSOR:
+ case AltosLib.AO_LOG_SENSOR:
state.accel = record.a;
state.pres = record.b;
- if (state.state < Altos.ao_flight_boost) {
+ if (state.state < AltosLib.ao_flight_boost) {
eeprom.n_pad_samples++;
eeprom.ground_pres += state.pres;
state.ground_pres = (int) (eeprom.ground_pres / eeprom.n_pad_samples);
@@ -135,7 +129,7 @@ public class AltosEepromIterable extends AltosRecordIterable {
eeprom.seen |= seen_sensor;
has_accel = true;
break;
- case Altos.AO_LOG_PRESSURE:
+ case AltosLib.AO_LOG_PRESSURE:
state.pres = record.b;
state.flight_pres = state.pres;
if (eeprom.n_pad_samples == 0) {
@@ -144,21 +138,21 @@ public class AltosEepromIterable extends AltosRecordIterable {
}
eeprom.seen |= seen_sensor;
break;
- case Altos.AO_LOG_TEMP_VOLT:
+ case AltosLib.AO_LOG_TEMP_VOLT:
state.temp = record.a;
state.batt = record.b;
eeprom.seen |= seen_temp_volt;
break;
- case Altos.AO_LOG_DEPLOY:
+ case AltosLib.AO_LOG_DEPLOY:
state.drogue = record.a;
state.main = record.b;
eeprom.seen |= seen_deploy;
has_ignite = true;
break;
- case Altos.AO_LOG_STATE:
+ case AltosLib.AO_LOG_STATE:
state.state = record.a;
break;
- case Altos.AO_LOG_GPS_TIME:
+ case AltosLib.AO_LOG_GPS_TIME:
eeprom.gps_tick = state.tick;
AltosGPS old = state.gps;
state.gps = new AltosGPS();
@@ -174,62 +168,62 @@ public class AltosEepromIterable extends AltosRecordIterable {
state.gps.second = (record.b & 0xff);
int flags = (record.b >> 8);
- state.gps.connected = (flags & Altos.AO_GPS_RUNNING) != 0;
- state.gps.locked = (flags & Altos.AO_GPS_VALID) != 0;
- state.gps.nsat = (flags & Altos.AO_GPS_NUM_SAT_MASK) >>
- Altos.AO_GPS_NUM_SAT_SHIFT;
+ state.gps.connected = (flags & AltosLib.AO_GPS_RUNNING) != 0;
+ state.gps.locked = (flags & AltosLib.AO_GPS_VALID) != 0;
+ state.gps.nsat = (flags & AltosLib.AO_GPS_NUM_SAT_MASK) >>
+ AltosLib.AO_GPS_NUM_SAT_SHIFT;
state.new_gps = true;
has_gps = true;
break;
- case Altos.AO_LOG_GPS_LAT:
+ case AltosLib.AO_LOG_GPS_LAT:
int lat32 = record.a | (record.b << 16);
state.gps.lat = (double) lat32 / 1e7;
break;
- case Altos.AO_LOG_GPS_LON:
+ case AltosLib.AO_LOG_GPS_LON:
int lon32 = record.a | (record.b << 16);
state.gps.lon = (double) lon32 / 1e7;
break;
- case Altos.AO_LOG_GPS_ALT:
+ case AltosLib.AO_LOG_GPS_ALT:
state.gps.alt = record.a;
break;
- case Altos.AO_LOG_GPS_SAT:
+ case AltosLib.AO_LOG_GPS_SAT:
if (state.tick == eeprom.gps_tick) {
int svid = record.a;
int c_n0 = record.b >> 8;
state.gps.add_sat(svid, c_n0);
}
break;
- case Altos.AO_LOG_GPS_DATE:
+ case AltosLib.AO_LOG_GPS_DATE:
state.gps.year = (record.a & 0xff) + 2000;
state.gps.month = record.a >> 8;
state.gps.day = record.b & 0xff;
break;
- case Altos.AO_LOG_CONFIG_VERSION:
+ case AltosLib.AO_LOG_CONFIG_VERSION:
break;
- case Altos.AO_LOG_MAIN_DEPLOY:
+ case AltosLib.AO_LOG_MAIN_DEPLOY:
break;
- case Altos.AO_LOG_APOGEE_DELAY:
+ case AltosLib.AO_LOG_APOGEE_DELAY:
break;
- case Altos.AO_LOG_RADIO_CHANNEL:
+ case AltosLib.AO_LOG_RADIO_CHANNEL:
break;
- case Altos.AO_LOG_CALLSIGN:
+ case AltosLib.AO_LOG_CALLSIGN:
state.callsign = record.data;
break;
- case Altos.AO_LOG_ACCEL_CAL:
+ case AltosLib.AO_LOG_ACCEL_CAL:
state.accel_plus_g = record.a;
state.accel_minus_g = record.b;
break;
- case Altos.AO_LOG_RADIO_CAL:
+ case AltosLib.AO_LOG_RADIO_CAL:
break;
- case Altos.AO_LOG_MANUFACTURER:
+ case AltosLib.AO_LOG_MANUFACTURER:
break;
- case Altos.AO_LOG_PRODUCT:
+ case AltosLib.AO_LOG_PRODUCT:
break;
- case Altos.AO_LOG_SERIAL_NUMBER:
+ case AltosLib.AO_LOG_SERIAL_NUMBER:
state.serial = record.a;
break;
- case Altos.AO_LOG_SOFTWARE_VERSION:
+ case AltosLib.AO_LOG_SOFTWARE_VERSION:
break;
}
state.seen |= eeprom.seen;
@@ -243,7 +237,7 @@ public class AltosEepromIterable extends AltosRecordIterable {
boolean last_reported = false;
EepromState eeprom = new EepromState();
- state.state = Altos.ao_flight_pad;
+ state.state = AltosLib.ao_flight_pad;
state.accel_plus_g = 15758;
state.accel_minus_g = 16294;
@@ -284,40 +278,40 @@ public class AltosEepromIterable extends AltosRecordIterable {
while (iterator.hasNext()) {
AltosOrderedRecord record = iterator.next();
switch (record.cmd) {
- case Altos.AO_LOG_CONFIG_VERSION:
+ case AltosLib.AO_LOG_CONFIG_VERSION:
out.printf("# Config version: %s\n", record.data);
break;
- case Altos.AO_LOG_MAIN_DEPLOY:
+ case AltosLib.AO_LOG_MAIN_DEPLOY:
out.printf("# Main deploy: %s\n", record.a);
break;
- case Altos.AO_LOG_APOGEE_DELAY:
+ case AltosLib.AO_LOG_APOGEE_DELAY:
out.printf("# Apogee delay: %s\n", record.a);
break;
- case Altos.AO_LOG_RADIO_CHANNEL:
+ case AltosLib.AO_LOG_RADIO_CHANNEL:
out.printf("# Radio channel: %s\n", record.a);
break;
- case Altos.AO_LOG_CALLSIGN:
+ case AltosLib.AO_LOG_CALLSIGN:
out.printf("# Callsign: %s\n", record.data);
break;
- case Altos.AO_LOG_ACCEL_CAL:
+ case AltosLib.AO_LOG_ACCEL_CAL:
out.printf ("# Accel cal: %d %d\n", record.a, record.b);
break;
- case Altos.AO_LOG_RADIO_CAL:
+ case AltosLib.AO_LOG_RADIO_CAL:
out.printf ("# Radio cal: %d\n", record.a);
break;
- case Altos.AO_LOG_MAX_FLIGHT_LOG:
+ case AltosLib.AO_LOG_MAX_FLIGHT_LOG:
out.printf ("# Max flight log: %d\n", record.a);
break;
- case Altos.AO_LOG_MANUFACTURER:
+ case AltosLib.AO_LOG_MANUFACTURER:
out.printf ("# Manufacturer: %s\n", record.data);
break;
- case Altos.AO_LOG_PRODUCT:
+ case AltosLib.AO_LOG_PRODUCT:
out.printf ("# Product: %s\n", record.data);
break;
- case Altos.AO_LOG_SERIAL_NUMBER:
+ case AltosLib.AO_LOG_SERIAL_NUMBER:
out.printf ("# Serial number: %d\n", record.a);
break;
- case Altos.AO_LOG_SOFTWARE_VERSION:
+ case AltosLib.AO_LOG_SOFTWARE_VERSION:
out.printf ("# Software version: %s\n", record.data);
break;
}
@@ -340,10 +334,10 @@ public class AltosEepromIterable extends AltosRecordIterable {
int seconds = hour * 3600 + minute * 60 + second;
/* Make sure this looks like a good GPS value */
- if ((flags & Altos.AO_GPS_NUM_SAT_MASK) >> Altos.AO_GPS_NUM_SAT_SHIFT < 4)
- flags = (flags & ~Altos.AO_GPS_NUM_SAT_MASK) | (4 << Altos.AO_GPS_NUM_SAT_SHIFT);
- flags |= Altos.AO_GPS_RUNNING;
- flags |= Altos.AO_GPS_VALID;
+ if ((flags & AltosLib.AO_GPS_NUM_SAT_MASK) >> AltosLib.AO_GPS_NUM_SAT_SHIFT < 4)
+ flags = (flags & ~AltosLib.AO_GPS_NUM_SAT_MASK) | (4 << AltosLib.AO_GPS_NUM_SAT_SHIFT);
+ flags |= AltosLib.AO_GPS_RUNNING;
+ flags |= AltosLib.AO_GPS_VALID;
int new_seconds = seconds + diff;
if (new_seconds < 0)
@@ -383,12 +377,12 @@ public class AltosEepromIterable extends AltosRecordIterable {
AltosOrderedRecord record = new AltosOrderedRecord(line, index++, prev_tick, prev_tick_valid);
if (record == null)
break;
- if (record.cmd == Altos.AO_LOG_INVALID)
+ if (record.cmd == AltosLib.AO_LOG_INVALID)
continue;
prev_tick = record.tick;
- if (record.cmd < Altos.AO_LOG_CONFIG_VERSION)
+ if (record.cmd < AltosLib.AO_LOG_CONFIG_VERSION)
prev_tick_valid = true;
- if (record.cmd == Altos.AO_LOG_FLIGHT) {
+ if (record.cmd == AltosLib.AO_LOG_FLIGHT) {
flight_record = record;
continue;
}
@@ -399,19 +393,19 @@ public class AltosEepromIterable extends AltosRecordIterable {
* record. Detect the loss of the GPS date and fix up the
* missing time records
*/
- if (record.cmd == Altos.AO_LOG_GPS_DATE) {
+ if (record.cmd == AltosLib.AO_LOG_GPS_DATE) {
gps_date_record = record;
continue;
}
/* go back and fix up any missing time values */
- if (record.cmd == Altos.AO_LOG_GPS_TIME) {
+ if (record.cmd == AltosLib.AO_LOG_GPS_TIME) {
last_gps_time = record;
if (missing_time) {
Iterator<AltosOrderedRecord> iterator = records.iterator();
while (iterator.hasNext()) {
AltosOrderedRecord old = iterator.next();
- if (old.cmd == Altos.AO_LOG_GPS_TIME &&
+ if (old.cmd == AltosLib.AO_LOG_GPS_TIME &&
old.a == -1 && old.b == -1)
{
update_time(record, old);
@@ -421,9 +415,9 @@ public class AltosEepromIterable extends AltosRecordIterable {
}
}
- if (record.cmd == Altos.AO_LOG_GPS_LAT) {
+ if (record.cmd == AltosLib.AO_LOG_GPS_LAT) {
if (last_gps_time == null || last_gps_time.tick != record.tick) {
- AltosOrderedRecord add_gps_time = new AltosOrderedRecord(Altos.AO_LOG_GPS_TIME,
+ AltosOrderedRecord add_gps_time = new AltosOrderedRecord(AltosLib.AO_LOG_GPS_TIME,
record.tick,
-1, -1, index-1);
if (last_gps_time != null)
@@ -438,8 +432,8 @@ public class AltosEepromIterable extends AltosRecordIterable {
records.add(record);
/* Bail after reading the 'landed' record; we're all done */
- if (record.cmd == Altos.AO_LOG_STATE &&
- record.a == Altos.ao_flight_landed)
+ if (record.cmd == AltosLib.AO_LOG_STATE &&
+ record.a == AltosLib.ao_flight_landed)
break;
}
} catch (IOException io) {
diff --git a/altosui/AltosEepromRecord.java b/altosui/altoslib/src/org/altusmetrum/AltosLib/AltosEepromRecord.java
index ea003a1e..b2f23c52 100644
--- a/altosui/AltosEepromRecord.java
+++ b/altosui/altoslib/src/org/altusmetrum/AltosLib/AltosEepromRecord.java
@@ -15,21 +15,13 @@
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
*/
-package altosui;
+package org.altusmetrum.AltosLib;
-import java.awt.*;
-import java.awt.event.*;
-import javax.swing.*;
-import javax.swing.filechooser.FileNameExtensionFilter;
-import javax.swing.table.*;
import java.io.*;
import java.util.*;
import java.text.*;
import java.util.prefs.*;
import java.util.concurrent.*;
-import org.altusmetrum.AltosLib.*;
-
-import libaltosJNI.*;
public class AltosEepromRecord {
public int cmd;
@@ -52,7 +44,7 @@ public class AltosEepromRecord {
throw new ParseException(String.format("invalid checksum at 0x%x",
chunk.address + start), 0);
} else {
- cmd = Altos.AO_LOG_INVALID;
+ cmd = AltosLib.AO_LOG_INVALID;
}
tick = chunk.data16(start + 2);
@@ -69,7 +61,7 @@ public class AltosEepromRecord {
b = 0;
data = null;
if (line == null) {
- cmd = Altos.AO_LOG_INVALID;
+ cmd = AltosLib.AO_LOG_INVALID;
data = "";
} else {
try {
@@ -77,7 +69,7 @@ public class AltosEepromRecord {
if (tokens[0].length() == 1) {
if (tokens.length != 4) {
- cmd = Altos.AO_LOG_INVALID;
+ cmd = AltosLib.AO_LOG_INVALID;
data = line;
} else {
cmd = tokens[0].codePointAt(0);
@@ -87,51 +79,51 @@ public class AltosEepromRecord {
b = Integer.parseInt(tokens[3],16);
}
} else if (tokens[0].equals("Config") && tokens[1].equals("version:")) {
- cmd = Altos.AO_LOG_CONFIG_VERSION;
+ cmd = AltosLib.AO_LOG_CONFIG_VERSION;
data = tokens[2];
} else if (tokens[0].equals("Main") && tokens[1].equals("deploy:")) {
- cmd = Altos.AO_LOG_MAIN_DEPLOY;
+ cmd = AltosLib.AO_LOG_MAIN_DEPLOY;
a = Integer.parseInt(tokens[2]);
} else if (tokens[0].equals("Apogee") && tokens[1].equals("delay:")) {
- cmd = Altos.AO_LOG_APOGEE_DELAY;
+ cmd = AltosLib.AO_LOG_APOGEE_DELAY;
a = Integer.parseInt(tokens[2]);
} else if (tokens[0].equals("Radio") && tokens[1].equals("channel:")) {
- cmd = Altos.AO_LOG_RADIO_CHANNEL;
+ cmd = AltosLib.AO_LOG_RADIO_CHANNEL;
a = Integer.parseInt(tokens[2]);
} else if (tokens[0].equals("Callsign:")) {
- cmd = Altos.AO_LOG_CALLSIGN;
+ cmd = AltosLib.AO_LOG_CALLSIGN;
data = tokens[1].replaceAll("\"","");
} else if (tokens[0].equals("Accel") && tokens[1].equals("cal")) {
- cmd = Altos.AO_LOG_ACCEL_CAL;
+ cmd = AltosLib.AO_LOG_ACCEL_CAL;
a = Integer.parseInt(tokens[3]);
b = Integer.parseInt(tokens[5]);
} else if (tokens[0].equals("Radio") && tokens[1].equals("cal:")) {
- cmd = Altos.AO_LOG_RADIO_CAL;
+ cmd = AltosLib.AO_LOG_RADIO_CAL;
a = Integer.parseInt(tokens[2]);
} else if (tokens[0].equals("Max") && tokens[1].equals("flight") && tokens[2].equals("log:")) {
- cmd = Altos.AO_LOG_MAX_FLIGHT_LOG;
+ cmd = AltosLib.AO_LOG_MAX_FLIGHT_LOG;
a = Integer.parseInt(tokens[3]);
} else if (tokens[0].equals("manufacturer")) {
- cmd = Altos.AO_LOG_MANUFACTURER;
+ cmd = AltosLib.AO_LOG_MANUFACTURER;
data = tokens[1];
} else if (tokens[0].equals("product")) {
- cmd = Altos.AO_LOG_PRODUCT;
+ cmd = AltosLib.AO_LOG_PRODUCT;
data = tokens[1];
} else if (tokens[0].equals("serial-number")) {
- cmd = Altos.AO_LOG_SERIAL_NUMBER;
+ cmd = AltosLib.AO_LOG_SERIAL_NUMBER;
a = Integer.parseInt(tokens[1]);
} else if (tokens[0].equals("log-format")) {
- cmd = Altos.AO_LOG_LOG_FORMAT;
+ cmd = AltosLib.AO_LOG_LOG_FORMAT;
a = Integer.parseInt(tokens[1]);
} else if (tokens[0].equals("software-version")) {
- cmd = Altos.AO_LOG_SOFTWARE_VERSION;
+ cmd = AltosLib.AO_LOG_SOFTWARE_VERSION;
data = tokens[1];
} else {
- cmd = Altos.AO_LOG_INVALID;
+ cmd = AltosLib.AO_LOG_INVALID;
data = line;
}
} catch (NumberFormatException ne) {
- cmd = Altos.AO_LOG_INVALID;
+ cmd = AltosLib.AO_LOG_INVALID;
data = line;
}
}