9#ifndef SUP_SYSSUP_COMMON_SUBSYS_FACADE_HPP_
10#define SUP_SYSSUP_COMMON_SUBSYS_FACADE_HPP_
19#include <rad/smAdapter.hpp>
20#include <rad/topicPub.hpp>
21#include <rad/anyEvent.hpp>
22#include <rad/activity.hpp>
23#include <rad/mal/utils.hpp>
27#include <ifw/sup/syssup/common/events.rad.hpp>
32 ::metadaqif::DaqState
m_state{::metadaqif::DaqState::Undefined};
38 void StopDaq(std::string filename);
46 std::ostream&
operator<<(
typename std::enable_if<std::is_enum<T>::value, std::ostream>::type& stream,
const T& e)
48 return stream << static_cast<typename std::underlying_type<T>::type>(e);
56 template<
typename EVENT_TYPE>
59 using Request = std::optional<typename EVENT_TYPE::payload_t>;
136 void Init(rad::SMAdapter& sm, rad::ThreadActivity* activity);
145 void Enable(rad::SMAdapter& sm, rad::ThreadActivity* activity);
158 void Disable(rad::SMAdapter& sm, rad::ThreadActivity* activity);
171 void Recover(rad::SMAdapter& sm, rad::ThreadActivity* activity);
178 void SetAccess(std::string subsys,
bool access);
198 void Setup(
const std::any& payload);
210 virtual void Reset();
240 template<
typename EVENT_TYPE,
typename OBJECT>
286 virtual void EstimateState(std::vector<State::StateEnum>& states,
287 std::vector<State::SubstateEnum>& substates);
312 std::string substate);
338 void AddSubsys(std::unique_ptr<Subsys> subsys);
419 template <
typename Iterator,
typename EVENT_DONE,
typename EVENT_ERR,
typename EVENT_TOUT>
420 void ManageReply(Iterator& vec, rad::ThreadActivity* activity,
421 int wait_time_msecs,
bool reply_on_success =
true);
424 bool CheckSubsysName(
const std::string& subsys)
const;
426 std::vector<std::unique_ptr<Subsys> > m_subsyss;
427 std::vector<std::string> m_subsys_names;
428 boost::asio::io_service m_ios;
429 rad::SMAdapter& m_sm;
431 std::string m_dp_filename;
433 std::map<std::string, DaqInfo> m_daq;
434 log4cplus::Logger m_logger;
446#include "subsysFacade.ipp"
Definition dataContext.hpp:67
Definition iSubsys.hpp:28
Definition subsysFacade.hpp:57
std::pair< std::string, Request > RequestPair
Definition subsysFacade.hpp:61
void ReplyOk(std::string req_id, std::string msg)
std::map< std::string, Request > RequestMap
Definition subsysFacade.hpp:60
std::optional< typename EVENT_TYPE::payload_t > Request
Definition subsysFacade.hpp:59
void ReplyError(std::string req_id, std::string msg)
void InsertRequest(RequestPair pair)
RequestMap m_req_map
Definition subsysFacade.hpp:68
Definition subsysFacade.hpp:81
virtual void Stop()
Abort all subsystems managed by the devmgr.
Definition subsysFacade.cpp:323
SingleReplier< Events::SubEnable > m_enable_replier
Definition subsysFacade.hpp:439
void Setup(const std::any &payload)
Executes a setup message.
Definition subsysFacade.cpp:658
void DisableAccess()
Disable Access for all subsystems.
Definition subsysFacade.cpp:621
SingleReplier< Events::SubDisable > m_disable_replier
Definition subsysFacade.hpp:440
void Connect()
Connect.
Definition subsysFacade.cpp:84
void Disable(rad::SMAdapter &sm, rad::ThreadActivity *activity)
Disable all subsystems managed by the Supervisor.
Definition subsysFacade.cpp:294
SingleReplier< Events::SubInit > m_init_replier
Definition subsysFacade.hpp:438
SingleReplier< Events::SubReset > m_reset_replier
Definition subsysFacade.hpp:441
std::string GetSubsysNames()
Get list of subsystems managed by the Supervisor.
Definition subsysFacade.cpp:403
void GetSubsystemStatus(const std::string &payload, std::string &buffer)
Get subsystem status.
Definition subsysFacade.cpp:454
const int GetNumSubsys()
Get the number of subsystems.
Definition subsysFacade.cpp:382
void SetAccess(std::string subsys, bool access)
Definition subsysFacade.cpp:630
void ClearSubsys()
Empty internal subsys map.
Definition subsysFacade.cpp:374
SubsysFacade(rad::SMAdapter &sm, DataContext &data_ctx)
Definition subsysFacade.cpp:71
virtual ~SubsysFacade()
~SubsysFacade
Definition subsysFacade.cpp:80
void UpdateConfiguration()
Triggers the update of the subsystem configuration.
Definition subsysFacade.cpp:469
void StartDaq(std::string daqid)
Start Data Acquisition.
Definition subsysFacade.cpp:670
void Init(rad::SMAdapter &sm, rad::ThreadActivity *activity)
Init all subsystems managed by the Supervisor.
Definition subsysFacade.cpp:174
void StartMonitoring()
StartMonitoring.
Definition subsysFacade.cpp:165
void Recover(rad::SMAdapter &sm, rad::ThreadActivity *activity)
Recover all subsystems managed by the Supervisor.
Definition subsysFacade.cpp:284
void AbortDaq(std::string daqid)
Abort Data Acquisition.
Definition subsysFacade.cpp:762
void SetSubsystemStates(std::string name, std::string state, std::string substate)
Set the subsystem states: state and substate.
Definition subsysFacade.cpp:434
void AddSubsys(std::unique_ptr< Subsys > subsys)
Add a subsystems instance to be managed by the facade.
Definition subsysFacade.cpp:368
void SetSubsystemSubstate(std::string name, std::string substate)
Set the subsystem substate.
Definition subsysFacade.cpp:446
void SetSubsystemConnectionState(std::string name, SubsysData::ConnectionEnum connection)
Get subsystem connection state.
Definition subsysFacade.cpp:417
void SubsysCommand(scxml4cpp::Context *c, OBJECT &obj)
Forward request to an specific subsystem.
virtual void Reset()
Reset subsystems.
Definition subsysFacade.cpp:345
DaqInfo StopDaq(std::string daqid)
Stop Data Acquisition.
Definition subsysFacade.cpp:712
virtual void EstimateState(std::vector< State::StateEnum > &states, std::vector< State::SubstateEnum > &substates)
EstimateState.
Definition subsysFacade.cpp:517
void Enable(rad::SMAdapter &sm, rad::ThreadActivity *activity)
Enable all subsystems managed by the Supervisor.
Definition subsysFacade.cpp:210
void UpdateHandler()
Triggers the update of the estimated state/substate.
Definition subsysFacade.cpp:494
void SetSubsystemState(std::string name, std::string state)
Set the subsystem state.
Definition subsysFacade.cpp:426
DaqInfo GetDaqStatus(std::string daqid) const
Get Daq Status.
Definition subsysFacade.cpp:780
ActionsInit class source file.
Definition actionMgr.cpp:32
std::ostream & operator<<(typename std::enable_if< std::is_enum< T >::value, std::ostream >::type &stream, const T &e)
Definition subsysFacade.hpp:46
Definition subsysFacade.hpp:31
bool IsActive()
Definition subsysFacade.cpp:56
std::string m_msg
Definition subsysFacade.hpp:33
std::vector< std::string > m_files
Definition subsysFacade.hpp:34
void StartDaq(std::string filename)
Definition subsysFacade.cpp:40
double m_timestamp
Definition subsysFacade.hpp:35
void StopDaq(std::string filename)
Definition subsysFacade.cpp:45
bool IsStopped()
Definition subsysFacade.cpp:63
void AbortDaq(std::string msg)
Definition subsysFacade.cpp:50
::metadaqif::DaqState m_state
Definition subsysFacade.hpp:32
ConnectionEnum
Definition subsys.hpp:42
Subsys class header file.