From bcad940a9f529388781433f30d432eb1f25a9feb Mon Sep 17 00:00:00 2001
From: Daniel Agar <daniel@agar.ca>
Date: Sun, 16 Sep 2018 17:36:06 -0400
Subject: [PATCH] pwm_out_sim lazily publish actuator_outputs

---
 src/drivers/pwm_out_sim/PWMSim.cpp | 6 ++----
 src/drivers/pwm_out_sim/PWMSim.hpp | 2 +-
 2 files changed, 3 insertions(+), 5 deletions(-)

diff --git a/src/drivers/pwm_out_sim/PWMSim.cpp b/src/drivers/pwm_out_sim/PWMSim.cpp
index ef7054b380..9a93dfbf83 100644
--- a/src/drivers/pwm_out_sim/PWMSim.cpp
+++ b/src/drivers/pwm_out_sim/PWMSim.cpp
@@ -158,9 +158,6 @@ PWMSim::run()
 
 	_armed_sub = orb_subscribe(ORB_ID(actuator_armed));
 
-	/* advertise the mixed control outputs, insist on the first group output */
-	_outputs_pub = orb_advertise(ORB_ID(actuator_outputs), &_actuator_outputs);
-
 	update_params();
 	int params_sub = orb_subscribe(ORB_ID(parameter_update));
 
@@ -287,7 +284,8 @@ PWMSim::run()
 
 			/* and publish for anyone that cares to see */
 			_actuator_outputs.timestamp = hrt_absolute_time();
-			orb_publish(ORB_ID(actuator_outputs), _outputs_pub, &_actuator_outputs);
+			int instance;
+			orb_publish_auto(ORB_ID(actuator_outputs), &_outputs_pub, &_actuator_outputs, &instance, ORB_PRIO_DEFAULT);
 
 			// use first valid timestamp_sample for latency tracking
 			for (int i = 0; i < actuator_controls_s::NUM_ACTUATOR_CONTROL_GROUPS; i++) {
diff --git a/src/drivers/pwm_out_sim/PWMSim.hpp b/src/drivers/pwm_out_sim/PWMSim.hpp
index 46772adf67..87c7beb612 100644
--- a/src/drivers/pwm_out_sim/PWMSim.hpp
+++ b/src/drivers/pwm_out_sim/PWMSim.hpp
@@ -110,7 +110,7 @@ private:
 
 	int		_armed_sub{-1};
 
-	actuator_outputs_s _actuator_outputs = {};
+	actuator_outputs_s _actuator_outputs{};
 	orb_advert_t	_outputs_pub{nullptr};
 
 	unsigned	_num_outputs{0};
-- 
GitLab