diff options
| -rw-r--r-- | altoslib/AltosFlightStats.java | 26 | ||||
| -rw-r--r-- | altosuilib/AltosFlightStatsTable.java | 6 | 
2 files changed, 19 insertions, 13 deletions
| diff --git a/altoslib/AltosFlightStats.java b/altoslib/AltosFlightStats.java index acac5c85..1c7d67e0 100644 --- a/altoslib/AltosFlightStats.java +++ b/altoslib/AltosFlightStats.java @@ -57,7 +57,7 @@ public class AltosFlightStats {  		}  		if (state == null) -			return 0; +			return AltosLib.MISSING;  		double	landed_height = state.height(); @@ -65,7 +65,7 @@ public class AltosFlightStats {  		boolean	above = true; -		double	landed_time = -1000; +		double	landed_time = AltosLib.MISSING;  		for (AltosState s : states) {  			state = s; @@ -73,14 +73,12 @@ public class AltosFlightStats {  			if (state.height() > landed_height + 10) {  				above = true;  			} else { -				if (above && state.height() < landed_height + 2) { +				if (above && Math.abs(state.height() - landed_height) < 2) {  					above = false;  					landed_time = state.time;  				}  			}  		} -		if (landed_time == -1000) -			landed_time = state.time;  		return landed_time;  	} @@ -96,10 +94,8 @@ public class AltosFlightStats {  				break;  		}  		if (state == null) -			return 0; +			return AltosLib.MISSING; -		if (boost_time == AltosLib.MISSING) -			boost_time = state.time;  		return boost_time;  	} @@ -122,6 +118,13 @@ public class AltosFlightStats {  		has_imu = false;  		has_mag = false;  		has_orient = false; + +		for (int s = AltosLib.ao_flight_startup; s <= AltosLib.ao_flight_landed; s++) { +			state_count[s] = 0; +			state_speed[s] = 0.0; +			state_accel[s] = 0.0; +		} +  		for (AltosState state : states) {  			if (serial == AltosLib.MISSING && state.serial != AltosLib.MISSING)  				serial = state.serial; @@ -139,10 +142,13 @@ public class AltosFlightStats {  				has_flight_data = true;  			int state_id = state.state(); -			if (state.time >= boost_time && state_id < AltosLib.ao_flight_boost) +			if (boost_time != AltosLib.MISSING && state.time >= boost_time && state_id < AltosLib.ao_flight_boost) {  				state_id = AltosLib.ao_flight_boost; -			if (state.time >= landed_time && state_id < AltosLib.ao_flight_landed) +			} +			if (landed_time != AltosLib.MISSING && state.time >= landed_time && state_id < AltosLib.ao_flight_landed) {  				state_id = AltosLib.ao_flight_landed; +			} +  			if (state.gps != null && state.gps.locked) {  				year = state.gps.year;  				month = state.gps.month; diff --git a/altosuilib/AltosFlightStatsTable.java b/altosuilib/AltosFlightStatsTable.java index 2fb8a1ae..6171f61a 100644 --- a/altosuilib/AltosFlightStatsTable.java +++ b/altosuilib/AltosFlightStatsTable.java @@ -117,18 +117,18 @@ public class AltosFlightStatsTable extends JComponent implements AltosFontListen  		}  		new FlightStat(layout, y++, "Maximum speed",  			       String.format("%5.0f m/s", stats.max_speed), -			       String.format("%5.0f mph", AltosConvert.meters_to_mph(stats.max_speed)), +			       String.format("%5.0f fps", AltosConvert.mps_to_fps(stats.max_speed)),  			       String.format("Mach %4.1f", AltosConvert.meters_to_mach(stats.max_speed))); -		if (stats.max_acceleration != AltosLib.MISSING) { +		if (stats.max_acceleration != AltosLib.MISSING)  			new FlightStat(layout, y++, "Maximum boost acceleration",  				       String.format("%5.0f m/s²", stats.max_acceleration),  				       String.format("%5.0f ft/s²", AltosConvert.meters_to_feet(stats.max_acceleration)),  				       String.format("%5.0f G", AltosConvert.meters_to_g(stats.max_acceleration))); +		if (stats.state_accel[AltosLib.ao_flight_boost] != AltosLib.MISSING)  			new FlightStat(layout, y++, "Average boost acceleration",  				       String.format("%5.0f m/s²", stats.state_accel[AltosLib.ao_flight_boost]),  				       String.format("%5.0f ft/s²", AltosConvert.meters_to_feet(stats.state_accel[AltosLib.ao_flight_boost])),  				       String.format("%5.0f G", AltosConvert.meters_to_g(stats.state_accel[AltosLib.ao_flight_boost]))); -		}  		if (stats.state_speed[AltosLib.ao_flight_drogue] != AltosLib.MISSING)  			new FlightStat(layout, y++, "Drogue descent rate",  				       String.format("%5.0f m/s", stats.state_speed[AltosLib.ao_flight_drogue]), | 
