From 85c75aedd1a99e10dac60d1b90b31043e0d7b0cf Mon Sep 17 00:00:00 2001 From: GuillaumeLaine Date: Thu, 26 Oct 2023 19:47:15 +0200 Subject: [PATCH] dds_topics: Adds multi publication to subscribed dds topics --- src/modules/uxrce_dds_client/dds_topics.h.em | 7 ++++++- src/modules/uxrce_dds_client/dds_topics.yaml | 5 +++++ src/modules/uxrce_dds_client/generate_dds_topics.py | 5 +++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/modules/uxrce_dds_client/dds_topics.h.em b/src/modules/uxrce_dds_client/dds_topics.h.em index 9e4be9832e..2f4e82aca4 100644 --- a/src/modules/uxrce_dds_client/dds_topics.h.em +++ b/src/modules/uxrce_dds_client/dds_topics.h.em @@ -23,6 +23,7 @@ import os #include #include +#include #include @[for include in type_includes]@ #include @@ -127,6 +128,10 @@ struct RcvTopicsPubs { uORB::Publication<@(sub['simple_base_type'])_s> @(sub['topic_simple'])_pub{ORB_ID(@(sub['topic_simple']))}; @[ end for]@ +@[ for sub in subscriptions_multi]@ + uORB::PublicationMulti<@(sub['simple_base_type'])_s> @(sub['topic_simple'])_pub{ORB_ID(@(sub['topic_simple']))}; +@[ end for]@ + uint32_t num_payload_received{}; bool init(uxrSession *session, uxrStreamId reliable_out_stream_id, uxrStreamId reliable_in_stream_id, uxrStreamId best_effort_in_stream_id, uxrObjectId participant_id, const char *client_namespace); @@ -140,7 +145,7 @@ static void on_topic_update(uxrSession *session, uxrObjectId object_id, uint16_t pubs->num_payload_received += length; switch (object_id.id) { -@[ for idx, sub in enumerate(subscriptions)]@ +@[ for idx, sub in enumerate(subscriptions + subscriptions_multi)]@ case @(idx)+ (65535U / 32U) + 1: { @(sub['simple_base_type'])_s data; diff --git a/src/modules/uxrce_dds_client/dds_topics.yaml b/src/modules/uxrce_dds_client/dds_topics.yaml index d4ad88476e..922fddffff 100644 --- a/src/modules/uxrce_dds_client/dds_topics.yaml +++ b/src/modules/uxrce_dds_client/dds_topics.yaml @@ -68,6 +68,7 @@ publications: - topic: /fmu/out/vehicle_trajectory_waypoint_desired type: px4_msgs::msg::VehicleTrajectoryWaypoint +# Create uORB::Publication subscriptions: - topic: /fmu/in/register_ext_component_request type: px4_msgs::msg::RegisterExtComponentRequest @@ -134,3 +135,7 @@ subscriptions: - topic: /fmu/in/vehicle_trajectory_waypoint type: px4_msgs::msg::VehicleTrajectoryWaypoint + +# Create uORB::PublicationMulti +subscriptions_multi: + diff --git a/src/modules/uxrce_dds_client/generate_dds_topics.py b/src/modules/uxrce_dds_client/generate_dds_topics.py index 108b8b0c79..9bdd3a2e5a 100644 --- a/src/modules/uxrce_dds_client/generate_dds_topics.py +++ b/src/modules/uxrce_dds_client/generate_dds_topics.py @@ -110,6 +110,11 @@ for s in msg_map['subscriptions']: merged_em_globals['subscriptions'] = msg_map['subscriptions'] +for sm in msg_map['subscriptions_multi']: + process_message_type(sm) + +merged_em_globals['subscriptions_multi'] = msg_map['subscriptions_multi'] + merged_em_globals['type_includes'] = sorted(set(all_type_includes))