mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-03 15:38:52 +08:00
linux_pwm_out update orb usage
This commit is contained in:
@@ -42,6 +42,7 @@
|
|||||||
#include <px4_platform_common/getopt.h>
|
#include <px4_platform_common/getopt.h>
|
||||||
#include <px4_platform_common/posix.h>
|
#include <px4_platform_common/posix.h>
|
||||||
|
|
||||||
|
#include <uORB/PublicationMulti.hpp>
|
||||||
#include <uORB/Subscription.hpp>
|
#include <uORB/Subscription.hpp>
|
||||||
#include <uORB/topics/actuator_controls.h>
|
#include <uORB/topics/actuator_controls.h>
|
||||||
#include <uORB/topics/actuator_outputs.h>
|
#include <uORB/topics/actuator_outputs.h>
|
||||||
@@ -76,11 +77,10 @@ static char _mixer_filename[64] = "ROMFS/px4fmu_common/mixers/quad_x.main.mix";
|
|||||||
|
|
||||||
// subscriptions
|
// subscriptions
|
||||||
int _controls_subs[actuator_controls_s::NUM_ACTUATOR_CONTROL_GROUPS];
|
int _controls_subs[actuator_controls_s::NUM_ACTUATOR_CONTROL_GROUPS];
|
||||||
int _armed_sub = -1;
|
uORB::Subscription _armed_sub{ORB_ID(actuator_armed)};
|
||||||
|
|
||||||
// publications
|
// publications
|
||||||
orb_advert_t _outputs_pub = nullptr;
|
uORB::PublicationMulti<actuator_outputs_s> _outputs_pub{ORB_ID(actuator_outputs)};
|
||||||
orb_advert_t _rc_pub = nullptr;
|
|
||||||
|
|
||||||
perf_counter_t _perf_control_latency = nullptr;
|
perf_counter_t _perf_control_latency = nullptr;
|
||||||
|
|
||||||
@@ -207,9 +207,6 @@ void subscribe()
|
|||||||
_poll_fds[_poll_fds_num].events = POLLIN;
|
_poll_fds[_poll_fds_num].events = POLLIN;
|
||||||
_poll_fds_num++;
|
_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) {
|
while (!_task_should_exit) {
|
||||||
|
|
||||||
bool updated;
|
_armed_sub.update(&_armed);
|
||||||
orb_check(_armed_sub, &updated);
|
|
||||||
|
|
||||||
if (updated) {
|
|
||||||
orb_copy(ORB_ID(actuator_armed), _armed_sub, &_armed);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_mixer_group) {
|
if (_mixer_group) {
|
||||||
_mixer_group->set_airmode(airmode);
|
_mixer_group->set_airmode(airmode);
|
||||||
@@ -395,12 +387,7 @@ void task_main(int argc, char *argv[])
|
|||||||
|
|
||||||
_outputs.timestamp = hrt_absolute_time();
|
_outputs.timestamp = hrt_absolute_time();
|
||||||
|
|
||||||
if (_outputs_pub != nullptr) {
|
_outputs_pub.publish(_outputs);
|
||||||
orb_publish(ORB_ID(actuator_outputs), _outputs_pub, &_outputs);
|
|
||||||
|
|
||||||
} else {
|
|
||||||
_outputs_pub = orb_advertise(ORB_ID(actuator_outputs), &_outputs);
|
|
||||||
}
|
|
||||||
|
|
||||||
// use first valid timestamp_sample for latency tracking
|
// use first valid timestamp_sample for latency tracking
|
||||||
for (int i = 0; i < actuator_controls_s::NUM_ACTUATOR_CONTROL_GROUPS; i++) {
|
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) {
|
if (rc_channels_sub != -1) {
|
||||||
orb_unsubscribe(rc_channels_sub);
|
orb_unsubscribe(rc_channels_sub);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user