summaryrefslogtreecommitdiff
path: root/micropeak
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2014-07-06 12:35:13 -0700
committerKeith Packard <keithp@keithp.com>2014-07-06 12:36:27 -0700
commitd1527a5457210eb914312cf8857bfb88982a8462 (patch)
treed11aefba40692dfb08e48bceffca8d74f0b412fb /micropeak
parentf02cc3eec53e9d703837dad55ec2e6625b192588 (diff)
Add support for the "kite" micropeak variant
This uses a 100m 'launch detect' altitude and logs data every 19.2s instead of every .192s. Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'micropeak')
-rw-r--r--micropeak/MicroData.java26
-rw-r--r--micropeak/MicroPeak.java4
2 files changed, 23 insertions, 7 deletions
diff --git a/micropeak/MicroData.java b/micropeak/MicroData.java
index 6c9447aa..c38ada91 100644
--- a/micropeak/MicroData.java
+++ b/micropeak/MicroData.java
@@ -97,9 +97,15 @@ public class MicroData implements AltosUIDataSet {
private double time_step;
private double ground_altitude;
private ArrayList<Integer> bytes;
+ public int log_id;
String name;
MicroStats stats;
-
+
+ public static final int LOG_ID_MICROPEAK = 0;
+ public static final int LOG_ID_MICROKITE = 1;
+
+ public static final double CLOCK = 0.096;
+
public class FileEndedException extends Exception {
}
@@ -172,7 +178,7 @@ public class MicroData implements AltosUIDataSet {
if (get_nonwhite(f) == 'M' && get_nonwhite(f) == 'P')
return true;
}
- }
+ }
private int get_32(InputStream f) throws IOException, FileEndedException, NonHexcharException {
int v = 0;
@@ -345,6 +351,9 @@ public class MicroData implements AltosUIDataSet {
ground_pressure = get_32(f);
min_pressure = get_32(f);
int nsamples = get_16(f);
+
+ log_id = nsamples >> 12;
+ nsamples &= 0xfff;
pressures = new int[nsamples + 1];
ground_altitude = AltosConvert.pressure_to_altitude(ground_pressure);
@@ -367,7 +376,7 @@ public class MicroData implements AltosUIDataSet {
else
cur = down;
}
-
+
pressures[i+1] = cur;
}
@@ -376,7 +385,14 @@ public class MicroData implements AltosUIDataSet {
crc_valid = crc == current_crc;
- time_step = 0.192;
+ switch (log_id) {
+ case LOG_ID_MICROPEAK:
+ time_step = 2 * CLOCK;
+ break;
+ case LOG_ID_MICROKITE:
+ time_step = 200 * CLOCK;
+ break;
+ }
stats = new MicroStats(this);
} catch (FileEndedException fe) {
throw new IOException("File Ended Unexpectedly");
@@ -389,5 +405,5 @@ public class MicroData implements AltosUIDataSet {
pressures = new int[1];
pressures[0] = 101000;
}
-
+
}
diff --git a/micropeak/MicroPeak.java b/micropeak/MicroPeak.java
index 8bdf4b77..1744e803 100644
--- a/micropeak/MicroPeak.java
+++ b/micropeak/MicroPeak.java
@@ -107,7 +107,7 @@ public class MicroPeak extends MicroFrame implements ActionListener, ItemListene
private void DownloadData() {
AltosDevice device = MicroDeviceDialog.show(this);
-
+
if (device != null)
new MicroDownload(this, device);
}
@@ -128,7 +128,7 @@ public class MicroPeak extends MicroFrame implements ActionListener, ItemListene
if (save.runDialog())
SetName(data.name);
}
-
+
private void Export() {
if (data == null) {
no_data();