From 25acd40ef00fdb5e615b921596829165b06a6f5d Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Sat, 30 Nov 2019 12:36:14 -0500 Subject: [PATCH] linux_pwm_out update orb usage --- src/drivers/linux_pwm_out/linux_pwm_out.cpp | 28 ++++----------------- 1 file changed, 5 insertions(+), 23 deletions(-) diff --git a/src/drivers/linux_pwm_out/linux_pwm_out.cpp b/src/drivers/linux_pwm_out/linux_pwm_out.cpp index 482c376194..0f83db0765 100644 --- a/src/drivers/linux_pwm_out/linux_pwm_out.cpp +++ b/src/drivers/linux_pwm_out/linux_pwm_out.cpp @@ -42,6 +42,7 @@ #include #include +#include #include #include #include @@ -76,11 +77,10 @@ static char _mixer_filename[64] = "ROMFS/px4fmu_common/mixers/quad_x.main.mix"; // subscriptions int _controls_subs[actuator_controls_s::NUM_ACTUATOR_CONTROL_GROUPS]; -int _armed_sub = -1; +uORB::Subscription _armed_sub{ORB_ID(actuator_armed)}; // publications -orb_advert_t _outputs_pub = nullptr; -orb_advert_t _rc_pub = nullptr; +uORB::PublicationMulti _outputs_pub{ORB_ID(actuator_outputs)}; perf_counter_t _perf_control_latency = nullptr; @@ -207,9 +207,6 @@ void subscribe() _poll_fds[_poll_fds_num].events = POLLIN; _poll_fds_num++; } - - _armed_sub = orb_subscribe(ORB_ID(actuator_armed)); - } } @@ -272,12 +269,7 @@ void task_main(int argc, char *argv[]) while (!_task_should_exit) { - bool updated; - orb_check(_armed_sub, &updated); - - if (updated) { - orb_copy(ORB_ID(actuator_armed), _armed_sub, &_armed); - } + _armed_sub.update(&_armed); if (_mixer_group) { _mixer_group->set_airmode(airmode); @@ -395,12 +387,7 @@ void task_main(int argc, char *argv[]) _outputs.timestamp = hrt_absolute_time(); - if (_outputs_pub != nullptr) { - orb_publish(ORB_ID(actuator_outputs), _outputs_pub, &_outputs); - - } else { - _outputs_pub = orb_advertise(ORB_ID(actuator_outputs), &_outputs); - } + _outputs_pub.publish(_outputs); // use first valid timestamp_sample for latency tracking for (int i = 0; i < actuator_controls_s::NUM_ACTUATOR_CONTROL_GROUPS; i++) { @@ -437,11 +424,6 @@ void task_main(int argc, char *argv[]) } } - if (_armed_sub != -1) { - orb_unsubscribe(_armed_sub); - _armed_sub = -1; - } - if (rc_channels_sub != -1) { orb_unsubscribe(rc_channels_sub); }