17#ifndef STAUBLI_ROBOT_DRIVER__COMMUNICATION__SERIALIZATION_HPP_
18#define STAUBLI_ROBOT_DRIVER__COMMUNICATION__SERIALIZATION_HPP_
28#if defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__)
29 #if __BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__
30 #error "This code requires a little-endian system"
32#elif defined(__BYTE_ORDER) && defined(__LITTLE_ENDIAN)
33 #if __BYTE_ORDER != __LITTLE_ENDIAN
34 #error "This code requires a little-endian system"
36#elif defined(_BYTE_ORDER) && defined(_LITTLE_ENDIAN)
37 #if _BYTE_ORDER != _LITTLE_ENDIAN
38 #error "This code requires a little-endian system"
41 #error "Unknown endianness, cannot determine if system is little-endian"
62 memcpy(buffer, &value,
sizeof(value));
68 memcpy(buffer, &value,
sizeof(value));
74 memcpy(buffer, &value,
sizeof(value));
81 float value_float =
static_cast<float>(value);
101 memcpy(&value, buffer,
sizeof(value));
102 return sizeof(value);
107 memcpy(&value, buffer,
sizeof(value));
108 return sizeof(value);
113 memcpy(&value, buffer,
sizeof(value));
114 return sizeof(value);
122 value =
static_cast<double>(value_float);
137template<
typename T, std::
size_t N>
141 for (
const auto& item : arr) {
156template<
typename T, std::
size_t N>
160 for (
auto& item : arr) {
Definition messages.hpp:23
size_t deserialize_type(const uint8_t *buffer, uint8_t &value)
Definition serialization.hpp:93
size_t serialize_array(const std::array< T, N > &arr, uint8_t *buffer)
Serialize an array of type T into a byte buffer.
Definition serialization.hpp:138
size_t deserialize_array(const uint8_t *buffer, std::array< T, N > &arr)
Deserialize an array of type T from a byte buffer.
Definition serialization.hpp:157
size_t serialize_type(const uint8_t &value, uint8_t *buffer)
Definition serialization.hpp:54