Skip to content

Commit 92091c5

Browse files
pablogs9Your Name
authored andcommitted
Added entity creation buffer pointer
Added entity creation buffer pointer
1 parent d878e93 commit 92091c5

8 files changed

Lines changed: 81 additions & 39 deletions

File tree

rmw_microxrcedds_c/src/rmw_client.c

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ rmw_create_client(
127127
}
128128
client_req = uxr_buffer_create_requester_xml(
129129
&custom_node->context->session,
130-
custom_node->context->reliable_output,
130+
*custom_node->context->entity_creation_output,
131131
custom_client->client_id,
132132
custom_node->participant_id,
133133
rmw_uxrce_xml_buffer,
@@ -140,7 +140,7 @@ rmw_create_client(
140140

141141
client_req = uxr_buffer_create_requester_ref(
142142
&custom_node->context->session,
143-
custom_node->context->reliable_output,
143+
*custom_node->context->entity_creation_output,
144144
custom_client->client_id,
145145
custom_node->participant_id,
146146
rmw_uxrce_profile_name,
@@ -173,8 +173,10 @@ rmw_create_client(
173173

174174
custom_client->request_id = uxr_buffer_request_data(
175175
&custom_node->context->session,
176-
custom_node->context->reliable_output, custom_client->client_id,
177-
custom_client->stream_id, &delivery_control);
176+
*custom_node->context->entity_creation_output,
177+
custom_client->client_id,
178+
custom_client->stream_id,
179+
&delivery_control);
178180
}
179181
return rmw_client;
180182

@@ -214,7 +216,8 @@ rmw_destroy_client(
214216
rmw_uxrce_client_t * custom_client = (rmw_uxrce_client_t *)client->data;
215217
uint16_t delete_client =
216218
uxr_buffer_delete_entity(
217-
&custom_node->context->session, custom_node->context->reliable_output,
219+
&custom_node->context->session,
220+
*custom_node->context->entity_creation_output,
218221
custom_client->client_id);
219222

220223
uint16_t requests[] = {delete_client};

rmw_microxrcedds_c/src/rmw_init.c

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,13 @@
3333
#include <termios.h>
3434
#endif
3535

36+
#ifdef UCLIENT_BROKERLESS_ENABLE
37+
#include <uxr/client/brokerless/brokerless.h>
38+
#endif
39+
3640
#if defined(MICRO_XRCEDDS_SERIAL) || defined(MICRO_XRCEDDS_CUSTOM_SERIAL)
3741
#define CLOSE_TRANSPORT(transport) uxr_close_serial_transport(transport)
38-
#elif defined(MICRO_XRCEDDS_UDP)
42+
#elif defined(MICRO_XRCEDDS_UDP) && !defined(UCLIENT_BROKERLESS_ENABLE)
3943
#define CLOSE_TRANSPORT(transport) uxr_close_udp_transport(transport)
4044
#else
4145
#define CLOSE_TRANSPORT(transport)
@@ -245,8 +249,7 @@ rmw_init(const rmw_init_options_t * options, rmw_context_t * context)
245249
}
246250
printf("Serial mode => dev: %s\n", context_impl->connection_params.serial_device);
247251

248-
#elif defined(MICRO_XRCEDDS_UDP)
249-
// TODO(Borja) Think how we are going to select transport to use
252+
#elif defined(MICRO_XRCEDDS_UDP) && !defined(UCLIENT_BROKERLESS_ENABLE)
250253
#ifdef MICRO_XRCEDDS_IPV4
251254
uxrIpProtocol ip_protocol = UXR_IPv4;
252255
#elif defined(MICRO_XRCEDDS_IPV6)
@@ -263,6 +266,11 @@ rmw_init(const rmw_init_options_t * options, rmw_context_t * context)
263266
printf(
264267
"UDP mode => ip: %s - port: %s\n", context_impl->connection_params.agent_address,
265268
context_impl->connection_params.agent_port);
269+
#elif defined(MICRO_XRCEDDS_UDP) && defined(UCLIENT_BROKERLESS_ENABLE)
270+
271+
context_impl->udp_platform.comm = brokerless_comm_stub;
272+
273+
printf("UDP mode Brokerless P2P\n");
266274
#elif defined(MICRO_XRCEDDS_CUSTOM_SERIAL)
267275
int pseudo_fd = 0;
268276
if (strlen(options->impl->connection_params.serial_device) > 0) {
@@ -287,25 +295,31 @@ rmw_init(const rmw_init_options_t * options, rmw_context_t * context)
287295
uxr_set_request_callback(&context_impl->session, on_request, NULL);
288296
uxr_set_reply_callback(&context_impl->session, on_reply, NULL);
289297

298+
#ifndef UCLIENT_BROKERLESS_ENABLE
290299
context_impl->reliable_input = uxr_create_input_reliable_stream(
291300
&context_impl->session, context_impl->input_reliable_stream_buffer,
292301
context_impl->transport.comm.mtu * RMW_UXRCE_STREAM_HISTORY, RMW_UXRCE_STREAM_HISTORY);
293302
context_impl->reliable_output =
294303
uxr_create_output_reliable_stream(
295304
&context_impl->session, context_impl->output_reliable_stream_buffer,
296305
context_impl->transport.comm.mtu * RMW_UXRCE_STREAM_HISTORY, RMW_UXRCE_STREAM_HISTORY);
306+
#endif
297307

298308
context_impl->best_effort_input = uxr_create_input_best_effort_stream(&context_impl->session);
299309
context_impl->best_effort_output = uxr_create_output_best_effort_stream(
300310
&context_impl->session,
301311
context_impl->output_best_effort_stream_buffer, context_impl->transport.comm.mtu);
302312

303-
313+
#ifndef UCLIENT_BROKERLESS_ENABLE
314+
context_impl->entity_creation_output = &context_impl->reliable_output;
304315
if (!uxr_create_session(&context_impl->session)) {
305316
CLOSE_TRANSPORT(&context_impl->transport);
306317
RMW_SET_ERROR_MSG("failed to create node session on Micro ROS Agent.");
307318
return RMW_RET_ERROR;
308319
}
320+
#else
321+
context_impl->entity_creation_output = &context_impl->best_effort_output;
322+
#endif
309323

310324
return RMW_RET_OK;
311325
}

rmw_microxrcedds_c/src/rmw_microxrcedds_topic.c

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,11 @@ create_topic(
6363

6464
topic_req = uxr_buffer_create_topic_xml(
6565
&custom_node->context->session,
66-
custom_node->context->reliable_output, custom_topic->topic_id,
67-
custom_node->participant_id, rmw_uxrce_xml_buffer, UXR_REPLACE);
66+
*custom_node->context->entity_creation_output,
67+
custom_topic->topic_id,
68+
custom_node->participant_id,
69+
rmw_uxrce_xml_buffer,
70+
UXR_REPLACE);
6871
#elif defined(MICRO_XRCEDDS_USE_REFS)
6972
(void)qos_policies;
7073
if (!build_topic_profile(topic_name, rmw_uxrce_profile_name, sizeof(rmw_uxrce_profile_name))) {
@@ -76,8 +79,11 @@ create_topic(
7679

7780
topic_req = uxr_buffer_create_topic_ref(
7881
&custom_node->context->session,
79-
custom_node->context->reliable_output, custom_topic->topic_id,
80-
custom_node->participant_id, rmw_uxrce_profile_name, UXR_REPLACE);
82+
*custom_node->context->entity_creation_output,
83+
custom_topic->topic_id,
84+
custom_node->participant_id,
85+
rmw_uxrce_profile_name,
86+
UXR_REPLACE);
8187
#endif
8288

8389
// Send the request and wait for response
@@ -103,7 +109,7 @@ rmw_ret_t destroy_topic(rmw_uxrce_topic_t * topic)
103109

104110
uint16_t delete_topic = uxr_buffer_delete_entity(
105111
&topic->owner_node->context->session,
106-
topic->owner_node->context->reliable_output,
112+
*custom_node->context->entity_creation_output,
107113
topic->topic_id);
108114

109115
uint16_t requests[] = {delete_topic};

rmw_microxrcedds_c/src/rmw_node.c

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,11 @@ rmw_node_t * create_node(
8585
participant_req =
8686
uxr_buffer_create_participant_xml(
8787
&node_info->context->session,
88-
node_info->context->reliable_output,
89-
node_info->participant_id, (uint16_t)domain_id, rmw_uxrce_xml_buffer, UXR_REPLACE);
88+
*custom_node->context->entity_creation_output,
89+
node_info->participant_id,
90+
(uint16_t)domain_id,
91+
rmw_uxrce_xml_buffer,
92+
UXR_REPLACE);
9093
#elif defined(MICRO_XRCEDDS_USE_REFS)
9194
if (!build_participant_profile(rmw_uxrce_profile_name, sizeof(rmw_uxrce_profile_name))) {
9295
RMW_SET_ERROR_MSG("failed to generate xml request for node creation");
@@ -95,8 +98,11 @@ rmw_node_t * create_node(
9598
participant_req =
9699
uxr_buffer_create_participant_ref(
97100
&node_info->context->session,
98-
node_info->context->reliable_output,
99-
node_info->participant_id, (uint16_t)domain_id, rmw_uxrce_profile_name, UXR_REPLACE);
101+
*custom_node->context->entity_creation_output,
102+
node_info->participant_id,
103+
(uint16_t)domain_id,
104+
rmw_uxrce_profile_name,
105+
UXR_REPLACE);
100106
#endif
101107
uint8_t status[1];
102108
uint16_t requests[] = {participant_req};
@@ -201,7 +207,7 @@ rmw_ret_t rmw_destroy_node(rmw_node_t * node)
201207

202208
uint16_t participant_req = uxr_buffer_delete_entity(
203209
&custom_node->context->session,
204-
custom_node->context->reliable_output,
210+
*custom_node->context->entity_creation_output,
205211
custom_node->participant_id);
206212
uint8_t status[1];
207213
uint16_t requests[] = {participant_req};

rmw_microxrcedds_c/src/rmw_publisher.c

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -156,15 +156,17 @@ rmw_create_publisher(
156156
}
157157
publisher_req = uxr_buffer_create_publisher_xml(
158158
&custom_publisher->owner_node->context->session,
159-
custom_node->context->reliable_output,
159+
*custom_node->context->entity_creation_output,
160160
custom_publisher->publisher_id,
161161
custom_node->participant_id, rmw_uxrce_xml_buffer, UXR_REPLACE);
162162
#elif defined(MICRO_XRCEDDS_USE_REFS)
163163
publisher_req = uxr_buffer_create_publisher_xml(
164164
&custom_publisher->owner_node->context->session,
165-
custom_node->context->reliable_output,
165+
*custom_node->context->entity_creation_output,
166166
custom_publisher->publisher_id,
167-
custom_node->participant_id, "", UXR_REPLACE);
167+
custom_node->participant_id,
168+
"",
169+
UXR_REPLACE);
168170
#endif
169171

170172
custom_publisher->datawriter_id = uxr_object_id(
@@ -183,7 +185,7 @@ rmw_create_publisher(
183185

184186
datawriter_req = uxr_buffer_create_datawriter_xml(
185187
&custom_publisher->owner_node->context->session,
186-
custom_node->context->reliable_output,
188+
*custom_node->context->entity_creation_output,
187189
custom_publisher->datawriter_id,
188190
custom_publisher->publisher_id,
189191
rmw_uxrce_xml_buffer,
@@ -196,7 +198,7 @@ rmw_create_publisher(
196198

197199
datawriter_req = uxr_buffer_create_datawriter_ref(
198200
&custom_publisher->owner_node->context->session,
199-
custom_node->context->reliable_output,
201+
*custom_node->context->entity_creation_output,
200202
custom_publisher->datawriter_id,
201203
custom_publisher->publisher_id,
202204
rmw_uxrce_profile_name,
@@ -315,11 +317,11 @@ rmw_destroy_publisher(
315317

316318
uint16_t delete_writer = uxr_buffer_delete_entity(
317319
&custom_publisher->owner_node->context->session,
318-
custom_publisher->owner_node->context->reliable_output,
320+
*custom_node->context->entity_creation_output,
319321
custom_publisher->datawriter_id);
320322
uint16_t delete_publisher = uxr_buffer_delete_entity(
321323
&custom_publisher->owner_node->context->session,
322-
custom_publisher->owner_node->context->reliable_output,
324+
*custom_node->context->entity_creation_output,
323325
custom_publisher->publisher_id);
324326

325327
uint16_t requests[] = {delete_writer, delete_publisher};

rmw_microxrcedds_c/src/rmw_service.c

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -124,8 +124,11 @@ rmw_create_service(
124124
}
125125
service_req = uxr_buffer_create_replier_xml(
126126
&custom_node->context->session,
127-
custom_node->context->reliable_output, custom_service->service_id,
128-
custom_node->participant_id, rmw_uxrce_xml_buffer, UXR_REPLACE);
127+
*custom_node->context->entity_creation_output,
128+
custom_service->service_id,
129+
custom_node->participant_id,
130+
rmw_uxrce_xml_buffer,
131+
UXR_REPLACE);
129132
#elif defined(MICRO_XRCEDDS_USE_REFS)
130133
if (!build_replier_profile(service_name, rmw_uxrce_profile_name, sizeof(rmw_uxrce_profile_name))) {
131134
RMW_SET_ERROR_MSG("failed to generate ref request for service creation");
@@ -134,7 +137,7 @@ rmw_create_service(
134137

135138
service_req = uxr_buffer_create_replier_ref(
136139
&custom_node->context->session,
137-
custom_node->context->reliable_output,
140+
*custom_node->context->entity_creation_output,
138141
custom_client->client_id,
139142
custom_node->participant_id,
140143
rmw_uxrce_profile_name,
@@ -167,7 +170,8 @@ rmw_create_service(
167170

168171
custom_service->request_id = uxr_buffer_request_data(
169172
&custom_node->context->session,
170-
custom_node->context->reliable_output, custom_service->service_id,
173+
*custom_node->context->entity_creation_output,
174+
custom_service->service_id,
171175
custom_service->stream_id, &delivery_control);
172176
}
173177
return rmw_service;
@@ -208,7 +212,8 @@ rmw_destroy_service(
208212
rmw_uxrce_service_t * custom_service = (rmw_uxrce_service_t *)service->data;
209213
uint16_t delete_service =
210214
uxr_buffer_delete_entity(
211-
&custom_node->context->session, custom_node->context->reliable_output,
215+
&custom_node->context->session,
216+
*custom_node->context->entity_creation_output,
212217
custom_service->service_id);
213218

214219
uint16_t requests[] = {delete_service};

rmw_microxrcedds_c/src/rmw_subscription.c

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -155,12 +155,15 @@ rmw_create_subscription(
155155
}
156156
subscriber_req = uxr_buffer_create_subscriber_xml(
157157
&custom_node->context->session,
158-
custom_node->context->reliable_output, custom_subscription->subscriber_id,
159-
custom_node->participant_id, rmw_uxrce_xml_buffer, UXR_REPLACE);
158+
*custom_node->context->entity_creation_output,
159+
custom_subscription->subscriber_id,
160+
custom_node->participant_id,
161+
rmw_uxrce_xml_buffer,
162+
UXR_REPLACE);
160163
#elif defined(MICRO_XRCEDDS_USE_REFS)
161164
subscriber_req = uxr_buffer_create_subscriber_xml(
162165
&custom_node->context->session,
163-
custom_node->context->reliable_output,
166+
*custom_node->context->entity_creation_output,
164167
custom_subscription->subscriber_id,
165168
custom_node->participant_id,
166169
"",
@@ -185,7 +188,7 @@ rmw_create_subscription(
185188

186189
datareader_req = uxr_buffer_create_datareader_xml(
187190
&custom_node->context->session,
188-
custom_node->context->reliable_output,
191+
*custom_node->context->entity_creation_output,
189192
custom_subscription->datareader_id,
190193
custom_subscription->subscriber_id,
191194
rmw_uxrce_xml_buffer,
@@ -198,7 +201,7 @@ rmw_create_subscription(
198201

199202
datareader_req = uxr_buffer_create_datareader_ref(
200203
&custom_node->context->session,
201-
custom_node->context->reliable_output,
204+
*custom_node->context->entity_creation_output,
202205
custom_subscription->datareader_id,
203206
custom_subscription->subscriber_id,
204207
rmw_uxrce_profile_name,
@@ -231,7 +234,8 @@ rmw_create_subscription(
231234

232235
custom_subscription->subscription_request = uxr_buffer_request_data(
233236
&custom_node->context->session,
234-
custom_node->context->reliable_output, custom_subscription->datareader_id,
237+
*custom_node->context->entity_creation_output,
238+
custom_subscription->datareader_id,
235239
custom_subscription->stream_id, &delivery_control);
236240
}
237241
return rmw_subscription;
@@ -297,12 +301,12 @@ rmw_destroy_subscription(rmw_node_t * node, rmw_subscription_t * subscription)
297301
uint16_t delete_datareader =
298302
uxr_buffer_delete_entity(
299303
&custom_subscription->owner_node->context->session,
300-
custom_subscription->owner_node->context->reliable_output,
304+
*custom_node->context->entity_creation_output,
301305
custom_subscription->datareader_id);
302306
uint16_t delete_subscriber =
303307
uxr_buffer_delete_entity(
304308
&custom_subscription->owner_node->context->session,
305-
custom_subscription->owner_node->context->reliable_output,
309+
*custom_node->context->entity_creation_output,
306310
custom_subscription->subscriber_id);
307311

308312
uint16_t requests[] = {delete_datareader, delete_subscriber};

rmw_microxrcedds_c/src/types.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,8 @@ struct rmw_context_impl_t
7070
uxrStreamId best_effort_output;
7171
uxrStreamId best_effort_input;
7272

73+
uxrStreamId * entity_creation_output;
74+
7375
uint8_t input_reliable_stream_buffer[RMW_UXRCE_MAX_BUFFER_SIZE];
7476
uint8_t output_reliable_stream_buffer[RMW_UXRCE_MAX_BUFFER_SIZE];
7577
uint8_t output_best_effort_stream_buffer[RMW_UXRCE_MAX_TRANSPORT_MTU];

0 commit comments

Comments
 (0)