MIP_SDK  v4.0.0-234-g2b06a940
MicroStrain Communications Library for embedded systems
Public Member Functions | List of all members
mip::Interface Class Reference

Represents a connected MIP device. More...

#include <mip_interface.hpp>

Inheritance diagram for mip::Interface:
mip::C::mip_interface

Public Member Functions

 Interface (Timeout parseTimeout, Timeout baseReplyTimeout)
 Initialize the mip_interface components. More...
 
 Interface (microstrain::Connection *connection, Timeout parseTimeout, Timeout baseReplyTimeout)
 Initialize the mip_interface components. More...
 
 Interface (const Interface &)=delete
 
Interfaceoperator= (const Interface &)=delete
 
 ~Interface ()=default
 
C::mip_send_callback sendFunction () const
 
C::mip_recv_callback recvFunction () const
 
C::mip_update_callback updateFunction () const
 
void setSendFunction (C::mip_send_callback callback)
 
void setRecvFunction (C::mip_recv_callback callback)
 
void setUpdateFunction (C::mip_update_callback function)
 
template<bool(*)(Interface &, const uint8_t *, size_t) Send>
void setSendFunctionFree ()
 Sets the send callback function (free function version). More...
 
template<bool(*)(Interface &, microstrain::ConstU8ArrayView) Send>
void setSendFunctionFree ()
 
template<bool(*)(Interface &, uint8_t *, size_t, Timeout, bool, size_t *, Timestamp *) Recv>
void setRecvFunctionFree ()
 Sets the receive callback function (free function version). More...
 
template<bool(*)(Interface &, microstrain::U8ArrayView, Timeout, bool, size_t *, Timestamp *) Recv>
void setRecvFunctionFree ()
 
template<bool(*)(Interface &, Timeout, bool) Update>
void setUpdateFunctionFree ()
 Sets the update callback function (free function version). More...
 
template<class UserClass , bool(UserClass::*)(const uint8_t *, size_t) Send>
void setSendFunctionUserPointer ()
 Sets the send callback function (class member function version w/ ptr & length). More...
 
template<class UserClass , bool(UserClass::*)(microstrain::ConstU8ArrayView) Send>
void setSendFunctionUserPointer ()
 
template<class UserClass , bool(*)(UserClass *, microstrain::ConstU8ArrayView) Send>
void setSendFunctionUserPointer ()
 
template<class UserClass , bool(UserClass::*)(uint8_t *, size_t, Timeout, bool, size_t *, Timestamp *) Recv>
void setRecvFunctionUserPointer ()
 Sets the receive callback function (class member function version w/ ptr & length). More...
 
template<class UserClass , bool(UserClass::*)(microstrain::U8ArrayView, Timeout, bool, size_t *, Timestamp *) Recv>
void setRecvFunctionUserPointer ()
 
template<class UserClass , bool(*)(UserClass *, microstrain::U8ArrayView, Timeout, bool, size_t *, Timestamp *) Recv>
void setRecvFunctionUserPointer ()
 
template<class UserClass , bool(UserClass::*)(Timeout, bool) Update>
void setUpdateFunctionUserPointer ()
 Sets the update callback function (class member function version). More...
 
template<class UserClass , bool(*)(UserClass *, Timeout, bool) Update>
void setUpdateFunctionUserPointer ()
 
template<class T , bool(T::*)(microstrain::ConstU8ArrayView) Send, bool(T::*)(microstrain::U8ArrayView, Timeout, bool, size_t *, Timestamp *) Recv, bool(T::*)(Timeout, bool) Update = nullptr>
void setCallbacksUserPointer (T *object)
 
template<class Derived , bool(Derived::*)(microstrain::ConstU8ArrayView) Send>
void setSendFunctionDerived ()
 Sets the send callback function (derived member function version). More...
 
template<class Derived , bool(Derived::*)(microstrain::U8ArrayView, Timeout, bool, size_t *, Timestamp *) Recv>
void setRecvFunctionDerived ()
 Sets the receive callback function (derived member function version). More...
 
template<class Derived , bool(Derived::*)(Timeout, bool) Update>
void setUpdateFunctionDerived ()
 Sets the update callback function (derived member function version). More...
 
template<class Derived , bool(Derived::*)(microstrain::ConstU8ArrayView) Send, bool(Derived::*)(microstrain::U8ArrayView, Timeout, bool, size_t *, Timestamp *) Recv, bool(Derived::*)(Timeout, bool) Update = nullptr>
void setCallbacksDerived ()
 Sets the callback functions to a derived class object. More...
 
void setUserPointer (void *ptr)
 Sets an optional user data pointer which can be retrieved later. More...
 
void * userPointer ()
 
Timeout baseReplyTimeout () const
 
void setBaseReplyTimeout (Timeout timeout)
 
Parserparser ()
 
CmdQueuecmdQueue ()
 
const Parserparser () const
 
const CmdQueuecmdQueue () const
 
bool sendToDevice (const uint8_t *data, size_t length)
 
bool sendToDevice (microstrain::ConstU8ArrayView data)
 
bool sendToDevice (const C::mip_packet_view &packet)
 
bool recvFromDevice (microstrain::U8ArrayView buffer, Timeout wait_time, bool from_cmd, size_t *length_out, Timestamp *timestamp_out)
 
bool update (Timeout wait_time, bool from_cmd=false)
 
bool defaultUpdate (Timeout wait_time, bool from_cmd=false)
 
bool defaultUpdateExtBuffer (Timeout wait_time, bool from_cmd, microstrain::U8ArrayView buffer)
 
void inputBytes (const uint8_t *data, size_t length, Timestamp timestamp)
 
void inputBytes (microstrain::ConstU8ArrayView data, Timestamp timestamp)
 
void inputPacket (const C::mip_packet_view &packet, Timestamp timestamp)
 
void updateTime (Timestamp timestamp)
 
void inputBytesAndOrTime (microstrain::ConstU8ArrayView data, Timestamp timestamp)
 
CmdResult waitForReply (C::mip_pending_cmd &cmd)
 
void registerPacketCallback (C::mip_dispatch_handler &handler, uint8_t descriptorSet, bool afterFields, C::mip_dispatch_packet_callback callback, void *userData)
 
void registerFieldCallback (C::mip_dispatch_handler &handler, uint8_t descriptorSet, uint8_t fieldDescriptor, C::mip_dispatch_field_callback callback, void *userData)
 
template<void(*)(void *, const PacketView &, Timestamp) Callback>
void 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 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 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 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 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 , void(*)(void *, const DataField &, uint8_t, Timestamp) Callback>
void registerDataCallback (C::mip_dispatch_handler &handler, void *userData=nullptr, uint8_t descriptorSet=DataField::DESCRIPTOR_SET)
 
template<class DataField , class Object , void(Object::*)(const DataField &, Timestamp) Callback>
void 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 , class Object , void(Object::*)(const DataField &, uint8_t, Timestamp) Callback>
void registerDataCallback (C::mip_dispatch_handler &handler, Object *object, uint8_t descriptorSet=DataField::DESCRIPTOR_SET)
 
template<class DataField >
void registerExtractor (C::mip_dispatch_handler &handler, DataField *field, uint8_t descriptorSet=DataField::DESCRIPTOR_SET)
 
template<class Cmd >
CmdResult runCommand (const Cmd &cmd, Timeout additionalTime=0)
 
template<class Cmd , class... Args>
CmdResult runCommand (Args &&... args, Timeout additionalTime=0)
 
template<class Cmd >
CmdResult runCommand (const Cmd &cmd, typename Cmd::Response &response, Timeout additionalTime=0)
 
template<class Cmd >
bool startCommand (PendingCmd &pending, const Cmd &cmd, Timeout additionalTime=0)
 
template<class UserClass , bool(UserClass::*)(microstrain::ConstU8ArrayView) Send, bool(UserClass::*)(microstrain::U8ArrayView, Timeout, bool, size_t *, Timestamp *) Recv, bool(UserClass::*)(Timeout, bool) Update>
void setCallbacksUserPointer (UserClass *object)
 Sets the callback functions to a common class object. More...
 

Detailed Description

Constructor & Destructor Documentation

◆ Interface() [1/3]

mip::Interface::Interface ( Timeout  parseTimeout,
Timeout  baseReplyTimeout 
)
inline
Parameters
device
parse_timeoutMaximum length of time to wait for the end of a MIP packet. See mip_parser_init().
base_reply_timeoutMinimum time for all commands. See mip_cmd_queue_init().
sendA callback which is called to send data to the device.
recvA callback which is called when data needs to be read from the device.
updateOptional callback which is called to perform routine tasks such as checking for command timeouts. Defaults to mip_interface_default_update.
user_pointerOptional pointer which is passed to the send, recv, and update callbacks.

The interface callbacks must be assigned separately (e.g. with Connection::connect_interface())

◆ Interface() [2/3]

mip::Interface::Interface ( microstrain::Connection connection,
Timeout  parseTimeout,
Timeout  baseReplyTimeout 
)
inline
Parameters
device
parse_timeoutMaximum length of time to wait for the end of a MIP packet. See mip_parser_init().
base_reply_timeoutMinimum time for all commands. See mip_cmd_queue_init().
sendA callback which is called to send data to the device.
recvA callback which is called when data needs to be read from the device.
updateOptional callback which is called to perform routine tasks such as checking for command timeouts. Defaults to mip_interface_default_update.
user_pointerOptional pointer which is passed to the send, recv, and update callbacks.
connectionThe connection object used to communicate with the device. This object must exist for the life of the DeviceInterface object

◆ Interface() [3/3]

mip::Interface::Interface ( const Interface )
delete

◆ ~Interface()

mip::Interface::~Interface ( )
default

Member Function Documentation

◆ operator=()

Interface& mip::Interface::operator= ( const Interface )
delete

◆ sendFunction()

C::mip_send_callback mip::Interface::sendFunction ( ) const
inline

◆ recvFunction()

C::mip_recv_callback mip::Interface::recvFunction ( ) const
inline

◆ updateFunction()

C::mip_update_callback mip::Interface::updateFunction ( ) const
inline

◆ setSendFunction()

void mip::Interface::setSendFunction ( C::mip_send_callback  callback)
inline

◆ setRecvFunction()

void mip::Interface::setRecvFunction ( C::mip_recv_callback  callback)
inline

◆ setUpdateFunction()

void mip::Interface::setUpdateFunction ( C::mip_update_callback  function)
inline

◆ setSendFunctionFree()

template<bool(*)(Interface &, microstrain::ConstU8ArrayView) Send>
void mip::Interface::setSendFunctionFree ( )

◆ setRecvFunctionFree()

template<bool(*)(Interface &, microstrain::U8ArrayView, Timeout, bool, size_t *, Timestamp *) Recv>
void mip::Interface::setRecvFunctionFree ( )

◆ setSendFunctionUserPointer() [1/2]

template<class UserClass , bool(UserClass::*)(microstrain::ConstU8ArrayView) Send>
void mip::Interface::setSendFunctionUserPointer ( )

◆ setSendFunctionUserPointer() [2/2]

template<class UserClass , bool(*)(UserClass *, microstrain::ConstU8ArrayView) Send>
void mip::Interface::setSendFunctionUserPointer ( )

◆ setRecvFunctionUserPointer() [1/2]

template<class UserClass , bool(UserClass::*)(microstrain::U8ArrayView, Timeout, bool, size_t *, Timestamp *) Recv>
void mip::Interface::setRecvFunctionUserPointer ( )

◆ setRecvFunctionUserPointer() [2/2]

template<class UserClass , bool(*)(UserClass *, microstrain::U8ArrayView, Timeout, bool, size_t *, Timestamp *) Recv>
void mip::Interface::setRecvFunctionUserPointer ( )

◆ setUpdateFunctionUserPointer()

template<class UserClass , bool(*)(UserClass *, Timeout, bool) Update>
void mip::Interface::setUpdateFunctionUserPointer ( )

◆ setCallbacksUserPointer()

template<class T , bool(T::*)(microstrain::ConstU8ArrayView) Send, bool(T::*)(microstrain::U8ArrayView, Timeout, bool, size_t *, Timestamp *) Recv, bool(T::*)(Timeout, bool) Update = nullptr>
void mip::Interface::setCallbacksUserPointer ( T *  object)

◆ setUserPointer()

void mip::Interface::setUserPointer ( void *  ptr)
inline
Warning
If using connect_interface() or constructing using a microstrain::Connection object, the user pointer must point at the connection instance and must not be changed.

◆ userPointer()

void* mip::Interface::userPointer ( )
inline

◆ baseReplyTimeout()

Timeout mip::Interface::baseReplyTimeout ( ) const
inline

◆ setBaseReplyTimeout()

void mip::Interface::setBaseReplyTimeout ( Timeout  timeout)
inline

◆ parser() [1/2]

Parser& mip::Interface::parser ( )
inline

◆ cmdQueue() [1/2]

CmdQueue& mip::Interface::cmdQueue ( )
inline

◆ parser() [2/2]

const Parser& mip::Interface::parser ( ) const
inline

◆ cmdQueue() [2/2]

const CmdQueue& mip::Interface::cmdQueue ( ) const
inline

◆ sendToDevice() [1/3]

bool mip::Interface::sendToDevice ( const uint8_t *  data,
size_t  length 
)
inline

◆ sendToDevice() [2/3]

bool mip::Interface::sendToDevice ( microstrain::ConstU8ArrayView  data)
inline

◆ sendToDevice() [3/3]

bool mip::Interface::sendToDevice ( const C::mip_packet_view packet)
inline

◆ recvFromDevice()

bool mip::Interface::recvFromDevice ( microstrain::U8ArrayView  buffer,
Timeout  wait_time,
bool  from_cmd,
size_t *  length_out,
Timestamp timestamp_out 
)
inline

◆ update()

bool mip::Interface::update ( Timeout  wait_time,
bool  from_cmd = false 
)
inline

◆ defaultUpdate()

bool mip::Interface::defaultUpdate ( Timeout  wait_time,
bool  from_cmd = false 
)
inline

◆ defaultUpdateExtBuffer()

bool mip::Interface::defaultUpdateExtBuffer ( Timeout  wait_time,
bool  from_cmd,
microstrain::U8ArrayView  buffer 
)
inline

◆ inputBytes() [1/2]

void mip::Interface::inputBytes ( const uint8_t *  data,
size_t  length,
Timestamp  timestamp 
)
inline

◆ inputBytes() [2/2]

void mip::Interface::inputBytes ( microstrain::ConstU8ArrayView  data,
Timestamp  timestamp 
)
inline

◆ inputPacket()

void mip::Interface::inputPacket ( const C::mip_packet_view packet,
Timestamp  timestamp 
)
inline

◆ updateTime()

void mip::Interface::updateTime ( Timestamp  timestamp)
inline

◆ inputBytesAndOrTime()

void mip::Interface::inputBytesAndOrTime ( microstrain::ConstU8ArrayView  data,
Timestamp  timestamp 
)
inline

◆ waitForReply()

CmdResult mip::Interface::waitForReply ( C::mip_pending_cmd cmd)
inline

◆ registerPacketCallback()

void mip::Interface::registerPacketCallback ( C::mip_dispatch_handler handler,
uint8_t  descriptorSet,
bool  afterFields,
C::mip_dispatch_packet_callback  callback,
void *  userData 
)
inline

◆ registerFieldCallback()

void mip::Interface::registerFieldCallback ( C::mip_dispatch_handler handler,
uint8_t  descriptorSet,
uint8_t  fieldDescriptor,
C::mip_dispatch_field_callback  callback,
void *  userData 
)
inline

◆ registerDataCallback() [1/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 
)

◆ registerDataCallback() [2/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 
)

◆ runCommand() [1/3]

template<class Cmd >
CmdResult mip::Interface::runCommand ( const Cmd &  cmd,
Timeout  additionalTime = 0 
)
inline

◆ runCommand() [2/3]

template<class Cmd , class... Args>
CmdResult mip::Interface::runCommand ( Args &&...  args,
Timeout  additionalTime = 0 
)
inline

◆ runCommand() [3/3]

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

◆ startCommand()

template<class Cmd >
bool mip::Interface::startCommand ( PendingCmd pending,
const Cmd &  cmd,
Timeout  additionalTime = 0 
)
inline

The documentation for this class was generated from the following file: