diff --git a/src/modules/mavlink/mavlink_mission.cpp b/src/modules/mavlink/mavlink_mission.cpp index 32faf3acd4..8e59e6fee1 100644 --- a/src/modules/mavlink/mavlink_mission.cpp +++ b/src/modules/mavlink/mavlink_mission.cpp @@ -76,11 +76,6 @@ MavlinkMissionManager::MavlinkMissionManager(Mavlink *mavlink) : init_offboard_mission(); } -MavlinkMissionManager::~MavlinkMissionManager() -{ - orb_unadvertise(_offboard_mission_pub); -} - void MavlinkMissionManager::init_offboard_mission() { @@ -185,12 +180,7 @@ MavlinkMissionManager::update_active_mission(dm_item_t dataman_id, uint16_t coun _my_dataman_id = _dataman_id; /* mission state saved successfully, publish offboard_mission topic */ - if (_offboard_mission_pub == nullptr) { - _offboard_mission_pub = orb_advertise(ORB_ID(mission), &mission); - - } else { - orb_publish(ORB_ID(mission), _offboard_mission_pub, &mission); - } + _offboard_mission_pub.publish(mission); return PX4_OK; diff --git a/src/modules/mavlink/mavlink_mission.h b/src/modules/mavlink/mavlink_mission.h index 2a88d68eea..fe3f9bfa7e 100644 --- a/src/modules/mavlink/mavlink_mission.h +++ b/src/modules/mavlink/mavlink_mission.h @@ -46,6 +46,7 @@ #pragma once #include +#include #include #include @@ -78,7 +79,7 @@ class MavlinkMissionManager public: explicit MavlinkMissionManager(Mavlink *mavlink); - ~MavlinkMissionManager(); + ~MavlinkMissionManager() = default; /** * Handle sending of messages. Call this regularly at a fixed frequency. @@ -127,7 +128,7 @@ private: uORB::Subscription _mission_result_sub{ORB_ID(mission_result)}; - orb_advert_t _offboard_mission_pub{nullptr}; + uORB::Publication _offboard_mission_pub{ORB_ID(mission)}; static uint16_t _geofence_update_counter; static uint16_t _safepoint_update_counter; diff --git a/src/modules/mavlink/mavlink_parameters.cpp b/src/modules/mavlink/mavlink_parameters.cpp index 2a868e20bf..d20c84ee58 100644 --- a/src/modules/mavlink/mavlink_parameters.cpp +++ b/src/modules/mavlink/mavlink_parameters.cpp @@ -256,14 +256,7 @@ MavlinkParametersManager::handle_message(const mavlink_message_t *msg) } _rc_param_map.timestamp = hrt_absolute_time(); - - if (_rc_param_map_pub == nullptr) { - _rc_param_map_pub = orb_advertise(ORB_ID(rc_parameter_map), &_rc_param_map); - - } else { - orb_publish(ORB_ID(rc_parameter_map), _rc_param_map_pub, &_rc_param_map); - } - + _rc_param_map_pub.publish(_rc_param_map); } break; diff --git a/src/modules/mavlink/mavlink_parameters.h b/src/modules/mavlink/mavlink_parameters.h index 4219a85332..ea43a14ae3 100644 --- a/src/modules/mavlink/mavlink_parameters.h +++ b/src/modules/mavlink/mavlink_parameters.h @@ -45,6 +45,7 @@ #include #include "mavlink_bridge_header.h" +#include #include #include #include @@ -125,7 +126,7 @@ protected: bool _uavcan_waiting_for_request_response{false}; ///< We have reqested a parameter and wait for the response uint16_t _uavcan_queued_request_items{0}; ///< Number of stored parameter requests currently in the list - orb_advert_t _rc_param_map_pub{nullptr}; + uORB::Publication _rc_param_map_pub{ORB_ID(rc_parameter_map)}; rc_parameter_map_s _rc_param_map{}; uORB::PublicationQueued _uavcan_parameter_request_pub{ORB_ID(uavcan_parameter_request)}; diff --git a/src/modules/mavlink/mavlink_timesync.cpp b/src/modules/mavlink/mavlink_timesync.cpp index abd12f621f..48714ec16f 100644 --- a/src/modules/mavlink/mavlink_timesync.cpp +++ b/src/modules/mavlink/mavlink_timesync.cpp @@ -48,13 +48,6 @@ MavlinkTimesync::MavlinkTimesync(Mavlink *mavlink) : { } -MavlinkTimesync::~MavlinkTimesync() -{ - if (_timesync_status_pub) { - orb_unadvertise(_timesync_status_pub); - } -} - void MavlinkTimesync::handle_message(const mavlink_message_t *msg) { @@ -145,7 +138,7 @@ MavlinkTimesync::handle_message(const mavlink_message_t *msg) } // Publish status message - struct timesync_status_s tsync_status = {}; + timesync_status_s tsync_status{}; tsync_status.timestamp = hrt_absolute_time(); tsync_status.remote_timestamp = tsync.tc1 / 1000ULL; @@ -153,14 +146,7 @@ MavlinkTimesync::handle_message(const mavlink_message_t *msg) tsync_status.estimated_offset = (int64_t)_time_offset; tsync_status.round_trip_time = rtt_us; - if (_timesync_status_pub == nullptr) { - int instance; - _timesync_status_pub = orb_advertise_multi(ORB_ID(timesync_status), &tsync_status, &instance, ORB_PRIO_DEFAULT); - - } else { - orb_publish(ORB_ID(timesync_status), _timesync_status_pub, &tsync_status); - } - + _timesync_status_pub.publish(tsync_status); } break; diff --git a/src/modules/mavlink/mavlink_timesync.h b/src/modules/mavlink/mavlink_timesync.h index 61758af566..3204696f42 100644 --- a/src/modules/mavlink/mavlink_timesync.h +++ b/src/modules/mavlink/mavlink_timesync.h @@ -42,7 +42,7 @@ #include "mavlink_bridge_header.h" -#include +#include #include #include @@ -98,7 +98,7 @@ class MavlinkTimesync { public: explicit MavlinkTimesync(Mavlink *mavlink); - ~MavlinkTimesync(); + ~MavlinkTimesync() = default; void handle_message(const mavlink_message_t *msg); @@ -132,7 +132,7 @@ protected: */ void reset_filter(); - orb_advert_t _timesync_status_pub{nullptr}; + uORB::PublicationMulti _timesync_status_pub{ORB_ID(timesync_status)}; uint32_t _sequence{0}; diff --git a/src/modules/mavlink/mavlink_ulog.cpp b/src/modules/mavlink/mavlink_ulog.cpp index cd58851ed9..cf251ed20a 100644 --- a/src/modules/mavlink/mavlink_ulog.cpp +++ b/src/modules/mavlink/mavlink_ulog.cpp @@ -68,9 +68,6 @@ MavlinkULog::MavlinkULog(int datarate, float max_rate_factor, uint8_t target_sys MavlinkULog::~MavlinkULog() { - if (_ulog_stream_ack_pub) { - orb_unadvertise(_ulog_stream_ack_pub); - } } void MavlinkULog::start_ack_received() @@ -257,10 +254,5 @@ void MavlinkULog::publish_ack(uint16_t sequence) ack.timestamp = hrt_absolute_time(); ack.sequence = sequence; - if (_ulog_stream_ack_pub == nullptr) { - _ulog_stream_ack_pub = orb_advertise(ORB_ID(ulog_stream_ack), &ack); - - } else { - orb_publish(ORB_ID(ulog_stream_ack), _ulog_stream_ack_pub, &ack); - } + _ulog_stream_ack_pub.publish(ack); } diff --git a/src/modules/mavlink/mavlink_ulog.h b/src/modules/mavlink/mavlink_ulog.h index 609f7d30fa..f46775e8e6 100644 --- a/src/modules/mavlink/mavlink_ulog.h +++ b/src/modules/mavlink/mavlink_ulog.h @@ -46,6 +46,7 @@ #include #include +#include #include #include #include @@ -121,7 +122,7 @@ private: static const float _rate_calculation_delta_t; ///< rate update interval uORB::SubscriptionData _ulog_stream_sub{ORB_ID(ulog_stream)}; - orb_advert_t _ulog_stream_ack_pub = nullptr; + uORB::Publication _ulog_stream_ack_pub{ORB_ID(ulog_stream_ack)}; uint16_t _wait_for_ack_sequence; uint8_t _sent_tries = 0; volatile bool _ack_received = false; ///< set to true if a matching ack received