Skip to content

Commit 4fafb7f

Browse files
committed
feat: use endianness module in api/slice
1 parent a6ee010 commit 4fafb7f

File tree

2 files changed

+12
-27
lines changed

2 files changed

+12
-27
lines changed

src/api/api.c

+5-8
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
#include "zenoh-pico/system/platform.h"
3939
#include "zenoh-pico/transport/multicast.h"
4040
#include "zenoh-pico/transport/unicast.h"
41+
#include "zenoh-pico/utils/endianness.h"
4142
#include "zenoh-pico/utils/logging.h"
4243
#include "zenoh-pico/utils/result.h"
4344
#include "zenoh-pico/utils/uuid.h"
@@ -351,9 +352,7 @@ int8_t zp_bytes_deserialize_into_pair(const z_loaned_bytes_t *bytes, z_owned_byt
351352
return _Z_ERR_SYSTEM_OUT_OF_MEMORY;
352353
}
353354
// Extract first item size
354-
size_t first_len = 0;
355-
// FIXME: size endianness, Issue #420
356-
memcpy(&first_len, &bytes->_slice.start[*curr_idx], sizeof(uint32_t));
355+
size_t first_len = _z_host_le_load32(&bytes->_slice.start[*curr_idx]);
357356
*curr_idx += sizeof(uint32_t);
358357
// Allocate first item bytes
359358
*first->_val = _z_bytes_make(first_len);
@@ -365,8 +364,7 @@ int8_t zp_bytes_deserialize_into_pair(const z_loaned_bytes_t *bytes, z_owned_byt
365364
*curr_idx += first_len;
366365

367366
// Extract second item size
368-
size_t second_len = 0;
369-
memcpy(&second_len, &bytes->_slice.start[*curr_idx], sizeof(uint32_t));
367+
size_t second_len = _z_host_le_load32(&bytes->_slice.start[*curr_idx]);
370368
*curr_idx += sizeof(uint32_t);
371369
// Allocate second item bytes
372370
*second->_val = _z_bytes_make(second_len);
@@ -571,12 +569,11 @@ int8_t zp_bytes_serialize_from_pair(z_owned_bytes_t *bytes, z_owned_bytes_t *fir
571569
size_t first_len = z_slice_len(&first->_val->_slice);
572570
size_t second_len = z_slice_len(&second->_val->_slice);
573571
// Copy data
574-
// FIXME: size endianness, Issue #420
575-
memcpy((uint8_t *)&bytes->_val->_slice.start[*curr_idx], &first_len, sizeof(uint32_t));
572+
_z_host_le_store32((uint32_t)first_len, (uint8_t *)&bytes->_val->_slice.start[*curr_idx]);
576573
*curr_idx += sizeof(uint32_t);
577574
memcpy((uint8_t *)&bytes->_val->_slice.start[*curr_idx], z_slice_data(&first->_val->_slice), first_len);
578575
*curr_idx += first_len;
579-
memcpy((uint8_t *)&bytes->_val->_slice.start[*curr_idx], &second_len, sizeof(uint32_t));
576+
_z_host_le_store32((uint32_t)second_len, (uint8_t *)&bytes->_val->_slice.start[*curr_idx]);
580577
*curr_idx += sizeof(uint32_t);
581578
memcpy((uint8_t *)&bytes->_val->_slice.start[*curr_idx], z_slice_data(&second->_val->_slice), second_len);
582579
*curr_idx += second_len;

src/collections/slice.c

+7-19
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
#include <string.h>
1919

2020
#include "zenoh-pico/system/platform.h"
21+
#include "zenoh-pico/utils/endianness.h"
2122
#include "zenoh-pico/utils/result.h"
2223

2324
/*-------- Slice --------*/
@@ -162,24 +163,11 @@ uint8_t _z_bytes_to_uint8(const _z_bytes_t *bs) {
162163
return val;
163164
}
164165

165-
// FIXME: int16+ endianness, Issue #420
166-
uint16_t _z_bytes_to_uint16(const _z_bytes_t *bs) {
167-
uint16_t val = 0;
168-
memcpy(&val, bs->_slice.start, sizeof(val));
169-
return val;
170-
}
166+
uint16_t _z_bytes_to_uint16(const _z_bytes_t *bs) { return _z_host_le_load16(bs->_slice.start); }
171167

172-
uint32_t _z_bytes_to_uint32(const _z_bytes_t *bs) {
173-
uint32_t val = 0;
174-
memcpy(&val, bs->_slice.start, sizeof(val));
175-
return val;
176-
}
168+
uint32_t _z_bytes_to_uint32(const _z_bytes_t *bs) { return _z_host_le_load32(bs->_slice.start); }
177169

178-
uint64_t _z_bytes_to_uint64(const _z_bytes_t *bs) {
179-
uint64_t val = 0;
180-
memcpy(&val, bs->_slice.start, sizeof(val));
181-
return val;
182-
}
170+
uint64_t _z_bytes_to_uint64(const _z_bytes_t *bs) { return _z_host_le_load64(bs->_slice.start); }
183171

184172
float _z_bytes_to_float(const _z_bytes_t *bs) {
185173
float val = 0;
@@ -222,7 +210,7 @@ _z_bytes_t _z_bytes_from_uint16(uint16_t val) {
222210
return ret;
223211
}
224212
// Encode int
225-
memcpy((uint8_t *)ret._slice.start, &val, sizeof(val));
213+
_z_host_le_store16(val, (uint8_t *)ret._slice.start);
226214
return ret;
227215
}
228216

@@ -233,7 +221,7 @@ _z_bytes_t _z_bytes_from_uint32(uint32_t val) {
233221
return ret;
234222
}
235223
// Encode int
236-
memcpy((uint8_t *)ret._slice.start, &val, sizeof(val));
224+
_z_host_le_store32(val, (uint8_t *)ret._slice.start);
237225
return ret;
238226
}
239227

@@ -244,7 +232,7 @@ _z_bytes_t _z_bytes_from_uint64(uint64_t val) {
244232
return ret;
245233
}
246234
// Encode int
247-
memcpy((uint8_t *)ret._slice.start, &val, sizeof(val));
235+
_z_host_le_store64(val, (uint8_t *)ret._slice.start);
248236
return ret;
249237
}
250238

0 commit comments

Comments
 (0)