summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
d7ad490)
If the battery voltage report takes longer than the initialiation
sequence, we could get to the state reporting after the state had
switched from startup to idle. This would result in continuity being
reported the first time through the loop. Then, as the state had
already changed, we'd pass through the while test and go back to
report continuity a second time.
Fixed by using the state remembered before beeping out the voltage to
decide whether to report the continuity.
Signed-off-by: Keith Packard <keithp@keithp.com>
- ao_report_state = ao_flight_state;
+ ao_report_state = ao_flight_state;
- if (ao_flight_state == ao_flight_startup)
+ if (ao_report_state == ao_flight_startup)
ao_report_battery();
else
#endif
ao_report_beep();
ao_report_battery();
else
#endif
ao_report_beep();
- if (ao_flight_state == ao_flight_landed) {
+ if (ao_report_state == ao_flight_landed) {
ao_report_altitude();
#if HAS_FLIGHT
ao_delay(AO_SEC_TO_TICKS(5));
ao_report_altitude();
#if HAS_FLIGHT
ao_delay(AO_SEC_TO_TICKS(5));
#endif
}
#if HAS_IGNITE_REPORT
#endif
}
#if HAS_IGNITE_REPORT
- if (ao_flight_state == ao_flight_idle)
+ if (ao_report_state == ao_flight_idle)
ao_report_continuity();
while (ao_flight_state == ao_flight_pad) {
uint8_t c;
ao_report_continuity();
while (ao_flight_state == ao_flight_pad) {
uint8_t c;
pause(AO_MS_TO_TICKS(100));
}
#endif
pause(AO_MS_TO_TICKS(100));
}
#endif
while (ao_report_state == ao_flight_state)
ao_sleep(DATA_TO_XDATA(&ao_flight_state));
while (ao_report_state == ao_flight_state)
ao_sleep(DATA_TO_XDATA(&ao_flight_state));
- ao_report_state = ao_flight_state;