MIP_SDK  v3.0.0-736-g212583cf
MicroStrain Communications Library for embedded systems
connection.hpp
Go to the documentation of this file.
1 #pragma once
2 
5 
6 #include <stddef.h>
7 #include <stdint.h>
8 
9 
10 namespace microstrain
11 {
21  class Connection
22  {
23  public:
24  static constexpr const char* TYPE = "None";
25 
27  virtual ~Connection() {}
28 
29  virtual bool sendToDevice(const uint8_t* data, size_t length) = 0;
30  virtual bool recvFromDevice(uint8_t* buffer, size_t max_length, unsigned int wait_time_ms, size_t* length_out, EmbeddedTimestamp* timestamp_out) = 0;
31 
33  bool recvBufferFromDevice(microstrain::U8ArrayView buffer, unsigned int wait_time_ms, size_t* length_out, EmbeddedTimestamp* timestamp_out)
34  {
35  if (!recvFromDevice(buffer.data(), buffer.size(), wait_time_ms, length_out, timestamp_out))
36  return false;
37 
38  return true;
39  }
40  bool recvFromDeviceAndUpdateUint8ArrayView(microstrain::U8ArrayView& buffer, unsigned int wait_time_ms, EmbeddedTimestamp* timestamp_out)
41  {
42  size_t length = 0;
43  if (!recvFromDevice(buffer.data(), buffer.size(), wait_time_ms, &length, timestamp_out))
44  return false;
45 
46  buffer = buffer.first(length);
47  return true;
48  }
49 
50  virtual bool isConnected() const = 0;
51  virtual bool connect() = 0;
52  virtual bool disconnect() = 0;
53 
54  const char* type() const { return mType; }
55 
56  virtual const char* interfaceName() const = 0;
57  virtual uint32_t parameter() const = 0;
58 
59  protected:
60  const char* mType;
61  };
62 } // namespace microstrain
microstrain::Connection::mType
const char * mType
Definition: connection.hpp:60
microstrain::Connection::TYPE
static constexpr const char * TYPE
Definition: connection.hpp:24
microstrain::Connection::type
const char * type() const
Definition: connection.hpp:54
microstrain::Connection::interfaceName
virtual const char * interfaceName() const =0
microstrain::Connection::sendToDevice
virtual bool sendToDevice(const uint8_t *data, size_t length)=0
Sends bytes to the device.
array_view.hpp
microstrain::Connection::parameter
virtual uint32_t parameter() const =0
microstrain::Connection::recvFromDevice
virtual bool recvFromDevice(uint8_t *buffer, size_t max_length, unsigned int wait_time_ms, size_t *length_out, EmbeddedTimestamp *timestamp_out)=0
Receives bytes from the device.
microstrain::Connection::Connection
Connection()
Definition: connection.hpp:26
microstrain::Connection::recvBufferFromDevice
bool recvBufferFromDevice(microstrain::U8ArrayView buffer, unsigned int wait_time_ms, size_t *length_out, EmbeddedTimestamp *timestamp_out)
Definition: connection.hpp:33
microstrain::Connection::~Connection
virtual ~Connection()
Definition: connection.hpp:27
microstrain::EmbeddedTimestamp
C::microstrain_embedded_timestamp EmbeddedTimestamp
Definition: embedded_time.hpp:9
microstrain::Connection::disconnect
virtual bool disconnect()=0
microstrain::ArrayView::data
constexpr pointer data() const noexcept
Definition: array_view.hpp:69
microstrain::Connection::recvFromDeviceAndUpdateUint8ArrayView
bool recvFromDeviceAndUpdateUint8ArrayView(microstrain::U8ArrayView &buffer, unsigned int wait_time_ms, EmbeddedTimestamp *timestamp_out)
Definition: connection.hpp:40
microstrain::Connection::sendBufferToDevice
bool sendBufferToDevice(microstrain::ConstU8ArrayView data)
Definition: connection.hpp:32
microstrain::ArrayView
Represents a view over a contiguous array of objects, similar to std::span, and is implemented as a p...
Definition: array_view.hpp:44
microstrain::ArrayView::first
constexpr ArrayView< T, DYNAMIC_EXTENT > first(size_t count) const
Definition: array_view.hpp:79
microstrain::Connection::isConnected
virtual bool isConnected() const =0
microstrain::Connection
Represents a type of connection.
Definition: connection.hpp:21
embedded_time.hpp
microstrain::ArrayView::size
constexpr size_t size() const noexcept
Definition: array_view.hpp:71
microstrain
Definition: embedded_time.h:8
microstrain::Connection::connect
virtual bool connect()=0