8 std::string setup_file;
19 ROS_WARN(
"[%s] Bus Manager could not startup",
name_.c_str());
25 std::vector<std::shared_ptr<Rokubimini>> rokubiminis;
34 options.
name_ =
"RokubiminiBusManager::updateWorker";
51 ROS_WARN_STREAM(
"Cannot start up, Rokubimini Bus Manager is already running.");
70 ROS_DEBUG(
"[RokubiminiBusManager]: update called");
89 ROS_WARN_STREAM(
"Cannot shut down, Rokubimini Bus Manager is not running.");
111 ROS_ERROR(
"[%s] Could not create rokubiminis from parameter server",
name_.c_str());
119 std::vector<std::string> keys;
120 std::string rokubimini_name;
121 nh_->getParamNames(keys);
122 for (
const auto& key : keys)
125 if (key.find(
nh_->getNamespace() +
"/rokubiminis") != std::string::npos && key.find(
"/name") != std::string::npos)
127 nh_->getParam(key, rokubimini_name);
128 ROS_DEBUG(
"[%s] Key is: %s and name is: %s",
name_.c_str(), key.c_str(), rokubimini_name.c_str());
134 ROS_DEBUG(
"[%s] Successfully created rokubimini with name: %s",
name_.c_str(), rokubimini_name.c_str());
void updateProcessReading() const
Updates all Rokubimini instances with new measurements.
bool init() override
Initializes the Bus Manager Node.
std::vector< std::shared_ptr< Rokubimini > > getRokubiminis() const
virtual bool load()
Loads the configuration of the bus (bus parameters and rokubiminis).
virtual bool update(const bota_worker::WorkerEvent &event)
Updates with new values from/to the Rokubiminis.
std::atomic< bool > isRunning_
Boolean that specifies if the Manager is already running.
virtual bool createRokubimini(const std::string &rokubiminiName)=0
Creates an implementation-specific Rokubimini instance.
void createRokubiminiRosPublishers() const
Creates ROS Publishers for each attached rokubimini.
ROSCPP_DECL const std::string & getName()
void createRokubiminiRosServices() const
Creates ROS Services for each attached rokubimini.
virtual bool createRokubiminisFromParamServer()
Creates rokubiminis from the parameter server.
virtual double loadTimeStep()=0
Loads the time_step from the Parameter Server.
void publishRosMessages() const
Publishes the ROS messages for each attached rokubimini.
void startupWithoutCommunication() const
Starts up all Rokubimini devices before communication has been established by the Bus Manager...
virtual bool loadBusParameters()=0
Loads bus-specific parameters from parameter server. It's pure virtual since it's implementation-spec...
virtual void readBus()
Reads the bus.
virtual bool startupCommunication()
Starts the communication through the bus.
std::string name_
The name of the bus.
std::atomic< double > timeStep_
void shutdownWithoutCommunication() const
void shutdownWithCommunication() const
Shuts down every Rokubimini device after communication has been closed.
virtual void setConfigMode()
Sets the devices controlled from the BusManager to config mode.
void createRokubiminiRosDiagnostics() const
Creates ROS Diagnostics for each attached rokubimini.
void publishRokubiminiRosDiagnostics() const
Publishes the ROS Diagnostics for each attached rokubimini.
void cleanup() override
Cleans up the Bus Manager Node.
#define ROS_WARN_STREAM(args)
NodeHandlePtr nh_
The internal NodeHandle variable.
#define ROS_DEBUG_STREAM(args)
virtual bool addRokubiminiToBus(const std::shared_ptr< Rokubimini > &rokubimini) const
Adds a Rokubimini to Bus.
bool addWorker(const std::string &name, const double timestep, bool(T::*fp)(const bota_worker::WorkerEvent &), T *obj, const int priority=0)
void startupWithCommunication() const
Starts up all Rokubimini devices after communication has been established from the Bus Manager...
virtual void shutdownBus()
Shuts down the bus.
virtual void shutdown()
Shuts down everything.
virtual void publishBusManagerRosDiagnostics()=0
Publish the ROS Diagnostics for the Bus Manager. It's virtual since it's implementation specific...
virtual bool startup()
Starts the communication with all the Rokubimini devices.
#define ROS_ERROR_STREAM(args)
virtual void setRunMode()
Sets the devices controlled from the BusManager to run mode.
virtual void writeToBus()
Writes to the buses.