From 55e3f80bab1f12de0cbd17696ee5c699cb5971f4 Mon Sep 17 00:00:00 2001
From: Daniel Agar <daniel@agar.ca>
Date: Tue, 1 Jan 2019 16:20:30 -0500
Subject: [PATCH] mavlink handle MAV_ODOM_LP parameter in main

 - fixes #11125
---
 src/modules/mavlink/mavlink_main.h       | 9 +++++----
 src/modules/mavlink/mavlink_messages.cpp | 6 +++---
 src/modules/mavlink/mavlink_stream.cpp   | 1 -
 src/modules/mavlink/mavlink_stream.h     | 4 ----
 4 files changed, 8 insertions(+), 12 deletions(-)

diff --git a/src/modules/mavlink/mavlink_main.h b/src/modules/mavlink/mavlink_main.h
index e2c21e556e..d98d1ad743 100644
--- a/src/modules/mavlink/mavlink_main.h
+++ b/src/modules/mavlink/mavlink_main.h
@@ -494,9 +494,9 @@ public:
 
 	bool ftp_enabled() const { return _ftp_on; }
 
-	bool hash_check_enabled() { return _param_hash_check_enabled.get(); }
-
-	bool forward_heartbeats_enabled() { return _param_heartbeat_forwarding_enabled.get(); }
+	bool hash_check_enabled() const { return _param_hash_check_enabled.get(); }
+	bool forward_heartbeats_enabled() const { return _param_heartbeat_forwarding_enabled.get(); }
+	bool odometry_loopback_enabled() const { return _param_send_odom_loopback.get(); }
 
 	struct ping_statistics_s {
 		uint64_t last_ping_time;
@@ -642,7 +642,8 @@ private:
 		(ParamBool<px4::params::MAV_FWDEXTSP>) _param_forward_externalsp,
 		(ParamInt<px4::params::MAV_BROADCAST>) _param_broadcast_mode,
 		(ParamBool<px4::params::MAV_HASH_CHK_EN>) _param_hash_check_enabled,
-		(ParamBool<px4::params::MAV_HB_FORW_EN>) _param_heartbeat_forwarding_enabled
+		(ParamBool<px4::params::MAV_HB_FORW_EN>) _param_heartbeat_forwarding_enabled,
+		(ParamBool<px4::params::MAV_ODOM_LP>) _param_send_odom_loopback
 	)
 
 	perf_counter_t		_loop_perf;			/**< loop performance counter */
diff --git a/src/modules/mavlink/mavlink_messages.cpp b/src/modules/mavlink/mavlink_messages.cpp
index 62b399f954..366e9b84f2 100644
--- a/src/modules/mavlink/mavlink_messages.cpp
+++ b/src/modules/mavlink/mavlink_messages.cpp
@@ -2318,7 +2318,7 @@ protected:
 
 		mavlink_odometry_t msg = {};
 
-		if (_send_odom_loopback.get()) {
+		if (_mavlink->odometry_loopback_enabled()) {
 			odom_updated = _vodom_sub->update(&_vodom_time, &odom);
 			// frame matches the external vision system
 			msg.frame_id = MAV_FRAME_VISION_NED;
@@ -2361,8 +2361,8 @@ protected:
 			msg.yawspeed = odom.yawspeed;
 
 			// get the covariance matrix size
-			const size_t POS_URT_SIZE = sizeof(odom.pose_covariance) / sizeof(odom.pose_covariance[0]);
-			const size_t VEL_URT_SIZE = sizeof(odom.velocity_covariance) / sizeof(odom.velocity_covariance[0]);
+			static constexpr size_t POS_URT_SIZE = sizeof(odom.pose_covariance) / sizeof(odom.pose_covariance[0]);
+			static constexpr size_t VEL_URT_SIZE = sizeof(odom.velocity_covariance) / sizeof(odom.velocity_covariance[0]);
 			static_assert(POS_URT_SIZE == (sizeof(msg.pose_covariance) / sizeof(msg.pose_covariance[0])),
 				      "Odometry Pose Covariance matrix URT array size mismatch");
 			static_assert(VEL_URT_SIZE == (sizeof(msg.twist_covariance) / sizeof(msg.twist_covariance[0])),
diff --git a/src/modules/mavlink/mavlink_stream.cpp b/src/modules/mavlink/mavlink_stream.cpp
index f3d6c2b2cc..f95587c833 100644
--- a/src/modules/mavlink/mavlink_stream.cpp
+++ b/src/modules/mavlink/mavlink_stream.cpp
@@ -58,7 +58,6 @@ int
 MavlinkStream::update(const hrt_abstime &t)
 {
 	update_data();
-	ModuleParams::updateParams();
 
 	// If the message has never been sent before we want
 	// to send it immediately and can return right away
diff --git a/src/modules/mavlink/mavlink_stream.h b/src/modules/mavlink/mavlink_stream.h
index e982c61e97..327911f633 100644
--- a/src/modules/mavlink/mavlink_stream.h
+++ b/src/modules/mavlink/mavlink_stream.h
@@ -127,10 +127,6 @@ protected:
 	 */
 	virtual void update_data() { }
 
-	DEFINE_PARAMETERS(
-		(ParamBool<px4::params::MAV_ODOM_LP>) _send_odom_loopback
-	)
-
 private:
 	hrt_abstime _last_sent{0};
 	bool _first_message_sent{false};
-- 
GitLab