From cf9069c497fa96af58052dbdcb17566719ba934c Mon Sep 17 00:00:00 2001 From: Antonio Cuadros <49162117+Acuadros95@users.noreply.github.com> Date: Thu, 22 Jun 2023 07:57:43 +0200 Subject: [PATCH 1/6] Fix fragmentation check on uxr_prepare_reliable_buffer_to_write (#360) * Fix fragmentation check on uxr_prepare_reliable_buffer_to_write Signed-off-by: acuadros95 * Fix length check Signed-off-by: acuadros95 --------- Signed-off-by: acuadros95 --- src/c/core/session/stream/output_reliable_stream.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/c/core/session/stream/output_reliable_stream.c b/src/c/core/session/stream/output_reliable_stream.c index b3ce287dd..93ca6e25a 100644 --- a/src/c/core/session/stream/output_reliable_stream.c +++ b/src/c/core/session/stream/output_reliable_stream.c @@ -62,6 +62,9 @@ bool uxr_prepare_reliable_buffer_to_write( uint8_t* buffer = uxr_get_reliable_buffer(&stream->base, seq_num); size_t buffer_size = uxr_get_reliable_buffer_size(&stream->base, seq_num); + uint16_t available_block_size = (uint16_t)(buffer_capacity - (uint16_t)(stream->offset + SUBHEADER_SIZE)); + size_t remaining_blocks = get_available_free_slots(stream); + // Aligment required for inserting an XRCE subheader buffer_size += ucdr_alignment(buffer_size, 4); @@ -95,7 +98,7 @@ bool uxr_prepare_reliable_buffer_to_write( } } /* Check if the message fit in a fragmented message */ - else + else if (length <= available_block_size * remaining_blocks) { /* Check if the current buffer free space is too small */ if (buffer_size + (size_t)SUBHEADER_SIZE >= buffer_capacity) @@ -105,13 +108,10 @@ bool uxr_prepare_reliable_buffer_to_write( buffer_size = uxr_get_reliable_buffer_size(&stream->base, seq_num); } - size_t remaining_blocks = get_available_free_slots(stream); - - uint16_t available_block_size = (uint16_t)(buffer_capacity - (uint16_t)(stream->offset + SUBHEADER_SIZE)); uint16_t first_fragment_size = (uint16_t)(buffer_capacity - (uint16_t)(buffer_size + SUBHEADER_SIZE)); size_t remaining_size = length - first_fragment_size; - size_t last_fragment_size; - uint16_t necessary_complete_blocks; + size_t last_fragment_size = 0; + uint16_t necessary_complete_blocks = 0; if (0 == (remaining_size % available_block_size)) { last_fragment_size = available_block_size; From 96ec27152d2013ed7c13fb578697178f37d75757 Mon Sep 17 00:00:00 2001 From: acuadros95 Date: Mon, 10 Jul 2023 10:39:28 +0200 Subject: [PATCH 2/6] Bump version Signed-off-by: acuadros95 --- CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3518e41f8..9747f551b 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -81,8 +81,8 @@ set(UCLIENT_C_STANDARD 99 CACHE STRING "Version of the C language used to build ############################################################################### # Dependencies ############################################################################### -set(_microcdr_version 2.0.1) -set(_microcdr_tag v2.0.1) +set(_microcdr_version 2.0.2) +set(_microcdr_tag v2.0.2) set(_deps "") list(APPEND _deps "microcdr\;${_microcdr_version}") @@ -92,7 +92,7 @@ list(APPEND _deps "microcdr\;${_microcdr_version}") ############################################################################### set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules) if(NOT UCLIENT_SUPERBUILD) - project(microxrcedds_client VERSION "2.4.0" LANGUAGES C) + project(microxrcedds_client VERSION "2.4.1" LANGUAGES C) else() project(uclient_superbuild NONE) include(${PROJECT_SOURCE_DIR}/cmake/SuperBuild.cmake) From b8dbfaa775d0d842edfa9a0eb2ebc8ebdb1a0c14 Mon Sep 17 00:00:00 2001 From: acuadros95 Date: Mon, 10 Jul 2023 10:57:50 +0200 Subject: [PATCH 3/6] Revert micro-CDR bump version Signed-off-by: acuadros95 --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9747f551b..d256bb7d7 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -81,8 +81,8 @@ set(UCLIENT_C_STANDARD 99 CACHE STRING "Version of the C language used to build ############################################################################### # Dependencies ############################################################################### -set(_microcdr_version 2.0.2) -set(_microcdr_tag v2.0.2) +set(_microcdr_version 2.0.1) +set(_microcdr_tag v2.0.1) set(_deps "") list(APPEND _deps "microcdr\;${_microcdr_version}") From 8ffecce848877f6d8d60293df719a2036262d9ab Mon Sep 17 00:00:00 2001 From: Pablo Garrido Date: Wed, 27 Sep 2023 10:45:37 +0200 Subject: [PATCH 4/6] Rename UXR_CONFIG_CAN_TRANSPORT_MTU (#372) Because CAN-FD MTU is fixed, it's not configurable. UXR_CONFIG_CAN_TRANSPORT_MTU is a bit misleading. Thus, this commit rename it to UXR_CAN_TRANSPORT_MTU. Signed-off-by: Yasushi SHOJI Co-authored-by: Yasushi SHOJI --- examples/PublishHelloWorldCAN/main.c | 2 +- include/uxr/client/profile/transport/can/can_transport.h | 5 +++-- src/c/profile/transport/can/can_transport.c | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/examples/PublishHelloWorldCAN/main.c b/examples/PublishHelloWorldCAN/main.c index f6f45b473..ae98a17a9 100644 --- a/examples/PublishHelloWorldCAN/main.c +++ b/examples/PublishHelloWorldCAN/main.c @@ -22,7 +22,7 @@ #include //atoi #define STREAM_HISTORY 8 -#define BUFFER_SIZE UXR_CONFIG_CAN_TRANSPORT_MTU* STREAM_HISTORY +#define BUFFER_SIZE UXR_CAN_TRANSPORT_MTU* STREAM_HISTORY int main( int args, diff --git a/include/uxr/client/profile/transport/can/can_transport.h b/include/uxr/client/profile/transport/can/can_transport.h index 3bc36af02..cb77dc30b 100644 --- a/include/uxr/client/profile/transport/can/can_transport.h +++ b/include/uxr/client/profile/transport/can/can_transport.h @@ -29,11 +29,12 @@ extern "C" #include #include -#define UXR_CONFIG_CAN_TRANSPORT_MTU 63 +/* For CAN-FD, MTU is fixed value */ +#define UXR_CAN_TRANSPORT_MTU 63 typedef struct uxrCANTransport { - uint8_t buffer[UXR_CONFIG_CAN_TRANSPORT_MTU]; + uint8_t buffer[UXR_CAN_TRANSPORT_MTU]; uxrCommunication comm; struct uxrCANPlatform platform; } uxrCANTransport; diff --git a/src/c/profile/transport/can/can_transport.c b/src/c/profile/transport/can/can_transport.c index 97fe09b54..c781ef215 100644 --- a/src/c/profile/transport/can/can_transport.c +++ b/src/c/profile/transport/can/can_transport.c @@ -103,7 +103,7 @@ bool uxr_init_can_transport( transport->comm.send_msg = send_can_msg; transport->comm.recv_msg = recv_can_msg; transport->comm.comm_error = get_can_error; - transport->comm.mtu = UXR_CONFIG_CAN_TRANSPORT_MTU; + transport->comm.mtu = UXR_CAN_TRANSPORT_MTU; UXR_INIT_LOCK(&transport->comm.mutex); rv = true; } From 371718ca16c361f639c06a2761b9497f8706794a Mon Sep 17 00:00:00 2001 From: Pablo Garrido Date: Tue, 21 Nov 2023 11:22:39 +0100 Subject: [PATCH 5/6] Bump version --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d256bb7d7..e7e0258e0 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -92,7 +92,7 @@ list(APPEND _deps "microcdr\;${_microcdr_version}") ############################################################################### set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules) if(NOT UCLIENT_SUPERBUILD) - project(microxrcedds_client VERSION "2.4.1" LANGUAGES C) + project(microxrcedds_client VERSION "2.4.2" LANGUAGES C) else() project(uclient_superbuild NONE) include(${PROJECT_SOURCE_DIR}/cmake/SuperBuild.cmake) From f3c39fe4c6829e4cfc0809b3a2b5e648ab2fee92 Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Sat, 3 Sep 2022 16:16:24 -0400 Subject: [PATCH 6/6] [REJECTED] util/time.c use PX4 hrt_absolute_time() --- src/c/util/time.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/c/util/time.c b/src/c/util/time.c index 66c496dc8..12aec56d0 100644 --- a/src/c/util/time.c +++ b/src/c/util/time.c @@ -9,6 +9,22 @@ #include "task.h" #endif /* ifdef WIN32 */ +// PX4 +#if defined(__PX4_NUTTX) || defined(__PX4_POSIX) || defined(UCLIENT_PLATFORM_NUTTX) || defined(UCLIENT_PLATFORM_POSIX) + +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS +# define __END_DECLS +#endif + +#define __EXPORT __attribute__ ((visibility ("default"))) +#include + +#endif // PX4 + //================================================================== // PUBLIC //================================================================== @@ -55,6 +71,9 @@ int64_t uxr_nanos( struct timespec ts; z_impl_clock_gettime(CLOCK_REALTIME, &ts); return (((int64_t)ts.tv_sec) * 1000000000) + ts.tv_nsec; +#elif defined(__PX4_NUTTX) || defined(__PX4_POSIX) || defined(UCLIENT_PLATFORM_NUTTX) || defined(UCLIENT_PLATFORM_POSIX) + + return (int64_t)(hrt_absolute_time() * 1000); #else struct timespec ts; clock_gettime(CLOCK_REALTIME, &ts);