8#ifndef SUP_SYSSUP_COMMON_SUBSYS_FACADE_HPP_
9#define SUP_SYSSUP_COMMON_SUBSYS_FACADE_HPP_
18#include <rad/smAdapter.hpp>
19#include <rad/topicPub.hpp>
20#include <rad/anyEvent.hpp>
21#include <rad/activity.hpp>
22#include <rad/mal/utils.hpp>
26#include <ifw/sup/syssup/common/events.rad.hpp>
31 ::metadaqif::DaqState
m_state{::metadaqif::DaqState::Undefined};
37 void StopDaq(std::string filename);
45 std::ostream&
operator<<(
typename std::enable_if<std::is_enum<T>::value, std::ostream>::type& stream,
const T& e)
47 return stream << static_cast<typename std::underlying_type<T>::type>(e);
55 template<
typename EVENT_TYPE>
58 using Request = std::optional<typename EVENT_TYPE::payload_t>;
64 void ReplyOk(std::string req_id, std::string msg);
135 void Init(rad::SMAdapter& sm, rad::ThreadActivity* activity);
144 void Enable(rad::SMAdapter& sm, rad::ThreadActivity* activity);
157 void Disable(rad::SMAdapter& sm, rad::ThreadActivity* activity);
170 void Recover(rad::SMAdapter& sm, rad::ThreadActivity* activity);
177 void SetAccess(std::string subsys,
bool access);
197 void Setup(
const std::any& payload);
209 virtual void Reset();
239 template<
typename EVENT_TYPE,
typename OBJECT>
285 virtual void EstimateState(std::vector<State::StateEnum>& states,
286 std::vector<State::SubstateEnum>& substates);
311 std::string substate);
337 void AddSubsys(std::unique_ptr<Subsys> subsys);
418 template <
typename Iterator,
typename EVENT_DONE,
typename EVENT_ERR,
typename EVENT_TOUT>
419 void ManageReply(Iterator& vec, rad::ThreadActivity* activity,
420 int wait_time_msecs,
bool reply_on_success =
true);
423 bool CheckSubsysName(
const std::string& subsys)
const;
425 std::vector<std::unique_ptr<Subsys> > m_subsyss;
426 std::vector<std::string> m_subsys_names;
427 boost::asio::io_service m_ios;
428 rad::SMAdapter& m_sm;
430 std::string m_dp_filename;
432 std::map<std::string, DaqInfo> m_daq;
433 log4cplus::Logger m_logger;
445#include "subsysFacade.ipp"
Definition dataContext.hpp:66
Definition iSubsys.hpp:27
Definition subsysFacade.hpp:56
std::pair< std::string, Request > RequestPair
Definition subsysFacade.hpp:60
void ReplyOk(std::string req_id, std::string msg)
std::map< std::string, Request > RequestMap
Definition subsysFacade.hpp:59
std::optional< typename EVENT_TYPE::payload_t > Request
Definition subsysFacade.hpp:58
void ReplyError(std::string req_id, std::string msg)
void InsertRequest(RequestPair pair)
RequestMap m_req_map
Definition subsysFacade.hpp:67
virtual void Stop()
Abort all subsystems managed by the devmgr.
Definition subsysFacade.cpp:322
SingleReplier< Events::SubEnable > m_enable_replier
Definition subsysFacade.hpp:438
void Setup(const std::any &payload)
Executes a setup message.
Definition subsysFacade.cpp:665
void DisableAccess()
Disable Access for all subsystems.
Definition subsysFacade.cpp:627
SingleReplier< Events::SubDisable > m_disable_replier
Definition subsysFacade.hpp:439
void Connect()
Connect.
Definition subsysFacade.cpp:83
void Disable(rad::SMAdapter &sm, rad::ThreadActivity *activity)
Disable all subsystems managed by the Supervisor.
Definition subsysFacade.cpp:293
SingleReplier< Events::SubInit > m_init_replier
Definition subsysFacade.hpp:437
SingleReplier< Events::SubReset > m_reset_replier
Definition subsysFacade.hpp:440
std::string GetSubsysNames()
Get list of subsystems managed by the Supervisor.
Definition subsysFacade.cpp:402
void GetSubsystemStatus(const std::string &payload, std::string &buffer)
Get subsystem status.
Definition subsysFacade.cpp:453
const int GetNumSubsys()
Get the number of subsystems.
Definition subsysFacade.cpp:381
void SetAccess(std::string subsys, bool access)
Definition subsysFacade.cpp:636
void ClearSubsys()
Empty internal subsys map.
Definition subsysFacade.cpp:373
SubsysFacade(rad::SMAdapter &sm, DataContext &data_ctx)
Definition subsysFacade.cpp:70
virtual ~SubsysFacade()
~SubsysFacade
Definition subsysFacade.cpp:79
void UpdateConfiguration()
Triggers the update of the subsystem configuration.
Definition subsysFacade.cpp:468
void StartDaq(std::string daqid)
Start Data Acquisition.
Definition subsysFacade.cpp:677
void Init(rad::SMAdapter &sm, rad::ThreadActivity *activity)
Init all subsystems managed by the Supervisor.
Definition subsysFacade.cpp:173
void StartMonitoring()
StartMonitoring.
Definition subsysFacade.cpp:164
void Recover(rad::SMAdapter &sm, rad::ThreadActivity *activity)
Recover all subsystems managed by the Supervisor.
Definition subsysFacade.cpp:283
void AbortDaq(std::string daqid)
Abort Data Acquisition.
Definition subsysFacade.cpp:769
void SetSubsystemStates(std::string name, std::string state, std::string substate)
Set the subsystem states: state and substate.
Definition subsysFacade.cpp:433
void AddSubsys(std::unique_ptr< Subsys > subsys)
Add a subsystems instance to be managed by the facade.
Definition subsysFacade.cpp:367
void SetSubsystemSubstate(std::string name, std::string substate)
Set the subsystem substate.
Definition subsysFacade.cpp:445
void SetSubsystemConnectionState(std::string name, SubsysData::ConnectionEnum connection)
Get subsystem connection state.
Definition subsysFacade.cpp:416
void SubsysCommand(scxml4cpp::Context *c, OBJECT &obj)
Forward request to an specific subsystem.
virtual void Reset()
Reset subsystems.
Definition subsysFacade.cpp:344
DaqInfo StopDaq(std::string daqid)
Stop Data Acquisition.
Definition subsysFacade.cpp:719
virtual void EstimateState(std::vector< State::StateEnum > &states, std::vector< State::SubstateEnum > &substates)
EstimateState.
Definition subsysFacade.cpp:523
void Enable(rad::SMAdapter &sm, rad::ThreadActivity *activity)
Enable all subsystems managed by the Supervisor.
Definition subsysFacade.cpp:209
void UpdateHandler()
Triggers the update of the estimated state/substate.
Definition subsysFacade.cpp:500
void SetSubsystemState(std::string name, std::string state)
Set the subsystem state.
Definition subsysFacade.cpp:425
DaqInfo GetDaqStatus(std::string daqid) const
Get Daq Status.
Definition subsysFacade.cpp:787
ActionMgr class source file.
Definition actionMgr.cpp:30
std::ostream & operator<<(typename std::enable_if< std::is_enum< T >::value, std::ostream >::type &stream, const T &e)
Definition subsysFacade.hpp:45
Definition subsysFacade.hpp:30
bool IsActive()
Definition subsysFacade.cpp:55
std::string m_msg
Definition subsysFacade.hpp:32
std::vector< std::string > m_files
Definition subsysFacade.hpp:33
void StartDaq(std::string filename)
Definition subsysFacade.cpp:39
double m_timestamp
Definition subsysFacade.hpp:34
void StopDaq(std::string filename)
Definition subsysFacade.cpp:44
bool IsStopped()
Definition subsysFacade.cpp:62
void AbortDaq(std::string msg)
Definition subsysFacade.cpp:49
::metadaqif::DaqState m_state
Definition subsysFacade.hpp:31
ConnectionEnum
Definition subsys.hpp:41