Plane: fixed to allow TKOFF_THR_DELAY up to 12.7 seconds

thanks to a report by jman841
This commit is contained in:
Andrew Tridgell 2015-02-21 13:56:25 +11:00
parent bee703ab2a
commit 6cf029f82a
1 changed files with 4 additions and 3 deletions

View File

@ -16,6 +16,7 @@ static bool auto_takeoff_check(void)
static bool launchTimerStarted; static bool launchTimerStarted;
static uint32_t last_tkoff_arm_time; static uint32_t last_tkoff_arm_time;
static uint32_t last_check_ms; static uint32_t last_check_ms;
uint16_t wait_time_ms = min(uint16_t(g.takeoff_throttle_delay)*100,12700);
// Reset states if process has been interrupted // Reset states if process has been interrupted
if (last_check_ms && (now - last_check_ms) > 200) { if (last_check_ms && (now - last_check_ms) > 200) {
@ -46,11 +47,11 @@ static bool auto_takeoff_check(void)
launchTimerStarted = true; launchTimerStarted = true;
last_tkoff_arm_time = now; last_tkoff_arm_time = now;
gcs_send_text_fmt(PSTR("Armed AUTO, xaccel = %.1f m/s/s, waiting %.1f sec"), gcs_send_text_fmt(PSTR("Armed AUTO, xaccel = %.1f m/s/s, waiting %.1f sec"),
SpdHgt_Controller->get_VXdot(), 0.1f*float(min(g.takeoff_throttle_delay,25))); SpdHgt_Controller->get_VXdot(), wait_time_ms*0.001f);
} }
// Only perform velocity check if not timed out // Only perform velocity check if not timed out
if ((now - last_tkoff_arm_time) > 2500) { if ((now - last_tkoff_arm_time) > wait_time_ms+100U) {
gcs_send_text_fmt(PSTR("Timeout AUTO")); gcs_send_text_fmt(PSTR("Timeout AUTO"));
goto no_launch; goto no_launch;
} }
@ -65,7 +66,7 @@ static bool auto_takeoff_check(void)
// Check ground speed and time delay // Check ground speed and time delay
if (((gps.ground_speed() > g.takeoff_throttle_min_speed || g.takeoff_throttle_min_speed == 0.0)) && if (((gps.ground_speed() > g.takeoff_throttle_min_speed || g.takeoff_throttle_min_speed == 0.0)) &&
((now - last_tkoff_arm_time) >= min(uint16_t(g.takeoff_throttle_delay)*100,2500))) { ((now - last_tkoff_arm_time) >= wait_time_ms)) {
gcs_send_text_fmt(PSTR("Triggered AUTO, GPSspd = %.1f"), gps.ground_speed()); gcs_send_text_fmt(PSTR("Triggered AUTO, GPSspd = %.1f"), gps.ground_speed());
launchTimerStarted = false; launchTimerStarted = false;
last_tkoff_arm_time = 0; last_tkoff_arm_time = 0;