summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/kernel/ao_flight.c7
-rw-r--r--src/kernel/ao_flight.h1
-rw-r--r--src/kernel/ao_pyro.c8
3 files changed, 9 insertions, 7 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;
}
diff --git a/src/kernel/ao_flight.h b/src/kernel/ao_flight.h
index 6894fe59..005c7e84 100644
--- a/src/kernel/ao_flight.h
+++ b/src/kernel/ao_flight.h
@@ -40,6 +40,7 @@ enum ao_flight_state {
extern __pdata enum ao_flight_state ao_flight_state;
extern __pdata uint16_t ao_boost_tick;
+extern __pdata uint16_t ao_launch_tick;
extern __pdata uint16_t ao_motor_number;
#if HAS_IMU || HAS_MMA655X
diff --git a/src/kernel/ao_pyro.c b/src/kernel/ao_pyro.c
index 3c872354..527112ac 100644
--- a/src/kernel/ao_pyro.c
+++ b/src/kernel/ao_pyro.c
@@ -160,14 +160,14 @@ ao_pyro_ready(struct ao_pyro *pyro)
#endif
case ao_pyro_time_less:
- if ((int16_t) (ao_time() - ao_boost_tick) <= pyro->time_less)
+ if ((int16_t) (ao_time() - ao_launch_tick) <= pyro->time_less)
continue;
- DBG("time %d > %d\n", (int16_t)(ao_time() - ao_boost_tick), pyro->time_less);
+ DBG("time %d > %d\n", (int16_t)(ao_time() - ao_launch_tick), pyro->time_less);
break;
case ao_pyro_time_greater:
- if ((int16_t) (ao_time() - ao_boost_tick) >= pyro->time_greater)
+ if ((int16_t) (ao_time() - ao_launch_tick) >= pyro->time_greater)
continue;
- DBG("time %d < %d\n", (int16_t)(ao_time() - ao_boost_tick), pyro->time_greater);
+ DBG("time %d < %d\n", (int16_t)(ao_time() - ao_launch_tick), pyro->time_greater);
break;
case ao_pyro_ascending: