diff options
author | Keith Packard <keithp@keithp.com> | 2015-09-12 19:20:49 -0700 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2015-10-13 13:54:28 -0700 |
commit | 0afa07d3c1dcb5e301fcb8b4edfecdd961662478 (patch) | |
tree | bd0742a81d3ef60933358fa5151e5d49910cacbe /altosuilib | |
parent | 7064bc685aebeef07711e525dea4d5fbe33d235b (diff) |
altoslib: Hide 'state' member and use accessor function
Someone was smashing the state to 'landed' when no packets had been
received for a while. Found that by making it impossible for anyone
outside of AltosState to change the value.
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'altosuilib')
-rw-r--r-- | altosuilib/AltosDisplayThread.java | 32 | ||||
-rw-r--r-- | altosuilib/AltosGraphDataPoint.java | 2 |
2 files changed, 15 insertions, 19 deletions
diff --git a/altosuilib/AltosDisplayThread.java b/altosuilib/AltosDisplayThread.java index 73d85698..a773022b 100644 --- a/altosuilib/AltosDisplayThread.java +++ b/altosuilib/AltosDisplayThread.java @@ -78,7 +78,7 @@ public class AltosDisplayThread extends Thread { return; /* reset the landing count once we hear about a new flight */ - if (state.state < AltosLib.ao_flight_drogue) + if (state.state() < AltosLib.ao_flight_drogue) reported_landing = 0; /* Shut up once the rocket is on the ground */ @@ -87,8 +87,8 @@ public class AltosDisplayThread extends Thread { } /* If the rocket isn't on the pad, then report height */ - if (AltosLib.ao_flight_drogue <= state.state && - state.state < AltosLib.ao_flight_landed && + if (AltosLib.ao_flight_drogue <= state.state() && + state.state() < AltosLib.ao_flight_landed && state.from_pad != null && state.range >= 0) { @@ -99,7 +99,7 @@ public class AltosDisplayThread extends Thread { (int) (state.from_pad.bearing + 0.5), (int) (state.elevation + 0.5), AltosConvert.distance.say(state.range)); - } else if (state.state > AltosLib.ao_flight_pad && state.height() != AltosLib.MISSING) { + } else if (state.state() > AltosLib.ao_flight_pad && state.height() != AltosLib.MISSING) { voice.speak(AltosConvert.height.say_units(state.height())); } else { reported_landing = 0; @@ -109,11 +109,11 @@ public class AltosDisplayThread extends Thread { * either we've got a landed report or we haven't heard from it in * a long time */ - if (state.state != AltosLib.ao_flight_stateless && - state.state >= AltosLib.ao_flight_drogue && + if (state.state() != AltosLib.ao_flight_stateless && + state.state() >= AltosLib.ao_flight_drogue && (last || System.currentTimeMillis() - state.received_time >= 15000 || - state.state == AltosLib.ao_flight_landed)) + state.state() == AltosLib.ao_flight_landed)) { if (Math.abs(state.speed()) < 20 && state.height() < 100) voice.speak("rocket landed safely"); @@ -124,10 +124,6 @@ public class AltosDisplayThread extends Thread { (int) (state.from_pad.bearing + 0.5), AltosConvert.distance.say_units(state.from_pad.distance)); ++reported_landing; - if (state.state != AltosLib.ao_flight_landed) { - state.state = AltosLib.ao_flight_landed; - show_safely(); - } } } @@ -167,7 +163,7 @@ public class AltosDisplayThread extends Thread { } public synchronized void notice(boolean spoken) { - if (old_state != null && old_state.state != state.state) { + if (old_state != null && old_state.state() != state.state()) { report_time = now(); this.notify(); } else if (spoken) @@ -182,17 +178,17 @@ public class AltosDisplayThread extends Thread { synchronized boolean tell() { boolean ret = false; - if (old_state == null || old_state.state != state.state) { - if (state.state != AltosLib.ao_flight_stateless) + if (old_state == null || old_state.state() != state.state()) { + if (state.state() != AltosLib.ao_flight_stateless) voice.speak(state.state_name()); - if ((old_state == null || old_state.state <= AltosLib.ao_flight_boost) && - state.state > AltosLib.ao_flight_boost) { + if ((old_state == null || old_state.state() <= AltosLib.ao_flight_boost) && + state.state() > AltosLib.ao_flight_boost) { if (state.max_speed() != AltosLib.MISSING) voice.speak("max speed: %s.", AltosConvert.speed.say_units(state.max_speed() + 0.5)); ret = true; - } else if ((old_state == null || old_state.state < AltosLib.ao_flight_drogue) && - state.state >= AltosLib.ao_flight_drogue) { + } else if ((old_state == null || old_state.state() < AltosLib.ao_flight_drogue) && + state.state() >= AltosLib.ao_flight_drogue) { if (state.max_height() != AltosLib.MISSING) voice.speak("max height: %s.", AltosConvert.height.say_units(state.max_height() + 0.5)); diff --git a/altosuilib/AltosGraphDataPoint.java b/altosuilib/AltosGraphDataPoint.java index 30d436ae..ce76e906 100644 --- a/altosuilib/AltosGraphDataPoint.java +++ b/altosuilib/AltosGraphDataPoint.java @@ -217,7 +217,7 @@ public class AltosGraphDataPoint implements AltosUIDataPoint { public int id(int index) { if (index == data_state) { - int s = state.state; + int s = state.state(); if (AltosLib.ao_flight_boost <= s && s <= AltosLib.ao_flight_landed) return s; } else if (data_ignitor_fired_0 <= index && index <= data_ignitor_fired_max) { |