MIP SDK  0.0.1
MicroStrain Communications Library for embedded systems
Classes | Functions
MIP Serialization [CPP]

(De)serialization in C++. More...

Collaboration diagram for MIP Serialization [CPP]:

Classes

class  mip::Serializer
 Serialization class. More...
 

Functions

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...
 

Detailed Description

(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 mip::insert(Serializer& serializer, Type value);
voie mip::extract(Serializer& serializer, Type value);
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:

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);
template<typename T> bool mip::Field::extract(T& value);
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) )
{
// Do something with accel data
printf("Accel X=%f\n", accel.scaled_accel[0]);
}

Function Documentation

◆ 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
EnumThe type of the enum to deserialize. Must be a c++ typed enum.
Parameters
serializerThe serialization instance.
[out]valueThe 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_outThis parameter will be filled with the extracted value.
bufferA pointer to the raw data.
bufferSizeLength of the buffer, or the relevant data within the buffer.
offsetStart reading from this offset in the buffer. Default 0.
exact_sizeIf 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
valueValue to insert.
bufferBuffer to udpate with the value.
bufferSizeSize 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
EnumThe type of the enum to serialize. Must be a c++ typed enum.
Parameters
serializerThe serialization instance.
valueThe 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