(De)serialization in C++.
More...
|
void | mip::insert (Serializer &serializer, bool value) |
|
void | mip::insert (Serializer &serializer, char value) |
|
void | mip::insert (Serializer &serializer, uint8_t value) |
|
void | mip::insert (Serializer &serializer, uint16_t value) |
|
void | mip::insert (Serializer &serializer, uint32_t value) |
|
void | mip::insert (Serializer &serializer, uint64_t value) |
|
void | mip::insert (Serializer &serializer, int8_t value) |
|
void | mip::insert (Serializer &serializer, int16_t value) |
|
void | mip::insert (Serializer &serializer, int32_t value) |
|
void | mip::insert (Serializer &serializer, int64_t value) |
|
void | mip::insert (Serializer &serializer, float value) |
|
void | mip::insert (Serializer &serializer, double value) |
|
template<typename Enum > |
std::enable_if< std::is_enum< Enum >::value, void >::type | mip::insert (Serializer &serializer, Enum value) |
| Inserts an enum into the buffer. More...
|
|
template<typename T > |
bool | mip::insert (const T &value, uint8_t *buffer, size_t bufferSize) |
| Insert the given value into the buffer. More...
|
|
void | mip::extract (Serializer &serializer, bool &value) |
|
void | mip::extract (Serializer &serializer, char &value) |
|
void | mip::extract (Serializer &serializer, uint8_t &value) |
|
void | mip::extract (Serializer &serializer, uint16_t &value) |
|
void | mip::extract (Serializer &serializer, uint32_t &value) |
|
void | mip::extract (Serializer &serializer, uint64_t &value) |
|
void | mip::extract (Serializer &serializer, int8_t &value) |
|
void | mip::extract (Serializer &serializer, int16_t &value) |
|
void | mip::extract (Serializer &serializer, int32_t &value) |
|
void | mip::extract (Serializer &serializer, int64_t &value) |
|
void | mip::extract (Serializer &serializer, float &value) |
|
void | mip::extract (Serializer &serializer, double &value) |
|
template<typename Enum > |
std::enable_if< std::is_enum< Enum >::value, void >::type | mip::extract (Serializer &serializer, Enum &value) |
| Extract an enum from the buffer. More...
|
|
template<typename T > |
bool | mip::extract (T &value_out, const uint8_t *buffer, size_t bufferSize, size_t offset=0, bool exact_size=false) |
| Extract the value given a buffer, size, and starting offset. More...
|
|
(De)serialization in C++.
There are two overloaded functions defined in the mip namespace, insert and extract. The signature for each is as follows:
void extract(Serializer &serializer, Bitfield< Derived > &bitfield)
Definition: descriptors.h:98
void insert(Serializer &serializer, const Bitfield< Derived > &bitfield)
Definition: descriptors.h:97
Where Type
is a struct or numeric type.
There are overloads for all of the MIP definition types:
- Command, response, and data fields
- Enums, bitfields, and nested structs for commands
Additionally, there are overloads with a different signature which allow one to avoid creating a Serializer object every time. These overloads create a serializer internally and pass it on to the regular version.
template<
typename T>
bool mip::insert(
const T& value, uint8_t* buffer,
size_t bufferSize);
bool extract(Field &field) const
Definition: mip.hpp:68
This makes it easy to extract data from a field:
data_sensor::ScaledAccel accel;
MipField field(...);
if( field.extract(accel) )
{
printf("Accel X=%f\n", accel.scaled_accel[0]);
}
◆ extract() [1/14]
void mip::extract |
( |
Serializer & |
serializer, |
|
|
bool & |
value |
|
) |
| |
|
inline |
◆ extract() [2/14]
void mip::extract |
( |
Serializer & |
serializer, |
|
|
char & |
value |
|
) |
| |
|
inline |
◆ extract() [3/14]
void mip::extract |
( |
Serializer & |
serializer, |
|
|
double & |
value |
|
) |
| |
|
inline |
◆ extract() [4/14]
template<typename Enum >
std::enable_if< std::is_enum<Enum>::value, void>::type mip::extract |
( |
Serializer & |
serializer, |
|
|
Enum & |
value |
|
) |
| |
Extract an enum from the buffer.
- Template Parameters
-
Enum | The type of the enum to deserialize. Must be a c++ typed enum. |
- Parameters
-
| serializer | The serialization instance. |
[out] | value | The enum to populate. |
◆ extract() [5/14]
void mip::extract |
( |
Serializer & |
serializer, |
|
|
float & |
value |
|
) |
| |
|
inline |
◆ extract() [6/14]
void mip::extract |
( |
Serializer & |
serializer, |
|
|
int16_t & |
value |
|
) |
| |
|
inline |
◆ extract() [7/14]
void mip::extract |
( |
Serializer & |
serializer, |
|
|
int32_t & |
value |
|
) |
| |
|
inline |
◆ extract() [8/14]
void mip::extract |
( |
Serializer & |
serializer, |
|
|
int64_t & |
value |
|
) |
| |
|
inline |
◆ extract() [9/14]
void mip::extract |
( |
Serializer & |
serializer, |
|
|
int8_t & |
value |
|
) |
| |
|
inline |
◆ extract() [10/14]
void mip::extract |
( |
Serializer & |
serializer, |
|
|
uint16_t & |
value |
|
) |
| |
|
inline |
◆ extract() [11/14]
void mip::extract |
( |
Serializer & |
serializer, |
|
|
uint32_t & |
value |
|
) |
| |
|
inline |
◆ extract() [12/14]
void mip::extract |
( |
Serializer & |
serializer, |
|
|
uint64_t & |
value |
|
) |
| |
|
inline |
◆ extract() [13/14]
void mip::extract |
( |
Serializer & |
serializer, |
|
|
uint8_t & |
value |
|
) |
| |
|
inline |
◆ extract() [14/14]
template<typename T >
bool mip::extract |
( |
T & |
value_out, |
|
|
const uint8_t * |
buffer, |
|
|
size_t |
bufferSize, |
|
|
size_t |
offset = 0 , |
|
|
bool |
exact_size = false |
|
) |
| |
Extract the value given a buffer, size, and starting offset.
- Parameters
-
[out] | value_out | This parameter will be filled with the extracted value. |
| buffer | A pointer to the raw data. |
| bufferSize | Length of the buffer, or the relevant data within the buffer. |
| offset | Start reading from this offset in the buffer. Default 0. |
| exact_size | If true, exactly bufferSize bytes must be used in order for the return value to be true. |
- Returns
- True if the extraction was successful, false otherwise. "Success" means the supplied data was sufficient. If exact_size is true, then this function only returns true if exactly bufferSize bytes were consumed.
◆ insert() [1/14]
template<typename T >
bool mip::insert |
( |
const T & |
value, |
|
|
uint8_t * |
buffer, |
|
|
size_t |
bufferSize |
|
) |
| |
Insert the given value into the buffer.
If the buffer has insufficient space, this function returns false and the contents of buffer may be partially modified.
- Parameters
-
value | Value to insert. |
buffer | Buffer to udpate with the value. |
bufferSize | Size of the buffer. |
- Returns
- true if sufficient space was available, false otherwise.
◆ insert() [2/14]
void mip::insert |
( |
Serializer & |
serializer, |
|
|
bool |
value |
|
) |
| |
|
inline |
◆ insert() [3/14]
void mip::insert |
( |
Serializer & |
serializer, |
|
|
char |
value |
|
) |
| |
|
inline |
◆ insert() [4/14]
void mip::insert |
( |
Serializer & |
serializer, |
|
|
double |
value |
|
) |
| |
|
inline |
◆ insert() [5/14]
template<typename Enum >
std::enable_if< std::is_enum<Enum>::value, void>::type mip::insert |
( |
Serializer & |
serializer, |
|
|
Enum |
value |
|
) |
| |
Inserts an enum into the buffer.
- Template Parameters
-
Enum | The type of the enum to serialize. Must be a c++ typed enum. |
- Parameters
-
serializer | The serialization instance. |
value | The enum to insert. |
◆ insert() [6/14]
void mip::insert |
( |
Serializer & |
serializer, |
|
|
float |
value |
|
) |
| |
|
inline |
◆ insert() [7/14]
void mip::insert |
( |
Serializer & |
serializer, |
|
|
int16_t |
value |
|
) |
| |
|
inline |
◆ insert() [8/14]
void mip::insert |
( |
Serializer & |
serializer, |
|
|
int32_t |
value |
|
) |
| |
|
inline |
◆ insert() [9/14]
void mip::insert |
( |
Serializer & |
serializer, |
|
|
int64_t |
value |
|
) |
| |
|
inline |
◆ insert() [10/14]
void mip::insert |
( |
Serializer & |
serializer, |
|
|
int8_t |
value |
|
) |
| |
|
inline |
◆ insert() [11/14]
void mip::insert |
( |
Serializer & |
serializer, |
|
|
uint16_t |
value |
|
) |
| |
|
inline |
◆ insert() [12/14]
void mip::insert |
( |
Serializer & |
serializer, |
|
|
uint32_t |
value |
|
) |
| |
|
inline |
◆ insert() [13/14]
void mip::insert |
( |
Serializer & |
serializer, |
|
|
uint64_t |
value |
|
) |
| |
|
inline |
◆ insert() [14/14]
void mip::insert |
( |
Serializer & |
serializer, |
|
|
uint8_t |
value |
|
) |
| |
|
inline |