ros2_canopen  master
C++ ROS CANopen Library
mode_forward_helper.hpp
Go to the documentation of this file.
1 #ifndef MODE_FORWARD_HELPER_HPP
2 #define MODE_FORWARD_HELPER_HPP
3 
4 #include <cstdint>
5 #include <memory>
7 #include "mode_target_helper.hpp"
8 
9 namespace ros2_canopen
10 {
11 
12 template <uint16_t ID, typename TYPE, uint16_t OBJ, uint8_t SUB, uint16_t CW_MASK>
13 class ModeForwardHelper : public ModeTargetHelper<TYPE>
14 {
15  std::shared_ptr<LelyDriverBridge> driver;
16 
17 public:
18  ModeForwardHelper(std::shared_ptr<LelyDriverBridge> driver) : ModeTargetHelper<TYPE>(ID)
19  {
20  this->driver = driver;
21  }
22  virtual bool read(const uint16_t & sw) { return true; }
23  virtual bool write(Mode::OpModeAccesser & cw)
24  {
25  if (this->hasTarget())
26  {
27  cw = cw.get() | CW_MASK;
28 
29  driver->universal_set_value<TYPE>(OBJ, SUB, this->getTarget());
30  return true;
31  }
32  else
33  {
34  cw = cw.get() & ~CW_MASK;
35  return false;
36  }
37  }
38 };
39 } // namespace ros2_canopen
40 
41 #endif // MODE_FORWARD_HELPER_HPP
Definition: mode_forward_helper.hpp:14
virtual bool read(const uint16_t &sw)
Definition: mode_forward_helper.hpp:22
ModeForwardHelper(std::shared_ptr< LelyDriverBridge > driver)
Definition: mode_forward_helper.hpp:18
virtual bool write(Mode::OpModeAccesser &cw)
Definition: mode_forward_helper.hpp:23
Definition: mode_target_helper.hpp:20
bool hasTarget()
Definition: mode_target_helper.hpp:26
TYPE getTarget()
Definition: mode_target_helper.hpp:27
Definition: word_accessor.hpp:10
bool get(uint8_t bit) const
Definition: word_accessor.hpp:27
Definition: configuration_manager.hpp:28