Program Listing for File driver.hpp

Return to documentation for file (include/myactuator_rmd/driver/driver.hpp)

#ifndef MYACTUATOR_RMD__DRIVER__DRIVER
#define MYACTUATOR_RMD__DRIVER__DRIVER
#pragma once

#include <array>
#include <cstdint>
#include <vector>

#include "myactuator_rmd/protocol/message.hpp"


namespace myactuator_rmd {

  class ActuatorInterface;

  class Driver {
    public:
      virtual void addId(std::uint32_t const actuator_id) = 0;

      virtual void send(Message const& msg, std::uint32_t const actuator_id) = 0;

      [[nodiscard]]
      virtual std::array<std::uint8_t,8> sendRecv(Message const& request, std::uint32_t const actuator_id) = 0;

    protected:
      Driver() = default;
      Driver(Driver const&) = default;
      Driver& operator = (Driver const&) = default;
      Driver(Driver&&) = default;
      Driver& operator = (Driver&&) = default;

      friend ActuatorInterface;
  };

}

#endif // MYACTUATOR_RMD__DRIVER__DRIVER