gps driver update orb_publish usage to uORB::PublicationMulti<>

This commit is contained in:
Daniel Agar
2019-11-30 15:52:53 -05:00
parent 6f512cc2f1
commit 349739b812
+7 -11
View File
@@ -54,6 +54,7 @@
#include <px4_platform_common/getopt.h> #include <px4_platform_common/getopt.h>
#include <px4_platform_common/module.h> #include <px4_platform_common/module.h>
#include <uORB/PublicationQueued.hpp> #include <uORB/PublicationQueued.hpp>
#include <uORB/PublicationMulti.hpp>
#include <uORB/Subscription.hpp> #include <uORB/Subscription.hpp>
#include <uORB/topics/gps_dump.h> #include <uORB/topics/gps_dump.h>
#include <uORB/topics/gps_inject_data.h> #include <uORB/topics/gps_inject_data.h>
@@ -161,11 +162,8 @@ private:
vehicle_gps_position_s _report_gps_pos{}; ///< uORB topic for gps position vehicle_gps_position_s _report_gps_pos{}; ///< uORB topic for gps position
satellite_info_s *_p_report_sat_info{nullptr}; ///< pointer to uORB topic for satellite info satellite_info_s *_p_report_sat_info{nullptr}; ///< pointer to uORB topic for satellite info
orb_advert_t _report_gps_pos_pub{nullptr}; ///< uORB pub for gps position uORB::PublicationMulti<vehicle_gps_position_s> _report_gps_pos_pub{ORB_ID(vehicle_gps_position)}; ///< uORB pub for gps position
orb_advert_t _report_sat_info_pub{nullptr}; ///< uORB pub for satellite info uORB::PublicationMulti<satellite_info_s> _report_sat_info_pub{ORB_ID(satellite_info)}; ///< uORB pub for satellite info
int _gps_orb_instance{-1}; ///< uORB multi-topic instance
int _gps_sat_orb_instance{-1}; ///< uORB multi-topic instance for satellite info
float _rate{0.0f}; ///< position update rate float _rate{0.0f}; ///< position update rate
float _rate_rtcm_injection{0.0f}; ///< RTCM message injection rate float _rate_rtcm_injection{0.0f}; ///< RTCM message injection rate
@@ -837,8 +835,6 @@ GPS::run()
::close(_serial_fd); ::close(_serial_fd);
_serial_fd = -1; _serial_fd = -1;
} }
orb_unadvertise(_report_gps_pos_pub);
} }
int int
@@ -946,8 +942,7 @@ void
GPS::publish() GPS::publish()
{ {
if (_instance == Instance::Main || _is_gps_main_advertised) { if (_instance == Instance::Main || _is_gps_main_advertised) {
orb_publish_auto(ORB_ID(vehicle_gps_position), &_report_gps_pos_pub, &_report_gps_pos, &_gps_orb_instance, _report_gps_pos_pub.publish(_report_gps_pos);
ORB_PRIO_DEFAULT);
// Heading/yaw data can be updated at a lower rate than the other navigation data. // Heading/yaw data can be updated at a lower rate than the other navigation data.
// The uORB message definition requires this data to be set to a NAN if no new valid data is available. // The uORB message definition requires this data to be set to a NAN if no new valid data is available.
_report_gps_pos.heading = NAN; _report_gps_pos.heading = NAN;
@@ -959,8 +954,9 @@ void
GPS::publishSatelliteInfo() GPS::publishSatelliteInfo()
{ {
if (_instance == Instance::Main) { if (_instance == Instance::Main) {
orb_publish_auto(ORB_ID(satellite_info), &_report_sat_info_pub, _p_report_sat_info, &_gps_sat_orb_instance, if (_p_report_sat_info != nullptr) {
ORB_PRIO_DEFAULT); _report_sat_info_pub.publish(*_p_report_sat_info);
}
} else { } else {
//we don't publish satellite info for the secondary gps //we don't publish satellite info for the secondary gps