mirror of
https://github.com/PX4/PX4-Autopilot.git
synced 2026-05-23 14:47:44 +08:00
zenoh: Use CDRv1 to match ROS2
Fixes various padding related serialization issues.
This commit is contained in:
committed by
Beat Küng
parent
f99759db87
commit
9ffd31097d
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user