summaryrefslogtreecommitdiff
path: root/src/kernel/ao_flight.c
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2018-08-05 11:09:34 +0800
committerKeith Packard <keithp@keithp.com>2018-08-05 11:13:42 +0800
commit0d57c78dde3c6e61576a4769b0e0fae7e88c107d (patch)
tree55b15b996575fe8c934ebfb16426c8e95425e2cf /src/kernel/ao_flight.c
parent9dfbf0103a649816e98d5511b1d6bbbfc93f6632 (diff)
altos: Add separate 'ao_launch_tick'. Use in pyro and lockout.
Prior to this, there was only ao_boost_tick, which got reset at each motor burn start. That meant there wasn't any way to measure total flight time for pyro channels and 'apogee lockout' was based on time since most recent motor start instead of total flight time. Now pyro channels and apogee lockout both use total flight time, while motor burn length still uses time since most recent motor burn start (as it should). Docs and UI updated to use 'launch' instead of 'boost' to try and make the change clear. Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src/kernel/ao_flight.c')
-rw-r--r--src/kernel/ao_flight.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/kernel/ao_flight.c b/src/kernel/ao_flight.c
index 7b3cb9fa..c2700d20 100644
--- a/src/kernel/ao_flight.c
+++ b/src/kernel/ao_flight.c
@@ -48,7 +48,8 @@
/* Main flight thread. */
__pdata enum ao_flight_state ao_flight_state; /* current flight state */
-__pdata uint16_t ao_boost_tick; /* time of launch detect */
+__pdata uint16_t ao_boost_tick; /* time of most recent boost detect */
+__pdata uint16_t ao_launch_tick; /* time of first boost detect */
__pdata uint16_t ao_motor_number; /* number of motors burned so far */
#if HAS_SENSOR_ERRORS
@@ -199,7 +200,7 @@ ao_flight(void)
)
{
ao_flight_state = ao_flight_boost;
- ao_boost_tick = ao_sample_tick;
+ ao_launch_tick = ao_boost_tick = ao_sample_tick;
/* start logging data */
ao_log_start();
@@ -269,7 +270,7 @@ ao_flight(void)
* number of seconds.
*/
if (ao_config.apogee_lockout) {
- if ((int16_t) (ao_sample_tick - ao_boost_tick) <
+ if ((int16_t) (ao_sample_tick - ao_launch_tick) <
AO_SEC_TO_TICKS(ao_config.apogee_lockout))
break;
}