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 2022-11-24 10:21:59 +01:00 committed by Daniel Agar
parent 3f2336af32
commit a727bddc19
No known key found for this signature in database
GPG Key ID: FD3CBA98017A69DE
2 changed files with 6 additions and 3 deletions

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)
{
@[ 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);

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,
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,