X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=micropeak%2FMicroStats.java;h=b9637536c0a3ca87212ee0d6262ce4ce9cbc088f;hp=056fac7d1d77d3538663cf79622819f7fafc9de9;hb=db12c17e9538bd82f2c2bf21357887ee7d894a1c;hpb=93d640de65a1ecedfef89c96521c21632f96f372 diff --git a/micropeak/MicroStats.java b/micropeak/MicroStats.java index 056fac7d..b9637536 100644 --- a/micropeak/MicroStats.java +++ b/micropeak/MicroStats.java @@ -3,7 +3,8 @@ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of @@ -18,8 +19,8 @@ package org.altusmetrum.micropeak; import java.io.*; -import org.altusmetrum.AltosLib.*; -import org.altusmetrum.altosuilib.*; +import org.altusmetrum.altoslib_11.*; +import org.altusmetrum.altosuilib_11.*; public class MicroStats { double coast_height; @@ -58,12 +59,17 @@ public class MicroStats { } void find_apogee() { - apogee_height = 0; + apogee_height = data.apogee_height(); + double searched_apogee = 0; apogee_time = 0; + /* This just finds the apogee time -- we've recorded the + * peak altitude separately in eeprom, and that could + * have occurred after the eeprom was full. + */ for (MicroDataPoint point : data.points()) { - if (point.height > apogee_height) { - apogee_height = point.height; + if (point.height > searched_apogee) { + searched_apogee = point.height; apogee_time = point.time; } } @@ -145,6 +151,43 @@ public class MicroStats { return descent_height() / descent_duration(); } + public static final int state_startup = -1; + public static final int state_pad = 0; + public static final int state_boost = 1; + public static final int state_coast = 2; + public static final int state_descent = 3; + public static final int state_landed = 4; + + static final String state_names[] = { + "pad", + "boost", + "coast", + "descent", + "landed" + }; + + public int state(double t) { + if (t >= landed_time) + return state_landed; + if (t >= apogee_time) + return state_descent; + if (t >= coast_time) + return state_coast; + if (t >= 0) + return state_boost; + return state_pad; + } + + public static String state_name(int state) { + if (state < 0 || state > state_landed) + return "unknown"; + return state_names[state]; + } + + public String state_name(double t) { + return state_name(state(t)); + } + public MicroStats(MicroData data) { this.data = data;