@@ -21,7 +21,7 @@ extern rmw_uxrce_transport_params_t rmw_uxrce_transport_default_params;
2121rmw_ret_t rmw_uxrce_transport_init (
2222 rmw_context_impl_t * context_impl ,
2323 rmw_init_options_impl_t * init_options_impl ,
24- void * transport )
24+ void * override_transport )
2525{
2626#ifdef RMW_UXRCE_TRANSPORT_SERIAL
2727 const char * serial_device = (NULL == init_options_impl ) ?
@@ -81,7 +81,7 @@ rmw_ret_t rmw_uxrce_transport_init(
8181 }
8282
8383 uxrSerialTransport * serial_transport = (NULL == context_impl ) ?
84- (uxrSerialTransport * )transport :
84+ (uxrSerialTransport * )override_transport :
8585 & context_impl -> transport ;
8686
8787 if (!uxr_init_serial_transport (serial_transport , fd , 0 , 1 )) {
@@ -92,30 +92,40 @@ rmw_ret_t rmw_uxrce_transport_init(
9292 RMW_SET_ERROR_MSG ("rmw_transport_init SERIAL: invalid serial device file descriptor" );
9393 return RMW_RET_ERROR ;
9494 }
95- #elif defined(RMW_UXRCE_TRANSPORT_UDP )
95+ #elif defined(RMW_UXRCE_TRANSPORT_UDP ) || defined(RMW_UXRCE_TRANSPORT_TCP )
96+ const char * agent_ip = (NULL == init_options_impl ) ?
97+ RMW_UXRCE_DEFAULT_IP :
98+ init_options_impl -> transport_params .agent_address ;
99+ const char * agent_port = (NULL == init_options_impl ) ?
100+ RMW_UXRCE_DEFAULT_PORT :
101+ init_options_impl -> transport_params .agent_port ;
102+
96103#ifdef RMW_UXRCE_TRANSPORT_IPV4
97104 uxrIpProtocol ip_protocol = UXR_IPv4 ;
98105#elif defined(RMW_UXRCE_TRANSPORT_IPV6 )
99106 uxrIpProtocol ip_protocol = UXR_IPv6 ;
100107#endif /* ifdef RMW_UXRCE_TRANSPORT_IPV4 */
101108
102- uxrUDPTransport * udp_transport = (NULL == context_impl ) ?
103- (uxrUDPTransport * )transport :
104- & context_impl -> transport ;
105- const char * agent_ip = (NULL == init_options_impl ) ?
106- RMW_UXRCE_DEFAULT_UDP_IP :
107- init_options_impl -> transport_params .agent_address ;
108- const char * agent_port = (NULL == init_options_impl ) ?
109- RMW_UXRCE_DEFAULT_UDP_PORT :
110- init_options_impl -> transport_params .agent_port ;
109+ #ifdef RMW_UXRCE_TRANSPORT_UDP
110+ #define TRANSPORT_TYPE uxrUDPTransport
111+ #define TRANSPORT_INIT_FUNTION uxr_init_udp_transport
112+ #elif defined(RMW_UXRCE_TRANSPORT_TCP )
113+ #define TRANSPORT_TYPE uxrTCPTransport
114+ #define TRANSPORT_INIT_FUNTION uxr_init_tcp_transport
115+ #endif /* ifdef RMW_UXRCE_TRANSPORT_IPV4 */
116+
117+ TRANSPORT_TYPE * transport = (NULL == context_impl ) ?
118+ (TRANSPORT_TYPE * )override_transport : & context_impl -> transport ;
111119
112- if (!uxr_init_udp_transport ( udp_transport , ip_protocol , agent_ip , agent_port )) {
113- RMW_SET_ERROR_MSG ("rmw_transport_init UDP: cannot init XRCE transport" );
120+ if (!TRANSPORT_INIT_FUNTION ( transport , ip_protocol , agent_ip , agent_port )) {
121+ RMW_SET_ERROR_MSG ("rmw_transport_init UDP/TCP : cannot init XRCE transport" );
114122 return RMW_RET_ERROR ;
115123 }
124+ #undef TRANSPORT_TYPE
125+ #undef TRANSPORT_INIT_FUNTION
116126#elif defined(RMW_UXRCE_TRANSPORT_CUSTOM )
117127 uxrCustomTransport * custom_transport = (NULL == context_impl ) ?
118- (uxrCustomTransport * )transport :
128+ (uxrCustomTransport * )override_transport :
119129 & context_impl -> transport ;
120130 void * args = (NULL == init_options_impl ) ?
121131 rmw_uxrce_transport_default_params .args :
0 commit comments