diff --git a/src/modules/microdds_client/dds_topics.h.em b/src/modules/microdds_client/dds_topics.h.em index 44e70d5e1c..dc79e0fabd 100644 --- a/src/modules/microdds_client/dds_topics.h.em +++ b/src/modules/microdds_client/dds_topics.h.em @@ -126,7 +126,10 @@ static void on_topic_update(uxrSession *session, uxrObjectId object_id, uint16_t bool RcvTopicsPubs::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) { @[ for idx, sub in enumerate(subscriptions)]@ - create_data_reader(session, reliable_out_stream_id, best_effort_in_stream_id, participant_id, @(idx), client_namespace, "@(sub['topic_simple'])", "@(sub['dds_type'])"); + { + uint16_t queue_depth = uORB::DefaultQueueSize<@(sub['simple_base_type'])_s>::value * 2; // use a bit larger queue size than internal + create_data_reader(session, reliable_out_stream_id, best_effort_in_stream_id, participant_id, @(idx), client_namespace, "@(sub['topic_simple'])", "@(sub['dds_type'])", queue_depth); + } @[ end for]@ uxr_set_topic_callback(session, on_topic_update, this); diff --git a/src/modules/microdds_client/utilities.hpp b/src/modules/microdds_client/utilities.hpp index c5eb5c3a26..91e1996fb8 100644 --- a/src/modules/microdds_client/utilities.hpp +++ b/src/modules/microdds_client/utilities.hpp @@ -84,7 +84,7 @@ static bool create_data_writer(uxrSession *session, uxrStreamId reliable_out_str static bool create_data_reader(uxrSession *session, uxrStreamId reliable_out_stream_id, uxrStreamId input_stream_id, uxrObjectId participant_id, uint16_t index, const char *client_namespace, const char *topic_name_simple, - const char *type_name) + const char *type_name, uint16_t queue_depth) { // topic char topic_name[TOPIC_NAME_SIZE]; @@ -115,7 +115,7 @@ static bool create_data_reader(uxrSession *session, uxrStreamId reliable_out_str .durability = UXR_DURABILITY_VOLATILE, .reliability = UXR_RELIABILITY_BEST_EFFORT, .history = UXR_HISTORY_KEEP_LAST, - .depth = 0, + .depth = queue_depth, }; uint16_t datareader_req = uxr_buffer_create_datareader_bin(session, reliable_out_stream_id, datareader_id,