MIP_SDK  v3.0.0
MicroStrain Communications Library for embedded systems
Modules | Classes | Typedefs | Enumerations | Functions
C++ API

This module contains functions and classes for communicating with a MIP device in C++. More...

Modules

 Mip Commands
 Contains all MIP command definitions.
 
 Mip Data
 Contains all MIP data definitions.
 

Classes

struct  mip::DescriptorRate
 
struct  mip::Vector< T, N >
 Vector is a wrapper around an array of some type T, usually float or double. More...
 
struct  mip::CmdQueue
 C++ wrapper around a command queue. More...
 
struct  mip::PendingCmd
 C++ class representing the state of a MIP command. More...
 
struct  mip::CompositeDescriptor
 Convenience struct holding both descriptor set and field descriptor. More...
 
struct  mip::FieldStruct
 
struct  mip::Bitfield< DerivedT >
 A dummy struct which is used to mark bitfield objects. More...
 
struct  mip::TypedResult< MipCmd >
 A CmdResult that knows the corresponding command type. More...
 
class  mip::FieldView
 C++ class representing a MIP field. More...
 
struct  mip::Dispatcher
 
class  mip::Interface
 Represents a connected MIP device. More...
 
class  mip::PacketView
 C++ class representing a view of a MIP packet. More...
 
class  mip::SizedPacketBuf< BufferSize >
 A mip packet with a self-contained buffer (useful with std::vector). More...
 
class  mip::Parser
 C++ class representing a MIP parser. More...
 
struct  mip::CmdResult
 Represents the status of a MIP command. More...
 

Typedefs

using mip::Vector3f = Vector< float, 3 >
 
using mip::Vector4f = Vector< float, 4 >
 
using mip::Matrix3f = Vector< float, 9 >
 
using mip::Vector3d = Vector< double, 3 >
 
using mip::Vector4d = Vector< double, 4 >
 
using mip::Matrix3d = Vector< double, 9 >
 
using mip::Quatf = Vector4f
 
template<class T >
using mip::isField = std::is_base_of< FieldStruct, T >
 
template<class T >
using mip::EnableForFieldTypes = std::enable_if< isField< T >::value, T >
 
using mip::DispatchHandler = C::mip_dispatch_handler
 
typedef SizedPacketBuf< mip::PACKET_LENGTH_MAX > mip::PacketBuf
 Typedef for SizedPacketBuf of max possible size. More...
 

Enumerations

enum  mip::FunctionSelector : uint8_t {
  mip::FunctionSelector::WRITE = C::MIP_FUNCTION_WRITE, mip::FunctionSelector::READ = C::MIP_FUNCTION_READ, mip::FunctionSelector::SAVE = C::MIP_FUNCTION_SAVE, mip::FunctionSelector::LOAD = C::MIP_FUNCTION_LOAD,
  mip::FunctionSelector::RESET = C::MIP_FUNCTION_RESET
}
 

Functions

template<typename T , size_t N>
size_t mip::insert (Serializer &serializer, const Vector< T, N > &v)
 
template<typename T , size_t N>
size_t mip::extract (Serializer &serializer, Vector< T, N > &v)
 
template<class Derived >
size_t mip::insert (Serializer &serializer, const Bitfield< Derived > &bitfield)
 
template<class Derived >
size_t mip::extract (Serializer &serializer, Bitfield< Derived > &bitfield)
 
bool mip::isValidDescriptorSet (uint8_t descriptorSet)
 
bool mip::isDataDescriptorSet (uint8_t descriptorSet)
 
bool mip::isCommandDescriptorSet (uint8_t descriptorSet)
 
bool mip::isReservedDescriptorSet (uint8_t descriptorSet)
 
bool mip::isGnssDataDescriptorSet (uint8_t descriptorSet)
 
bool mip::isValidFieldDescriptor (uint8_t fieldDescriptor)
 
bool mip::isCommandFieldDescriptor (uint8_t fieldDescriptor)
 
bool mip::isReplyFieldDescriptor (uint8_t fieldDescriptor)
 
bool mip::isResponseFieldDescriptor (uint8_t fieldDescriptor)
 
bool mip::isReservedFieldDescriptor (uint8_t fieldDescriptor)
 
bool mip::isSharedDataFieldDescriptor (uint8_t fieldDescriptor)
 
void mip::connect_interface (mip::Interface &device, microstrain::Connection &conn)
 Sets up the mip interface callbacks to point at this object. More...
 
template<class Cmd >
CmdResult mip::runCommand (C::mip_interface &device, const Cmd &cmd, Timeout additionalTime=0)
 
template<class Cmd >
CmdResult mip::runCommand (C::mip_interface &device, const Cmd &cmd, typename Cmd::Response &response, Timeout additionalTime=0)
 
template<class Cmd , class... Args>
CmdResult mip::runCommand (C::mip_interface &device, const Args &&... args, Timeout additionalTime)
 
template<class Cmd >
bool mip::startCommand (C::mip_interface &device, C::mip_pending_cmd &pending, const Cmd &cmd, Timeout additionalTime)
 
template<class Function >
bool mip::parseMipDataFromSource (C::mip_parser &parser, Function reader, size_t maxPackets)
 Read data from a source into the internal parsing buffer. More...
 
template<bool(*)(Interface &, const uint8_t *, size_t) Send>
void mip::Interface::setSendFunction ()
 Sets the send callback function (free function version). More...
 
template<bool(*)(Interface &, uint8_t *, size_t, Timeout, size_t *, Timestamp *) Recv>
void mip::Interface::setRecvFunction ()
 Sets the receive callback function (free function version). More...
 
template<bool(*)(Interface &, Timeout) Update>
void mip::Interface::setUpdateFunction ()
 Sets the update callback function (free function version). More...
 
template<class Derived , bool(Derived::*)(const uint8_t *, size_t) Send>
void mip::Interface::setSendFunction ()
 Sets the send callback function (derived member function version). More...
 
template<class Derived , bool(Derived::*)(uint8_t *, size_t, Timeout, size_t *, Timestamp *) Recv>
void mip::Interface::setRecvFunction ()
 Sets the receive callback function (derived member function version). More...
 
template<class Derived , bool(Derived::*)(Timeout) Update>
void mip::Interface::setUpdateFunction ()
 Sets the update callback function (derived member function version). More...
 
template<class T , bool(T::*)(const uint8_t *, size_t) Send, bool(T::*)(uint8_t *, size_t, Timeout, size_t *, Timestamp *) Recv, bool(T::*)(Timeout) Update = nullptr>
void mip::Interface::setCallbacks (T *object)
 Sets the callback functions to a common class object. More...
 
template<void(*)(void *, const PacketView &, Timestamp) Callback>
void mip::Interface::registerPacketCallback (C::mip_dispatch_handler &handler, uint8_t descriptorSet, bool afterFields, void *userData=nullptr)
 Registers a packet callback (free function version). More...
 
template<class Object , void(Object::*)(const PacketView &, Timestamp) Callback>
void mip::Interface::registerPacketCallback (C::mip_dispatch_handler &handler, uint8_t descriptorSet, bool afterFields, Object *object)
 Registers a packet callback (member function version). More...
 
template<void(*)(void *, const FieldView &, Timestamp) Callback>
void mip::Interface::registerFieldCallback (C::mip_dispatch_handler &handler, uint8_t descriptorSet, uint8_t fieldDescriptor, void *userData=nullptr)
 Registers a field callback (free function version). More...
 
template<class Object , void(Object::*)(const FieldView &field, Timestamp) Callback>
void mip::Interface::registerFieldCallback (C::mip_dispatch_handler &handler, uint8_t descriptorSet, uint8_t fieldDescriptor, Object *object)
 Registers a field callback (member function version). More...
 
template<class DataField , void(*)(void *, const DataField &, Timestamp) Callback>
void mip::Interface::registerDataCallback (C::mip_dispatch_handler &handler, void *userData=nullptr, uint8_t descriptorSet=DataField::DESCRIPTOR_SET)
 Registers a data callback (free function version). More...
 
template<class DataField , class Object , void(Object::*)(const DataField &, Timestamp) Callback>
void mip::Interface::registerDataCallback (C::mip_dispatch_handler &handler, Object *object, uint8_t descriptorSet=DataField::DESCRIPTOR_SET)
 Registers a data callback (member function version). More...
 
template<class DataField >
void mip::Interface::registerExtractor (C::mip_dispatch_handler &handler, DataField *field, uint8_t descriptorSet=DataField::DESCRIPTOR_SET)
 
template<class T , bool(T::*)(const PacketView &, Timestamp) Callback>
void mip::Parser::setCallback (T &object)
 Initializes the MIP Parser. More...
 

Detailed Description

This module contains functions and classes for communicating with a MIP device in C++.

See also
mip namespace

Typedef Documentation

◆ DispatchHandler

◆ EnableForFieldTypes

template<class T >
using mip::EnableForFieldTypes = typedef std::enable_if<isField<T>::value, T>

◆ isField

template<class T >
using mip::isField = typedef std::is_base_of<FieldStruct, T>

◆ Matrix3d

using mip::Matrix3d = typedef Vector<double,9>

◆ Matrix3f

using mip::Matrix3f = typedef Vector<float,9>

◆ PacketBuf

typedef SizedPacketBuf<mip::PACKET_LENGTH_MAX> mip::PacketBuf

Typedef for SizedPacketBuf of max possible size.

Generally you should use this instead of SizedPacketBuf directly, unless you know the maximum size of your packet will be less than PACKET_LENGTH_MAX.

◆ Quatf

using mip::Quatf = typedef Vector4f

◆ Vector3d

using mip::Vector3d = typedef Vector<double,3>

◆ Vector3f

using mip::Vector3f = typedef Vector<float,3>

◆ Vector4d

using mip::Vector4d = typedef Vector<double,4>

◆ Vector4f

using mip::Vector4f = typedef Vector<float,4>

Enumeration Type Documentation

◆ FunctionSelector

enum mip::FunctionSelector : uint8_t
strong
Enumerator
WRITE 
READ 
SAVE 
LOAD 
RESET 

Function Documentation

◆ connect_interface()

void mip::connect_interface ( mip::Interface device,
microstrain::Connection conn 
)

Sets up the mip interface callbacks to point at this object.

Note
This sets the interface's user pointer to this connection object.
Parameters
deviceDevice to configure.
connThe connection to set

◆ extract() [1/2]

template<class Derived >
size_t mip::extract ( Serializer serializer,
Bitfield< Derived > &  bitfield 
)

◆ extract() [2/2]

template<typename T , size_t N>
size_t mip::extract ( Serializer serializer,
Vector< T, N > &  v 
)

◆ insert() [1/2]

template<class Derived >
size_t mip::insert ( Serializer serializer,
const Bitfield< Derived > &  bitfield 
)

◆ insert() [2/2]

template<typename T , size_t N>
size_t mip::insert ( Serializer serializer,
const Vector< T, N > &  v 
)

◆ isCommandDescriptorSet()

bool mip::isCommandDescriptorSet ( uint8_t  descriptorSet)
inline

◆ isCommandFieldDescriptor()

bool mip::isCommandFieldDescriptor ( uint8_t  fieldDescriptor)
inline

◆ isDataDescriptorSet()

bool mip::isDataDescriptorSet ( uint8_t  descriptorSet)
inline

◆ isGnssDataDescriptorSet()

bool mip::isGnssDataDescriptorSet ( uint8_t  descriptorSet)
inline

◆ isReplyFieldDescriptor()

bool mip::isReplyFieldDescriptor ( uint8_t  fieldDescriptor)
inline

◆ isReservedDescriptorSet()

bool mip::isReservedDescriptorSet ( uint8_t  descriptorSet)
inline

◆ isReservedFieldDescriptor()

bool mip::isReservedFieldDescriptor ( uint8_t  fieldDescriptor)
inline

◆ isResponseFieldDescriptor()

bool mip::isResponseFieldDescriptor ( uint8_t  fieldDescriptor)
inline

◆ isSharedDataFieldDescriptor()

bool mip::isSharedDataFieldDescriptor ( uint8_t  fieldDescriptor)
inline

◆ isValidDescriptorSet()

bool mip::isValidDescriptorSet ( uint8_t  descriptorSet)
inline

◆ isValidFieldDescriptor()

bool mip::isValidFieldDescriptor ( uint8_t  fieldDescriptor)
inline

◆ parseMipDataFromSource()

template<class Function >
bool mip::parseMipDataFromSource ( C::mip_parser parser,
Function  reader,
size_t  maxPackets 
)

Read data from a source into the internal parsing buffer.

Template Parameters
FunctionA function-like object with the following signature: bool read(size_t maxCount, size_t* count_out, Timestamp* timestamp_out); The parameters are as follows:
  • buffer - Buffer into which to write data.
  • maxCount - The maximum number of bytes to read.
  • count_out - Updated with the number of bytes actually read.
  • timestamp_out - Updated with the timestamp of the data.
Parameters
parser
readerA callback function, lambda, or similar which will read data into the buffer and capture the timestamp. It should return true if successful or false otherwise. If it returns false, parsing is skipped. The read function may also throw an exception instead of returning false.
maxPacketsMaximum number of packets to parse, just like for Parser::parse().
Returns
Same as the return value of reader.

◆ registerDataCallback() [1/2]

template<class DataField , class Object , void(Object::*)(const DataField &, uint8_t, Timestamp) Callback>
void mip::Interface::registerDataCallback ( C::mip_dispatch_handler handler,
Object *  object,
uint8_t  descriptorSet = DataField::DESCRIPTOR_SET 
)

Registers a data callback (member function version).

Template Parameters
CallbackA pointer to the function to call. This must be a constant member function pointer.
Parameters
handlerThis must exist as long as the handler remains registered.
objectA pointer to the object. The object must exist while the handler remains registered.
descriptorSetIf specified, overrides the descriptor set. Intended to be used with shared data quantities.

Example usage:

class MySystem
{
void handleAccel(const ScaledAccel& accel, Timestamp timestamp)
{
}
void setup()
{
// setup device...
device.registerDataHandler<ScaledAccel, MySystem, &MySystem::handleAccel>(accelHandler, this);
}
Interface device;
DispatchHandler accelHandler;
};
Template Parameters
CallbackA pointer to the function to call. This must be a constant member function pointer.
Parameters
handlerThis must exist as long as the handler remains registered.
objectA pointer to the object. The object must exist while the handler remains registered.
descriptorSetIf specified, overrides the descriptor set. Intended to be used with shared data quantities.

Example usage:

class MySystem
{
void handleAccel(const ScaledAccel& accel, uint8_t descriptorSet, Timestamp timestamp)
{
}
void setup()
{
// setup device...
device.registerDataHandler<ScaledAccel, MySystem, &MySystem::handleAccel>(accelHandler, this);
}
Interface device;
DispatchHandler accelHandler;
};

◆ registerDataCallback() [2/2]

template<class DataField , void(*)(void *, const DataField &, uint8_t, Timestamp) Callback>
void mip::Interface::registerDataCallback ( C::mip_dispatch_handler handler,
void *  userData = nullptr,
uint8_t  descriptorSet = DataField::DESCRIPTOR_SET 
)

Registers a data callback (free function version).

Template Parameters
CallbackA pointer to the function to call. This must be a constant function pointer.
Parameters
handlerThis must exist as long as the handler remains registered.
userDataOptional data to pass to the callback function.
descriptorSetIf specified, overrides the descriptor set. Intended to be used with shared data quantities.

Example usage:

void handle_packet(void* context, const PacketRef& packet, Timestamp timestamp)
{
// Use the packet data
}
Interface device;
void setup()
{
// Set up device...
device.registerDataCallback<&handle_packet>(handler, descriptorSet, nullptr);
}
Template Parameters
CallbackA pointer to the function to call. This must be a constant function pointer.
Parameters
handlerThis must exist as long as the handler remains registered.
userDataOptional data to pass to the callback function.
descriptorSetIf specified, overrides the descriptor set. Intended to be used with shared data quantities.

Example usage:

void handle_packet(void* context, uint8_t descriptorSet, const PacketRef& packet, Timestamp timestamp)
{
// Use the packet data
}
Interface device;
void setup()
{
// Set up device...
device.registerDataCallback<&handle_packet>(handler, descriptorSet, nullptr);
}

◆ registerExtractor()

template<class DataField >
void mip::Interface::registerExtractor ( C::mip_dispatch_handler handler,
DataField *  field,
uint8_t  descriptorSet = DataField::DESCRIPTOR_SET 
)

◆ registerFieldCallback() [1/2]

template<class Object , void(Object::*)(const FieldView &, Timestamp) Callback>
void mip::Interface::registerFieldCallback ( C::mip_dispatch_handler handler,
uint8_t  descriptorSet,
uint8_t  fieldDescriptor,
Object *  object 
)

Registers a field callback (member function version).

Template Parameters
CallbackA pointer to the function to call. This must be a constant member function pointer.
Parameters
handler
descriptorSet
fieldDescriptor
objectExample usage:
class MySystem
{
void handleField(const Field& field, Timestamp timestamp)
{
}
void setup()
{
// setup device...
device.registerFieldHandler<MySystem, &MySystem::handleField>(fieldHandler, descriptorSet, fieldDescriptor, this);
}
Interface device;
DispatchHandler fieldHandler;
};

◆ registerFieldCallback() [2/2]

template<void(*)(void *, const FieldView &, Timestamp) Callback>
void mip::Interface::registerFieldCallback ( C::mip_dispatch_handler handler,
uint8_t  descriptorSet,
uint8_t  fieldDescriptor,
void *  userData = nullptr 
)

Registers a field callback (free function version).

Template Parameters
CallbackA pointer to the function to call. This must be a constant function pointer.
Parameters
handler
descriptorSet
fieldDescriptor
userDataExample usage:
void handle_field(void* context, const Field& field, Timestamp timestamp)
{
// Use the field data
}
Interface device;
void setup()
{
// Set up device...
device.registerFieldCallback<&handle_field>(handler, descriptorSet, nullptr);
}

◆ registerPacketCallback() [1/2]

template<class Object , void(Object::*)(const PacketView &, Timestamp) Callback>
void mip::Interface::registerPacketCallback ( C::mip_dispatch_handler handler,
uint8_t  descriptorSet,
bool  afterFields,
Object *  object 
)

Registers a packet callback (member function version).

Template Parameters
CallbackA pointer to the function to call. This must be a constant member function pointer.
Parameters
handler
descriptorSet
afterFields
objectExample usage:
class MySystem
{
void handlePacket(const PacketRef& packet, Timestamp timestamp)
{
}
void setup()
{
// setup device...
device.registerPacketHandler<MySystem, &MySystem::handlePacket>(packetHandler, descriptorSet, this);
}
Interface device;
DispatchHandler packetHandler;
};

◆ registerPacketCallback() [2/2]

template<void(*)(void *, const PacketView &, Timestamp) Callback>
void mip::Interface::registerPacketCallback ( C::mip_dispatch_handler handler,
uint8_t  descriptorSet,
bool  afterFields,
void *  userData = nullptr 
)

Registers a packet callback (free function version).

Template Parameters
CallbackA pointer to the function to call. This must be a constant function pointer.
Parameters
handler
descriptorSet
afterFields
userDataExample usage:
void handle_packet(void* context, const PacketRef& packet, Timestamp timestamp)
{
// Use the packet data
}
Interface device;
void setup()
{
// Set up device...
device.registerPacketCallback<&handle_packet>(handler, descriptorSet, nullptr);
}

◆ runCommand() [1/3]

template<class Cmd , class... Args>
CmdResult mip::runCommand ( C::mip_interface device,
const Args &&...  args,
Timeout  additionalTime 
)

◆ runCommand() [2/3]

template<class Cmd >
CmdResult mip::runCommand ( C::mip_interface device,
const Cmd &  cmd,
Timeout  additionalTime = 0 
)

◆ runCommand() [3/3]

template<class Cmd >
CmdResult mip::runCommand ( C::mip_interface device,
const Cmd &  cmd,
typename Cmd::Response &  response,
Timeout  additionalTime = 0 
)

◆ setCallback()

template<class T , bool(T::*)(const PacketView &, Timestamp) Callback>
void mip::Parser::setCallback ( T &  object)

Initializes the MIP Parser.

This version allows binding a member function instead of a C-style callback. Example:

struct MyClass
{
void handlePacket(const PacketRef& packet, Timeout timeout);
};
MyClass myInstance;
Parser parser<MyClass, &MyClass::handlePacket>(myInstance);
Template Parameters
TClass type containing the member function to be called.
CallbackA pointer to a member function on a T to be called when a packet is parsed.
Parameters
objectInstance of T to call the callback.

◆ setCallbacks()

template<class T , bool(T::*)(const uint8_t *, size_t) Send, bool(T::*)(uint8_t *, size_t, Timeout, size_t *, Timestamp *) Recv, bool(T::*)(Timeout) Update>
void mip::Interface::setCallbacks ( T *  object)

Sets the callback functions to a common class object.

Template Parameters
TA class type.
SendA member function pointer for sending bytes to the device. May be NULL.
RecvA member function pointer for receiving bytes from the device. May be NULL.
UpdateA member function pointer for updating the device. If both this and Recv are NULL, no update function is set. If Update is NULL but Recv is not, the default update function is used instead.
Parameters
objectAn instance of T. The interface's user pointer will be set to this value. All of the callbacks will be invoked on this instance.
class DeviceConnection
{
bool send(const uint8_t* data, size_t length);
bool recv(uint8_t* buffer, size_t max_length, Timeout wait_time, size_t* length_out, Timestamp* timestamp_out);
};
DeviceConnection connection;
mip::Interface interface;
interface.setCallbacks<DeviceConnection, &DeviceConnection::send, &DeviceConnection::recv, nullptr>(&connection);

◆ setRecvFunction() [1/2]

template<bool(*)(Interface &, uint8_t *, size_t, Timeout, size_t *, Timestamp *) Recv>
void mip::Interface::setRecvFunction

Sets the receive callback function (free function version).

Template Parameters
RecvA compile-time pointer to the callback function.

◆ setRecvFunction() [2/2]

template<class Derived , bool(Derived::*)(uint8_t *, size_t, Timeout, size_t *, Timestamp *) Recv>
void mip::Interface::setRecvFunction

Sets the receive callback function (derived member function version).

Template Parameters
DerivedDerived class type. Must inherit from Interface.
RecvCompile-time pointer to member function of Derived.
See also
Interface::setSendFunction()

◆ setSendFunction() [1/2]

template<bool(*)(Interface &, const uint8_t *, size_t) Send>
void mip::Interface::setSendFunction

Sets the send callback function (free function version).

Template Parameters
SendA compile-time pointer to the callback function.

◆ setSendFunction() [2/2]

template<class Derived , bool(Derived::*)(const uint8_t *, size_t) Send>
void mip::Interface::setSendFunction

Sets the send callback function (derived member function version).

Template Parameters
DerivedDerived class type. Must inherit from Interface.
SendCompile-time pointer to member function of Derived.
class MyClass : public mip::Interface
{
bool sendToDevice(const uint8_t* data, size_t size);
bool recvFromDevice(uint8_t* data, size_t max_length, Timeout wait_time, size_t* length_out, Timestamp* timestamp_out);
};
MyClass instance;
instance.setSendFunction<MyClass, &MyClass::sendToDevice>();
instance.setRecvFunction<MyClass, &MyClass::recvFromDevice>();
instance.setCallbacks<Connection, &Connection::sendToDevice, &Connection::recvFromDevice>(connection);

◆ setUpdateFunction() [1/2]

template<bool(*)(Interface &, Timeout) Update>
void mip::Interface::setUpdateFunction

Sets the update callback function (free function version).

Template Parameters
UpdateA compile-time pointer to the callback function.

◆ setUpdateFunction() [2/2]

template<class Derived , bool(Derived::*)(Timeout) Update>
void mip::Interface::setUpdateFunction

Sets the update callback function (derived member function version).

Template Parameters
DerivedDerived class type. Must inherit from Interface.
UpdateCompile-time pointer to member function of Derived.
See also
Interface::setSendFunction()

◆ startCommand()

template<class Cmd >
bool mip::startCommand ( C::mip_interface device,
C::mip_pending_cmd pending,
const Cmd &  cmd,
Timeout  additionalTime 
)
mip::Interface::Interface
Interface(uint8_t *parseBuffer, size_t parseBufferSize, Timeout parseTimeout, Timeout baseReplyTimeout)
Initialize the mip_interface components.
Definition: mip_interface.hpp:64
mip::Parser::Parser
Parser(uint8_t *buffer, size_t bufferSize, C::mip_packet_callback callback, void *callbackObject, Timeout timeout)
Initializes the MIP parser.
Definition: mip_parser.hpp:23
mip::Interface::setCallbacks
void setCallbacks(T *object)
Sets the callback functions to a common class object.
Definition: mip_interface.hpp:383
mip::DispatchHandler
C::mip_dispatch_handler DispatchHandler
Definition: mip_interface.hpp:30
mip::Timestamp
microstrain::EmbeddedTimestamp Timestamp
Definition: mip_types.h:50
mip::Timeout
microstrain::EmbeddedTimeout Timeout
Definition: mip_types.h:51
mip::Parser::timeout
Timeout timeout() const
Returns the packet timeout of the parser.
Definition: mip_parser.hpp:39
mip::Interface::recvFromDevice
bool recvFromDevice(uint8_t *buffer, size_t max_length, Timeout wait_time, size_t *length_out, Timestamp *timestamp)
Definition: mip_interface.hpp:152
mip::Interface
Represents a connected MIP device.
Definition: mip_interface.hpp:55
mip::Interface::sendToDevice
bool sendToDevice(const uint8_t *data, size_t length)
Definition: mip_interface.hpp:150