zenoh: Use CDRv1 to match ROS2

Fixes various padding related serialization issues.
This commit is contained in:
Peter van der Perk
2025-06-08 20:24:11 +02:00
committed by Beat Küng
parent f99759db87
commit 9ffd31097d
2 changed files with 7 additions and 7 deletions
@@ -78,10 +78,10 @@ public:
memcpy(buf, ros2_header, sizeof(ros2_header));
dds_ostream_t os;
os.m_buffer = buf;
os.m_index = (uint32_t)sizeof(ros2_header);
os.m_buffer = &buf[4];
os.m_index = 0;
os.m_size = (uint32_t)sizeof(ros2_header) + _uorb_meta->o_size + CDR_SAFETY_MARGIN;
os.m_xcdr_version = DDSI_RTPS_CDR_ENC_VERSION_2;
os.m_xcdr_version = DDSI_RTPS_CDR_ENC_VERSION_1;
if (dds_stream_write(&os,
&dds_allocator,
@@ -80,8 +80,8 @@ public:
if (z_bytes_get_contiguous_view(payload, &view) == Z_OK) {
const uint8_t *ptr = z_slice_data(z_loan(view));
dds_istream_t is = {.m_buffer = (unsigned char *)(ptr), .m_size = static_cast<int>(len),
.m_index = 4, .m_xcdr_version = DDSI_RTPS_CDR_ENC_VERSION_2
dds_istream_t is = {.m_buffer = (unsigned char *)(ptr + 4), .m_size = static_cast<int>(len),
.m_index = 0, .m_xcdr_version = DDSI_RTPS_CDR_ENC_VERSION_1
};
dds_stream_read(&is, data, &dds_allocator, _cdr_ops);
@@ -92,8 +92,8 @@ public:
z_bytes_reader_t reader = z_bytes_get_reader(payload);
z_bytes_reader_read(&reader, reassembled_payload, len);
dds_istream_t is = {.m_buffer = reassembled_payload, .m_size = static_cast<int>(len),
.m_index = 4, .m_xcdr_version = DDSI_RTPS_CDR_ENC_VERSION_2
dds_istream_t is = {.m_buffer = &reassembled_payload[4], .m_size = static_cast<int>(len),
.m_index = 0, .m_xcdr_version = DDSI_RTPS_CDR_ENC_VERSION_1
};
dds_stream_read(&is, data, &dds_allocator, _cdr_ops);
}