RokubiminiEthercatBusManager.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 // std
4 #include <memory>
5 #include <mutex>
6 
7 // rokubimini
9 
11 
13 #include <utility>
14 namespace rokubimini
15 {
16 namespace ethercat
17 {
18 using namespace soem_interface;
19 
28 {
29 public:
37 
44  explicit RokubiminiEthercatBusManager(const std::string& busName, NodeHandlePtr nh)
45  : RokubiminiBusManager(busName, std::move(nh)){ /* do nothing */ };
46 
55  /* do nothing */
56  };
57  ~RokubiminiEthercatBusManager() override = default;
58 
64  bool startupBus();
65 
71  bool startupCommunication() override;
72 
76  void setBusSafeOperational();
77 
81  void setBusPreOperational();
82 
86  void setBusOperational();
87 
96  void waitForState(const uint16_t state, const uint16_t slave = 0, const unsigned int maxRetries = 40,
97  const double retrySleep = 0.001);
98 
102  void readBus() override;
103 
107  void writeToBus() override;
108 
112  void shutdownBus() override;
113 
115 
131  bool addRokubiminiToBus(const std::shared_ptr<RokubiminiEthercat>& rokubimini,
133 
143  void setConfigMode() override;
144 
156  void setRunMode() override;
157 
169  bool createRokubimini(const std::string& rokubiminiName) override;
170 
177  bool loadBusParameters() override;
178 
185  double loadTimeStep() override;
186 
194  void publishBusManagerRosDiagnostics() override{ /* do nothing */ };
195 
196 protected:
203  std::recursive_mutex busMutex_;
204 
210  std::unique_ptr<rokubimini::soem_interface::EthercatBusBase> bus_;
211 
218  std::string ethercatBusName_;
219 };
220 
221 using RokubiminiEthercatBusManagerPtr = std::shared_ptr<RokubiminiEthercatBusManager>;
222 
223 } // namespace ethercat
224 } // namespace rokubimini
rokubimini::ethercat::RokubiminiEthercatBusManager::busMutex_
std::recursive_mutex busMutex_
Mutex prohibiting simultaneous access to EtherCAT bus manager.
Definition: RokubiminiEthercatBusManager.hpp:203
uint16_t
unsigned short uint16_t
rokubimini::ethercat::RokubiminiEthercatBusManager::ethercatBusName_
std::string ethercatBusName_
The name of the Ethercat bus.
Definition: RokubiminiEthercatBusManager.hpp:218
rokubimini::RokubiminiBusManager::addRokubiminiToBus
virtual bool addRokubiminiToBus(const std::shared_ptr< Rokubimini > &rokubimini) const
EthercatBusBase.hpp
rokubimini
rokubimini::ethercat::RokubiminiEthercatBusManager::publishBusManagerRosDiagnostics
void publishBusManagerRosDiagnostics() override
Publish the ROS Diagnostics of the Bus Manager.
Definition: RokubiminiEthercatBusManager.hpp:194
rokubimini::ethercat::RokubiminiEthercatBusManager::bus_
std::unique_ptr< rokubimini::soem_interface::EthercatBusBase > bus_
The Ethercat bus instance.
Definition: RokubiminiEthercatBusManager.hpp:210
rokubimini::ethercat::RokubiminiEthercatBusManager
Inherits from RokubiminiBusManager. It's used for managing an Ethercat bus.
Definition: RokubiminiEthercatBusManager.hpp:27
rokubimini::ethercat::RokubiminiEthercatBusManager::RokubiminiEthercatBusManager
RokubiminiEthercatBusManager(const NodeHandlePtr &nh)
Definition: RokubiminiEthercatBusManager.hpp:53
rokubimini::RokubiminiBusManager::NodeHandlePtr
std::shared_ptr< ros::NodeHandle > NodeHandlePtr
rokubimini::ethercat::RokubiminiEthercatBusManagerPtr
std::shared_ptr< RokubiminiEthercatBusManager > RokubiminiEthercatBusManagerPtr
Definition: RokubiminiEthercatBusManager.hpp:221
std
rokubimini::RokubiminiBusManager
rokubimini::ethercat::RokubiminiEthercatBusManager::RokubiminiEthercatBusManager
RokubiminiEthercatBusManager(const std::string &busName, NodeHandlePtr nh)
Constructor with initialization list for the name and NodeHandle.
Definition: RokubiminiEthercatBusManager.hpp:44
BusManager.hpp
rokubimini::soem_interface::EthercatBusBase
Class for managing an ethercat bus containing one or multiple slaves.
Definition: EthercatBusBase.hpp:28
RokubiminiEthercat.hpp


rokubimini_ethercat
Author(s):
autogenerated on Sat Apr 15 2023 02:53:56