From 5f6d03099e07e20abe9cec685fee1244d7c9a0d4 Mon Sep 17 00:00:00 2001
From: Steven Blass <steven.r.blass@gmail.com>
Date: Mon, 17 Nov 2014 19:58:18 -0500
Subject: [PATCH] fixed yaw/yawrate bit masking. fixed navigator overriding
 offboard setpoint

---
 src/modules/mavlink/mavlink_receiver.cpp | 4 ++--
 src/modules/navigator/navigator_main.cpp | 7 ++++---
 2 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/src/modules/mavlink/mavlink_receiver.cpp b/src/modules/mavlink/mavlink_receiver.cpp
index bc092c7e9c..c0a8d7322f 100644
--- a/src/modules/mavlink/mavlink_receiver.cpp
+++ b/src/modules/mavlink/mavlink_receiver.cpp
@@ -540,10 +540,10 @@ MavlinkReceiver::handle_message_set_position_target_local_ned(mavlink_message_t
 		}
 		offboard_control_sp.ignore &=  ~(1 << OFB_IGN_BIT_YAW);
 			offboard_control_sp.ignore |=  (set_position_target_local_ned.type_mask & (1 << 10)) <<
-					OFB_IGN_BIT_YAW;
+					(OFB_IGN_BIT_YAW - 10);
 		offboard_control_sp.ignore &=  ~(1 << OFB_IGN_BIT_YAWRATE);
 			offboard_control_sp.ignore |=  (set_position_target_local_ned.type_mask & (1 << 11)) <<
-					OFB_IGN_BIT_YAWRATE;
+					(OFB_IGN_BIT_YAWRATE - 11);
 
 		offboard_control_sp.timestamp = hrt_absolute_time();
 
diff --git a/src/modules/navigator/navigator_main.cpp b/src/modules/navigator/navigator_main.cpp
index 10a4ee88f6..5e98064996 100644
--- a/src/modules/navigator/navigator_main.cpp
+++ b/src/modules/navigator/navigator_main.cpp
@@ -468,9 +468,10 @@ Navigator::task_main()
 			_navigation_mode_array[i]->run(_navigation_mode == _navigation_mode_array[i]);
 		}
 
-		/* if nothing is running, set position setpoint triplet invalid */
-		if (_navigation_mode == nullptr) {
-			// TODO publish empty sp only once
+		/* if nothing is running, set position setpoint triplet invalid once */
+		static bool published_once = false;
+		if (_navigation_mode == nullptr && !published_once) {
+			published_once = true;
 			_pos_sp_triplet.previous.valid = false;
 			_pos_sp_triplet.current.valid = false;
 			_pos_sp_triplet.next.valid = false;
-- 
GitLab