From: Keith Packard Date: Fri, 28 Jan 2022 22:50:58 +0000 (-0800) Subject: ao_flight: ao_interval_end type was too small, could cause premature landing state X-Git-Tag: 1.9.10.4~32 X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=commitdiff_plain;h=7917ec1f105f39799acbea0f4c28d25db4f66eb4 ao_flight: ao_interval_end type was too small, could cause premature landing state ao_interval_end is used to provide a window of time during which the max/min values for sensors are measured. After that time expires, those bounds are compared to see if the airframe has been stable and should be moved to landing state. With a type that is too small, that could happen immediately after transitioning to main (for baro-enabled devices) or coast (for accel-only devices). For baro devices, this would disable any redundant main firing events. For accel-only devices, this could disable all events occuring after coast, including firing separation charges or motor igniters. There are also a couple of additional changes to reduce -Wconversion messages. Signed-off-by: Keith Packard --- diff --git a/src/kernel/ao_flight.c b/src/kernel/ao_flight.c index 8553ccc5..cee8b2b8 100644 --- a/src/kernel/ao_flight.c +++ b/src/kernel/ao_flight.c @@ -63,7 +63,7 @@ uint8_t ao_sensor_errors; * track min/max data over a long interval to detect * resting */ -static uint16_t ao_interval_end; +static AO_TICK_TYPE ao_interval_end; #ifdef HAS_BARO static ao_v_t ao_interval_min_height; static ao_v_t ao_interval_max_height; @@ -272,7 +272,7 @@ ao_flight(void) * (15 seconds) has past. */ if ((ao_accel < AO_MSS_TO_ACCEL(-2.5)) || - (AO_TICK_SIGNED) (ao_sample_tick - ao_boost_tick) > BOOST_TICKS_MAX) + (AO_TICK_SIGNED) (ao_sample_tick - ao_boost_tick) > (AO_TICK_SIGNED) BOOST_TICKS_MAX) { #if HAS_ACCEL #if HAS_BARO @@ -320,7 +320,7 @@ ao_flight(void) */ if (ao_config.apogee_lockout) { if ((AO_TICK_SIGNED) (ao_sample_tick - ao_launch_tick) < - AO_SEC_TO_TICKS(ao_config.apogee_lockout)) + (AO_TICK_SIGNED) AO_SEC_TO_TICKS(ao_config.apogee_lockout)) break; }