From a1e90f4aa7517094f48eafa0db6cb91e4b11475f Mon Sep 17 00:00:00 2001
From: Lorenz Meier <lm@inf.ethz.ch>
Date: Sun, 24 Apr 2016 20:03:05 +0200
Subject: [PATCH] Better loiter handling

---
 src/modules/navigator/navigator_main.cpp | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/modules/navigator/navigator_main.cpp b/src/modules/navigator/navigator_main.cpp
index fec9634893..e8cb02be48 100644
--- a/src/modules/navigator/navigator_main.cpp
+++ b/src/modules/navigator/navigator_main.cpp
@@ -418,6 +418,10 @@ Navigator::task_main()
 				rep->previous.lon = get_global_position()->lon;
 				rep->previous.alt = get_global_position()->alt;
 
+				rep->current.loiter_radius = get_loiter_radius();
+				rep->current.loiter_direction = 1;
+				rep->current.type = position_setpoint_s::SETPOINT_TYPE_LOITER;
+
 				// Go on and check which changes had been requested
 				if (PX4_ISFINITE(cmd.param4)) {
 					rep->current.yaw = cmd.param4;
@@ -425,15 +429,11 @@ Navigator::task_main()
 					rep->current.yaw = NAN;
 				}
 
-				if (PX4_ISFINITE(cmd.param5)) {
+				if (PX4_ISFINITE(cmd.param5) && PX4_ISFINITE(cmd.param6)) {
 					rep->current.lat = cmd.param5 / (double)1e7;
-				} else {
-					rep->current.lat = get_global_position()->lat;
-				}
-
-				if (PX4_ISFINITE(cmd.param6)) {
 					rep->current.lon = cmd.param6 / (double)1e7;
 				} else {
+					rep->current.lat = get_global_position()->lat;
 					rep->current.lon = get_global_position()->lon;
 				}
 
-- 
GitLab