microdds_client: set queue depth for incoming topics according to msg definition

Otherwise the FMU might miss publications from 2 different publishers at
the same time.
This commit is contained in:
Beat Küng
2023-02-07 19:12:10 -05:00
committed by Daniel Agar
parent 3f2336af32
commit a727bddc19
2 changed files with 6 additions and 3 deletions
+4 -1
View File
@@ -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) 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)]@ @[ 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]@ @[ end for]@
uxr_set_topic_callback(session, on_topic_update, this); uxr_set_topic_callback(session, on_topic_update, this);
+2 -2
View File
@@ -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, 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, 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 // topic
char topic_name[TOPIC_NAME_SIZE]; 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, .durability = UXR_DURABILITY_VOLATILE,
.reliability = UXR_RELIABILITY_BEST_EFFORT, .reliability = UXR_RELIABILITY_BEST_EFFORT,
.history = UXR_HISTORY_KEEP_LAST, .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, uint16_t datareader_req = uxr_buffer_create_datareader_bin(session, reliable_out_stream_id, datareader_id,