Skip to content

Commit

Permalink
Break circular dependencies by using raw pointers to UAS in plugins
Browse files Browse the repository at this point in the history
  • Loading branch information
ugol-1 committed Jun 16, 2024
1 parent a8ed36e commit 46aeec6
Show file tree
Hide file tree
Showing 6 changed files with 9 additions and 9 deletions.
2 changes: 1 addition & 1 deletion mavros/include/mavros/plugin.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ namespace plugin
{

using mavros::uas::UAS;
using UASPtr = std::shared_ptr<UAS>;
using UASPtr = UAS *;
using r_unique_lock = std::unique_lock<std::recursive_mutex>;
using s_unique_lock = std::unique_lock<std::shared_timed_mutex>;
using s_shared_lock = std::shared_lock<std::shared_timed_mutex>;
Expand Down
2 changes: 1 addition & 1 deletion mavros/include/mavros/plugin_filter.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ namespace filter
{
using mavros::plugin::Filter;
using mavros::uas::UAS;
using UASPtr = UAS::SharedPtr;
using UASPtr = UAS *;
using mavconn::Framing;


Expand Down
4 changes: 2 additions & 2 deletions mavros/src/lib/mavros_uas.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ UAS::UAS(
this->declare_parameter("odom_frame_id", odom_frame_id);
this->declare_parameter("map_frame_id", map_frame_id);

// NOTE(vooon): we couldn't add_plugin() in constructor because it needs shared_from_this()
// NOTE: we can add_plugin() in constructor because it does not need shared_from_this()
startup_delay_timer = this->create_wall_timer(
10ms, [this]() {
startup_delay_timer->cancel();
Expand Down Expand Up @@ -264,7 +264,7 @@ plugin::Plugin::SharedPtr UAS::create_plugin_instance(const std::string & pl_nam
auto plugin_factory = plugin_factory_loader.createSharedInstance(pl_name);

return
plugin_factory->create_plugin_instance(std::static_pointer_cast<UAS>(shared_from_this()));
plugin_factory->create_plugin_instance(this);
}

void UAS::add_plugin(const std::string & pl_name)
Expand Down
2 changes: 1 addition & 1 deletion mavros/src/plugins/global_position.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -548,7 +548,7 @@ class GlobalPositionPlugin : public plugin::Plugin
gpo.latitude = req->position.latitude * 1E7;
gpo.longitude = req->position.longitude * 1E7;
gpo.altitude = (req->position.altitude +
uas->data.ellipsoid_to_geoid_height(req->position)) * 1E3;
uas->data.ellipsoid_to_geoid_height(req->position)) * 1E3;

uas->send_message(gpo);
}
Expand Down
2 changes: 1 addition & 1 deletion mavros/src/plugins/home_position.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ class HomePositionPlugin : public plugin::Plugin
hp.geo.latitude = home_position.latitude / 1E7; // deg
hp.geo.longitude = home_position.longitude / 1E7; // deg
hp.geo.altitude = home_position.altitude / 1E3 +
uas->data.geoid_to_ellipsoid_height(hp.geo); // in meters
uas->data.geoid_to_ellipsoid_height(hp.geo); // in meters
hp.orientation = tf2::toMsg(q);
hp.position = tf2::toMsg(pos);
tf2::toMsg(hp_approach_enu, hp.approach);
Expand Down
6 changes: 3 additions & 3 deletions mavros/test/test_uas.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ class MockPlugin : public plugin::Plugin
public:
using SharedPtr = std::shared_ptr<MockPlugin>;

explicit MockPlugin(UAS::SharedPtr uas_)
explicit MockPlugin(UASPtr uas_)
: Plugin(uas_, "mock_plugin") {}

MOCK_METHOD0(get_subscriptions, plugin::Plugin::Subscriptions(void));
Expand Down Expand Up @@ -208,9 +208,9 @@ TEST_F(TestUAS, is_plugin_allowed)
TEST_F(TestUAS, add_plugin__route_message__filter)
{
auto uas = create_node();
auto plugin1 = std::make_shared<MockPlugin>(uas);
auto plugin1 = std::make_shared<MockPlugin>(uas.get());
auto subs1 = plugin1->allsubs();
auto plugin2 = std::make_shared<MockPlugin>(uas);
auto plugin2 = std::make_shared<MockPlugin>(uas.get());
auto subs2 = plugin2->rawsubs();

// XXX(vooon): silence leak warnings: they work badly with shared_ptr
Expand Down

0 comments on commit 46aeec6

Please sign in to comment.