MIP SDK  0.0.1
MicroStrain Communications Library for embedded systems
Public Member Functions | List of all members
mip::DeviceInterface Class Reference

Represents a connected MIP device. More...

#include <mip_device.hpp>

Inheritance diagram for mip::DeviceInterface:
Inheritance graph
[legend]
Collaboration diagram for mip::DeviceInterface:
Collaboration graph
[legend]

Public Member Functions

 DeviceInterface (Connection *connection, uint8_t *parseBuffer, size_t parseBufferSize, Timeout parseTimeout, Timeout baseReplyTimeout)
 
 DeviceInterface (const DeviceInterface &)=delete
 
DeviceInterfaceoperator= (const DeviceInterface &)=delete
 
 ~DeviceInterface ()=default
 
void setUpdateFunction (C::mip_update_callback function)
 
template<bool(*)(DeviceInterface &, bool) Function>
void setUpdateFunction ()
 Sets the update function to a function taking a MipDevice reference. More...
 
void setMaxPacketsPerPoll (unsigned int maxPackets)
 
unsigned int maxPacketsPerPoll () const
 
Timeout baseReplyTimeout () const
 
void setBaseReplyTimeout (Timeout timeout)
 
Parserparser ()
 
CmdQueuecmdQueue ()
 
const Parserparser () const
 
const CmdQueuecmdQueue () const
 
const Connectionconnection () const
 
void setConnection (Connection *connection)
 
RemainingCount receiveBytes (const uint8_t *data, size_t length, Timestamp timestamp)
 
void receivePacket (const C::mip_packet &packet, Timestamp timestamp)
 
bool sendToDevice (const uint8_t *data, size_t length)
 
bool sendToDevice (const C::mip_packet &packet)
 
bool update (bool blocking=false)
 
bool recvFromDevice (uint8_t *buffer, size_t max_length, size_t *length_out, Timestamp *timestamp)
 
void processUnparsedPackets ()
 
CmdResult waitForReply (const C::mip_pending_cmd &cmd)
 
bool defaultUpdate (bool blocking=false)
 
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 Packet &, 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 Packet &, 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 Field &, 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 Field &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 , 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 >
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)
 

Detailed Description

Represents a connected MIP device.

Constructor & Destructor Documentation

◆ DeviceInterface() [1/2]

mip::DeviceInterface::DeviceInterface ( Connection connection,
uint8_t *  parseBuffer,
size_t  parseBufferSize,
Timeout  parseTimeout,
Timeout  baseReplyTimeout 
)
inline

Parameters
connectionThe connection object used to communicate with the device. This object must exist for the life of the DeviceInterface object

◆ DeviceInterface() [2/2]

mip::DeviceInterface::DeviceInterface ( const DeviceInterface )
delete

◆ ~DeviceInterface()

mip::DeviceInterface::~DeviceInterface ( )
default

Member Function Documentation

◆ baseReplyTimeout()

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

◆ cmdQueue() [1/2]

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

◆ cmdQueue() [2/2]

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

◆ connection()

const Connection* mip::DeviceInterface::connection ( ) const
inline

◆ defaultUpdate()

bool mip::DeviceInterface::defaultUpdate ( bool  blocking = false)
inline

◆ maxPacketsPerPoll()

unsigned int mip::DeviceInterface::maxPacketsPerPoll ( ) const
inline

◆ operator=()

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

◆ parser() [1/2]

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

◆ parser() [2/2]

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

◆ processUnparsedPackets()

void mip::DeviceInterface::processUnparsedPackets ( )
inline

◆ receiveBytes()

RemainingCount mip::DeviceInterface::receiveBytes ( const uint8_t *  data,
size_t  length,
Timestamp  timestamp 
)
inline

◆ receivePacket()

void mip::DeviceInterface::receivePacket ( const C::mip_packet packet,
Timestamp  timestamp 
)
inline

◆ recvFromDevice()

bool mip::DeviceInterface::recvFromDevice ( uint8_t *  buffer,
size_t  max_length,
size_t *  length_out,
Timestamp timestamp 
)
inline

◆ registerFieldCallback()

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

◆ registerPacketCallback()

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

◆ runCommand() [1/3]

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

◆ runCommand() [2/3]

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

◆ runCommand() [3/3]

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

◆ sendToDevice() [1/2]

bool mip::DeviceInterface::sendToDevice ( const C::mip_packet packet)
inline

◆ sendToDevice() [2/2]

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

◆ setBaseReplyTimeout()

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

◆ setConnection()

void mip::DeviceInterface::setConnection ( Connection connection)
inline

◆ setMaxPacketsPerPoll()

void mip::DeviceInterface::setMaxPacketsPerPoll ( unsigned int  maxPackets)
inline

◆ setUpdateFunction()

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

◆ startCommand()

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

◆ update()

bool mip::DeviceInterface::update ( bool  blocking = false)
inline

◆ waitForReply()

CmdResult mip::DeviceInterface::waitForReply ( const C::mip_pending_cmd cmd)
inline

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