MIP_SDK  v3.0.0-187-g93c7302
MicroStrain Communications Library for embedded systems
connection.hpp
Go to the documentation of this file.
1 #pragma once
2 
4 #include <microstrain/span.hpp>
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 recvFromDeviceSpan(microstrain::Span<uint8_t> 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 recvFromDeviceSpanUpdate(microstrain::Span<uint8_t>& 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::Span::data
constexpr pointer data() const noexcept
Definition: span.hpp:64
microstrain::Connection::TYPE
static constexpr const char * TYPE
Definition: connection.hpp:24
microstrain::Connection::type
const char * type() const
Definition: connection.hpp:54
microstrain::Span::first
constexpr Span< T, DYNAMIC_EXTENT > first(size_t count) const
Definition: span.hpp:74
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.
microstrain::Connection::parameter
virtual uint32_t parameter() const =0
microstrain::Span::size
constexpr size_t size() const noexcept
Definition: span.hpp:66
microstrain::Span
Implementation of std::span from C++20.
Definition: span.hpp:41
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::~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::Connection::recvFromDeviceSpan
bool recvFromDeviceSpan(microstrain::Span< uint8_t > buffer, unsigned int wait_time_ms, size_t *length_out, EmbeddedTimestamp *timestamp_out)
Definition: connection.hpp:33
microstrain::Connection::recvFromDeviceSpanUpdate
bool recvFromDeviceSpanUpdate(microstrain::Span< uint8_t > &buffer, unsigned int wait_time_ms, EmbeddedTimestamp *timestamp_out)
Definition: connection.hpp:40
microstrain::Connection::isConnected
virtual bool isConnected() const =0
microstrain::Connection
Represents a type of connection.
Definition: connection.hpp:21
embedded_time.hpp
span.hpp
microstrain::Connection::sendToDeviceSpan
bool sendToDeviceSpan(microstrain::Span< const uint8_t > data)
Definition: connection.hpp:32
microstrain
Definition: embedded_time.h:8
microstrain::Connection::connect
virtual bool connect()=0