diff options
| author | Keith Packard <keithp@keithp.com> | 2012-04-14 12:02:14 -0700 | 
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2012-04-14 14:04:29 -0700 | 
| commit | 6cb744e305116a738b5d71686c6748f6f08c12ea (patch) | |
| tree | 536b510332adb5dd93f99c8c06b33a18b038d832 /src | |
| parent | 9a8fec1b6d8f3346f988882ffb03d7d0e45b3c81 (diff) | |
altos: Respect apogee lockout time in flight algorithm
This prevents any apogee detection from occurring until the specified
number of seconds after boost. This also prevents the switch from
accel+baro to baro only mode in the Kalman filter.
The test frame work is also changed to look for Apogee lockout: in the
eeprom input file.
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/ao_flight.c | 11 | ||||
| -rw-r--r-- | src/test/ao_flight_test.c | 4 | 
2 files changed, 15 insertions, 0 deletions
diff --git a/src/core/ao_flight.c b/src/core/ao_flight.c index 5e194638..494e656d 100644 --- a/src/core/ao_flight.c +++ b/src/core/ao_flight.c @@ -223,6 +223,17 @@ ao_flight(void)  #endif  		case ao_flight_coast: +			/* +			 * By customer request - allow the user +			 * to lock out apogee detection for a specified +			 * number of seconds. +			 */ +			if (ao_config.apogee_lockout) { +				if ((ao_sample_tick - ao_boost_tick) < +				    AO_SEC_TO_TICKS(ao_config.apogee_lockout)) +					break; +			} +  			/* apogee detect: coast to drogue deploy:  			 *  			 * speed: < 0 diff --git a/src/test/ao_flight_test.c b/src/test/ao_flight_test.c index 921d44e7..4a8625cf 100644 --- a/src/test/ao_flight_test.c +++ b/src/test/ao_flight_test.c @@ -184,6 +184,7 @@ struct ao_config {  	int16_t		accel_plus_g;  	int16_t		accel_minus_g;  	uint8_t		pad_orientation; +	uint16_t	apogee_lockout;  };  #define AO_PAD_ORIENTATION_ANTENNA_UP	0 @@ -523,6 +524,9 @@ ao_sleep(void *wchan)  				ao_config.accel_minus_g = atoi(words[5]);  			} else if (nword >= 4 && strcmp(words[0], "Main") == 0) {  				ao_config.main_deploy = atoi(words[2]); +			} else if (nword >= 3 && strcmp(words[0], "Apogee") == 0 && +				   strcmp(words[1], "lockout:") == 0) { +				ao_config.apogee_lockout = atoi(words[2]);  			} else if (nword >= 36 && strcmp(words[0], "CALL") == 0) {  				tick = atoi(words[10]);  				if (!ao_flight_started) {  | 
