Go to the documentation of this file.
9 #ifndef FCF_DEVMGR_COMMON_DEVICE_FACADE_HPP_
10 #define FCF_DEVMGR_COMMON_DEVICE_FACADE_HPP_
16 #include <rad/smAdapter.hpp>
17 #include <rad/topicPub.hpp>
18 #include <rad/anyEvent.hpp>
19 #include <rad/activity.hpp>
20 #include <utils/bat/logger.hpp>
22 #include <fcf/common/dispatcher.hpp>
24 #include <fcf/devmgr/common/events.rad.hpp>
31 ::metadaqif::DaqState
m_state{::metadaqif::DaqState::Undefined};
37 void StopDaq(std::string filename);
65 fcf::common::Dispatcher<>& failure,
66 fcf::common::Dispatcher<>& normal);
77 virtual bool Init(rad::SMAdapter& sm, rad::ThreadActivity* activity);
86 virtual bool Enable(rad::SMAdapter& sm, rad::ThreadActivity* activity);
95 virtual bool Recover(rad::SMAdapter& sm, rad::ThreadActivity* activity);
123 virtual bool Setup(
const std::any& payload, rad::ThreadActivity* activity);
134 virtual void Reset();
142 virtual void Status(
const std::any& payload, std::string& buffer);
149 virtual void Simulate(rad::AnyEvent
const& last_event);
155 virtual void StopSim(rad::AnyEvent
const& last_event);
161 virtual void Ignore(rad::AnyEvent
const& last_event);
167 virtual void StopIgn(rad::AnyEvent
const& last_event);
173 virtual void HwReset(rad::AnyEvent
const& last_event);
179 virtual void HwInit(rad::AnyEvent
const& last_event);
185 virtual void HwEnable(rad::AnyEvent
const& last_event);
191 virtual void HwDisable(rad::AnyEvent
const& last_event);
197 virtual std::string
DevNames()
const;
203 virtual std::string
DevInfo()
const;
209 virtual std::string
DevConfig(
const std::string devname)
const;
271 void AddDevice(std::shared_ptr<IDevice> device);
309 void InitSync(rad::ThreadActivity* activity,
310 std::chrono::system_clock::time_point start_time,
322 void EnableSync(rad::ThreadActivity* activity,
323 std::chrono::system_clock::time_point start_time,
332 void DeviceFailureCB();
340 void DeviceNormalCB();
342 void CheckDeviceName(
const std::vector<std::string>& devices)
const;
344 std::vector<std::shared_ptr<IDevice> > m_devices;
345 std::vector<std::string> m_device_names;
346 boost::asio::io_service m_ios;
347 rad::SMAdapter& m_sm;
349 std::string m_dp_filename;
350 std::map<std::string, fcf::devmgr::common::DaqInfo> m_daq;
355 fcf::common::Dispatcher<> m_failure;
360 fcf::common::Dispatcher<> m_normal;
363 log4cplus::Logger m_logger;
369 #endif // FCF_DEVMGR_COMMON_DEVICE_FACADE_HPP_
virtual bool Init(rad::SMAdapter &sm, rad::ThreadActivity *activity)
Init all devices managed by the devmgr.
Definition: deviceFacade.cpp:95
bool IsActive()
Definition: deviceFacade.cpp:57
virtual ~DeviceFacade()
~DeviceFacade
Definition: deviceFacade.cpp:91
void ClearDevices()
Empty internal device map.
Definition: deviceFacade.cpp:741
void TriggerInternalEvent(rad::SMAdapter &sm, rad::UniqueEvent &&e)
Trigger an internal event.
Definition: deviceFacade.cpp:729
virtual void StopIgn(rad::AnyEvent const &last_event)
Stop ignoring devices managed by the server.
Definition: deviceFacade.cpp:542
Device class header file.
virtual void HwReset(rad::AnyEvent const &last_event)
Reset hardware.
Definition: deviceFacade.cpp:554
virtual void Simulate(rad::AnyEvent const &last_event)
Simulate devices managed by the server.
Definition: deviceFacade.cpp:506
virtual void Status(const std::any &payload, std::string &buffer)
Get status from devices.
Definition: deviceFacade.cpp:493
fcf::devmgr::common::DaqInfo StopDaq(std::string daqid)
Stop Data Acquisition.
Definition: deviceFacade.cpp:646
fcf::devmgr::common::DaqInfo GetDaqStatus(std::string daqid) const
Get Daq Status.
Definition: deviceFacade.cpp:717
void AddDevice(std::shared_ptr< IDevice > device)
Add a device instance to be managed by the facade.
Definition: deviceFacade.cpp:735
virtual void StopSim(rad::AnyEvent const &last_event)
Stop simulating devices managed by the server.
Definition: deviceFacade.cpp:518
virtual std::string DevInfo() const
Get information of managed devices.
Definition: deviceFacade.cpp:982
std::string m_msg
Definition: deviceFacade.hpp:32
Definition: deviceFacade.hpp:30
fcf::common::Dispatcher & GetNormalCB()
Get reference to normal CB.
Definition: deviceFacade.cpp:751
const int GetNumDevices() const noexcept
Get the number of devices.
Definition: deviceFacade.cpp:783
void AbortDaq(std::string msg)
Definition: deviceFacade.cpp:51
virtual bool Setup(const std::any &payload, rad::ThreadActivity *activity)
Executes a setup message.
Definition: deviceFacade.cpp:380
virtual void HwDisable(rad::AnyEvent const &last_event)
Disable hardware.
Definition: deviceFacade.cpp:592
Definition: deviceFacade.hpp:53
virtual bool Recover(rad::SMAdapter &sm, rad::ThreadActivity *activity)
Recover all devices managed by the devmgr.
Definition: deviceFacade.cpp:262
Definition: actionMgr.cpp:29
virtual void HwInit(rad::AnyEvent const &last_event)
Init hardware.
Definition: deviceFacade.cpp:566
Definition: config.hpp:56
DeviceFacade(rad::SMAdapter &sm, Config &config, fcf::common::Dispatcher<> &failure, fcf::common::Dispatcher<> &normal)
Definition: deviceFacade.cpp:71
void AbortDaq(std::string daqid)
Abort Data Acquisition.
Definition: deviceFacade.cpp:699
virtual std::string DevConfig(const std::string devname) const
Get configuration for a given device.
Definition: deviceFacade.cpp:1000
double m_timestamp
Definition: deviceFacade.hpp:34
void StartDaq(std::string filename)
Definition: deviceFacade.cpp:41
std::vector< std::string > m_files
Definition: deviceFacade.hpp:33
void StopDaq(std::string filename)
Definition: deviceFacade.cpp:46
virtual void Ignore(rad::AnyEvent const &last_event)
Ignore devices managed by the server.
Definition: deviceFacade.cpp:530
virtual void Reset()
Reset devices.
Definition: deviceFacade.cpp:481
virtual std::string DevNames() const
Get list of managed devices.
Definition: deviceFacade.cpp:973
bool IsStopped()
Definition: deviceFacade.cpp:64
virtual void Stop()
Abort all devices managed by the devmgr.
Definition: deviceFacade.cpp:473
::metadaqif::DaqState m_state
Definition: deviceFacade.hpp:31
void StartDaq(std::string daqid)
Start Data Acquisition.
Definition: deviceFacade.cpp:604
fcf::common::Dispatcher & GetFailureCB()
Get reference to failure CB.
Definition: deviceFacade.cpp:747
virtual bool Disable()
Disable all devices managed by the devmgr.
Definition: deviceFacade.cpp:354
virtual void HwEnable(rad::AnyEvent const &last_event)
Enable hardware.
Definition: deviceFacade.cpp:580
virtual bool Enable(rad::SMAdapter &sm, rad::ThreadActivity *activity)
Enable all devices managed by the devmgr.
Definition: deviceFacade.cpp:141