113 bool init()
override;
321 inline std::shared_ptr<Rokubimini>
getRokubimini(
const std::string& name)
const 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.
RokubiminiBusManager(const std::string &busName, NodeHandlePtr nh)
Constructor with initialization list for the name and NodeHandle.
void createRokubiminiRosPublishers() const
Creates ROS Publishers for each attached rokubimini.
bool hasRokubimini(const std::string &name)
Returns true if the rokubimini with name is found.
void createRokubiminiRosServices() const
Creates ROS Services for each attached rokubimini.
std::shared_ptr< Rokubimini > getRokubimini(const std::string &name) const
Returns the Rokubimini instance with name name.
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.
RokubiminiBusManager(const NodeHandlePtr &nh)
Constructor with initialization list for the NodeHandle.
void startupWithoutCommunication() const
Starts up all Rokubimini devices before communication has been established by the Bus Manager...
void setNodeHandle(const NodeHandlePtr &nh)
Sets the nodeHandle of the device.
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.
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.
~RokubiminiBusManager() override=default
Default Destructor.
std::string getName() const
Gets the name of the bus.
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.
NodeHandlePtr nh_
The internal NodeHandle variable.
virtual bool addRokubiminiToBus(const std::shared_ptr< Rokubimini > &rokubimini) const
Adds a Rokubimini to Bus.
void startupWithCommunication() const
Starts up all Rokubimini devices after communication has been established from the Bus Manager...
virtual void shutdownBus()
Shuts down the bus.
std::shared_ptr< diagnostic_updater::Updater > DiagnosticsUpdaterPtr
virtual void shutdown()
Shuts down everything.
std::vector< std::shared_ptr< Rokubimini > > rokubiminis_
virtual void publishBusManagerRosDiagnostics()=0
Publish the ROS Diagnostics for the Bus Manager. It's virtual since it's implementation specific...
std::shared_ptr< ros::NodeHandle > NodeHandlePtr
RokubiminiBusManager()=delete
Default constructor.
virtual bool startup()
Starts the communication with all the Rokubimini devices.
The Rokubimini Bus Manager class.
virtual void setRunMode()
Sets the devices controlled from the BusManager to run mode.
virtual void writeToBus()
Writes to the buses.