RokubiminiSerialBusManager.cpp
Go to the documentation of this file.
1 
3 
4 namespace rokubimini
5 {
6 namespace serial
7 {
9 {
10  return timeStep_;
11 }
13 {
14  if (!nh_->getParam("time_step", timeStep_))
15  {
16  ROS_INFO("[%s] Could not find the 'time_step' parameter in Parameter Server. Running asynchronously",
17  name_.c_str());
18  timeStep_ = 0;
19  }
20 }
21 
22 bool RokubiminiSerialBusManager::createRokubimini(const std::string& rokubiminiName)
23 {
24  auto rokubimini = std::make_shared<RokubiminiSerial>(rokubiminiName, nh_);
25  rokubimini->load();
26  rokubiminis_.emplace_back(rokubimini);
28  {
29  ROS_ERROR("[%s] Could not add rokubimini to bus", name_.c_str());
30  return false;
31  }
32  return true;
33 }
34 
36 {
37  std::string port_string = "port";
38  if (nh_->hasParam(port_string))
39  {
40  nh_->getParam(port_string, serialPort_);
41  }
42  else
43  {
44  ROS_ERROR("Could not find serial port in Parameter Server: %s", port_string.c_str());
45  return false;
46  }
47  return true;
48 }
49 
50 bool RokubiminiSerialBusManager::addRokubiminiToBus(const std::shared_ptr<RokubiminiSerial>& rokubimini) const
51 {
52  auto impl_ptr = std::make_shared<RokubiminiSerialImpl>(rokubimini->getName(), serialPort_);
53 
54  rokubimini->setImplPointer(impl_ptr);
55  return true;
56 }
57 
59 {
60  for (auto& rokubimini : rokubiminis_)
61  {
62  auto rokubimini_serial = std::dynamic_pointer_cast<RokubiminiSerial>(rokubimini);
63  fetchTimeStep();
64  if (!rokubimini_serial->setPublishMode(timeStep_))
65  {
66  ROS_ERROR("[%s] Failed to set publish mode (sync vs async) to the serial device",
67  rokubimini_serial->getName().c_str());
68  return false;
69  }
70  if (!rokubimini_serial->init())
71  {
72  ROS_ERROR("[%s] Failed to initialize the serial device", rokubimini_serial->getName().c_str());
73  return false;
74  }
75  }
76  return true;
77 }
78 
80 {
81  for (const auto& rokubimini : rokubiminis_)
82  {
83  auto rokubimini_serial = std::dynamic_pointer_cast<RokubiminiSerial>(rokubimini);
84  if (!rokubimini_serial->setConfigMode())
85  {
86  ROS_ERROR("[%s] The Serial device could not switch to configuration mode", rokubimini_serial->getName().c_str());
87  }
88  }
89 }
91 {
92  for (const auto& rokubimini : rokubiminis_)
93  {
94  auto rokubimini_serial = std::dynamic_pointer_cast<RokubiminiSerial>(rokubimini);
95  if (!rokubimini_serial->setRunMode())
96  {
97  ROS_ERROR("[%s] The Serial device could not switch to run mode", rokubimini_serial->getName().c_str());
98  }
99  }
100 }
101 } // namespace serial
102 } // namespace rokubimini
rokubimini::serial::RokubiminiSerialBusManager::loadTimeStep
double loadTimeStep() override
Loads the internal timeStep_ variable.
Definition: RokubiminiSerialBusManager.cpp:8
rokubimini::RokubiminiBusManager::rokubiminis_
std::vector< std::shared_ptr< Rokubimini > > rokubiminis_
rokubimini::serial::RokubiminiSerialBusManager::setConfigMode
void setConfigMode() override
Sets all the serial devices in config mode.
Definition: RokubiminiSerialBusManager.cpp:79
RokubiminiSerialBusManager.hpp
rokubimini::RokubiminiBusManager::name_
std::string name_
rokubimini::serial::RokubiminiSerialBusManager::timeStep_
double timeStep_
The time step of publishing loop.
Definition: RokubiminiSerialBusManager.hpp:163
rokubimini::serial::RokubiminiSerialBusManager::startupCommunication
bool startupCommunication() override
Initializes the communication with the serial devices.
Definition: RokubiminiSerialBusManager.cpp:58
rokubimini::serial::RokubiminiSerialBusManager::loadBusParameters
bool loadBusParameters() override
Loads serial bus parameters from parameter server.
Definition: RokubiminiSerialBusManager.cpp:35
rokubimini::serial::RokubiminiSerialBusManager::addRokubiminiToBus
bool addRokubiminiToBus(const std::shared_ptr< RokubiminiSerial > &rokubimini) const
Creates a RokubiminiSerial Implementation object for the.
Definition: RokubiminiSerialBusManager.cpp:50
rokubimini::RokubiminiBusManager::nh_
NodeHandlePtr nh_
rokubimini::serial::RokubiminiSerialBusManager::fetchTimeStep
void fetchTimeStep()
Fetches the 'time_step' from the Parameter Server and stores it in the protected 'timeStep_' variable...
Definition: RokubiminiSerialBusManager.cpp:12
rokubimini
System dependencies.
rokubimini::serial::RokubiminiSerialBusManager::serialPort_
std::string serialPort_
The name of serial port.
Definition: RokubiminiSerialBusManager.hpp:149
rokubimini::serial::RokubiminiSerialBusManager::createRokubimini
bool createRokubimini(const std::string &rokubiminiName) override
Creates an RokubiminiSerial instance.
Definition: RokubiminiSerialBusManager.cpp:22
ROS_ERROR
#define ROS_ERROR(...)
rokubimini::serial::RokubiminiSerialBusManager::setRunMode
void setRunMode() override
Sets all the serial devices in run mode.
Definition: RokubiminiSerialBusManager.cpp:90
ROS_INFO
#define ROS_INFO(...)


rokubimini_serial
Author(s):
autogenerated on Sat Apr 15 2023 02:53:58