From 43fb84a63b678ff1201c5c4e5d7dea16679aa991 Mon Sep 17 00:00:00 2001
From: Matthias Grob <maetugr@gmail.com>
Date: Sun, 13 Jan 2019 19:16:47 +0100
Subject: [PATCH] mc_pos_control: make sure task gets started after idle delay

---
 src/modules/mc_pos_control/mc_pos_control_main.cpp | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/src/modules/mc_pos_control/mc_pos_control_main.cpp b/src/modules/mc_pos_control/mc_pos_control_main.cpp
index 442c75f8a5..f92e585386 100644
--- a/src/modules/mc_pos_control/mc_pos_control_main.cpp
+++ b/src/modules/mc_pos_control/mc_pos_control_main.cpp
@@ -649,18 +649,17 @@ MulticopterPositionControl::run()
 			_wv_controller->update(matrix::Quatf(_att_sp.q_d), _states.yaw);
 		}
 
-		if (_control_mode.flag_armed) {
+		// arm hysteresis prevents vehicle to takeoff
+		// before propeller reached idle speed.
+		_arm_hysteresis.set_state_and_update(_control_mode.flag_armed);
+
+		if (_arm_hysteresis.get_state()) {
 			// as soon vehicle is armed check for flighttask
 			start_flight_task();
-			// arm hysteresis prevents vehicle to takeoff
-			// before propeller reached idle speed.
-			_arm_hysteresis.set_state_and_update(true);
 
 		} else {
 			// disable flighttask
 			_flight_tasks.switchTask(FlightTaskIndex::None);
-			// reset arm hysteresis
-			_arm_hysteresis.set_state_and_update(false);
 		}
 
 		// check if any task is active
-- 
GitLab