ifw  0.0.1-dev
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
deviceFacade.hpp
Go to the documentation of this file.
1 
9 #ifndef DEVMGR_COMMON_DEVICE_FACADE_HPP_
10 #define DEVMGR_COMMON_DEVICE_FACADE_HPP_
11 
12 // System headers
13 #include <list>
14 
15 // Local headers
16 #include <rad/SMAdapter.hpp>
17 #include <rad/TopicPub.hpp>
18 #include <rad/AnyEvent.hpp>
19 #include <rad/Activity.hpp>
20 
21 #include <fcf/common/dispatcher.hpp>
22 #include <devmgr/common/device.hpp>
24 #include <devmgr/common/events.rad.hpp>
25 
26 
27 namespace devmgr {
28  namespace common {
29 
30  class Config;
31  class IDevice;
32 
40  class DeviceFacade {
41  public:
50  IConfig& config,
51  fcf::common::Dispatcher<>& failure,
52  fcf::common::Dispatcher<>& normal);
53 
57  virtual ~DeviceFacade();
58 
63  virtual bool Init(rad::SMAdapter& sm, rad::Activity* activity);
64 
72  virtual bool Enable(rad::SMAdapter& sm, rad::Activity* activity);
73 
81  virtual bool Recover(rad::SMAdapter& sm, rad::Activity* activity);
86  virtual bool Disable();
87 
110  virtual bool Setup(modif::ReqSetup setupMsg,
111  modif::TaskId& taskId,
112  rad::Activity* activity);
117  virtual bool Stop();
118 
123  virtual bool Reset();
124 
129  virtual bool Status(modif::ReqStatus& statusMsg, std::string& buffer);
130 
131 
136  virtual void Simulate(modif::ReqSimulate& msg);
137 
142  virtual void StopSim(modif::ReqStopSim& msg);
143 
148  virtual void Ignore(modif::ReqIgnore& msg);
149 
154  virtual void StopIgn(modif::ReqStopIgn& msg);
155 
160  virtual bool HwReset(modif::ReqHwReset& hwResetMsg);
161 
166  virtual bool HwInit(modif::ReqHwInit& hwInitMsg);
167 
172  virtual bool HwEnable(modif::ReqHwEnable& hwEnableMsg);
173 
178  virtual bool HwDisable(modif::ReqHwDisable& hwDisableMsg);
179 
190  virtual bool BeginAcq(modif::ReqBeginAcq& beginAcqMsg);
191 
207  virtual bool EndAcq(modif::ReqEndAcq& endAcqMsg);
208 
217 
224  void AddDevice(std::shared_ptr<IDevice> device);
225 
229  void ClearDevices();
230 
235  fcf::common::Dispatcher<>& GetFailureCB();
236 
241  fcf::common::Dispatcher<>& GetNormalCB();
242 
247  const int GetNumDevices();
248 
249  private:
250 
251  DeviceFacade(const DeviceFacade&) = delete;
252  DeviceFacade& operator= (const DeviceFacade&) = delete;
253 
262  void InitSync(rad::Activity* activity,
263  std::chrono::system_clock::time_point start_time,
264  bool& stopped,
265  bool& timeout);
266 
275  void EnableSync(rad::Activity* activity,
276  std::chrono::system_clock::time_point start_time,
277  bool& stopped,
278  bool& timeout);
279 
285  void DeviceFailureCB();
286 
293  void DeviceNormalCB();
294 
295  std::list<std::shared_ptr<IDevice> > m_devices;
296  boost::asio::io_service m_ios;
297  rad::SMAdapter& m_sm;
298  IConfig& m_config;
299  std::shared_ptr<rad::TopicPub> m_publisher;
300  std::string m_dp_filename;
301 
305  fcf::common::Dispatcher<> m_failure;
306 
310  fcf::common::Dispatcher<> m_normal;
311  };
312  }
313 } // namespace devmgr::Common
314 
315 #endif // DEVMGR_COMMON_DEVICE_FACADE_HPP_
virtual bool Init(rad::SMAdapter &sm, rad::Activity *activity)
Init all devices managed by the devmgr.
Definition: deviceFacade.cpp:69
Definition: Activity.hpp:30
virtual bool HwInit(modif::ReqHwInit &hwInitMsg)
Init hardware.
Definition: deviceFacade.cpp:528
void TriggerInternalEvent(rad::SMAdapter &sm, rad::UniqueEvent &&e)
Trigger an internal event.
Definition: deviceFacade.cpp:621
Definition: requests.pb.h:784
virtual bool Stop()
Abort all devices managed by the devmgr.
Definition: deviceFacade.cpp:410
virtual bool BeginAcq(modif::ReqBeginAcq &beginAcqMsg)
Begin Acquisition.
Definition: deviceFacade.cpp:562
Definition: topics.pb.h:80
Definition: requests.pb.h:6543
Config
Definition: Test{{cookiecutter.device_name}}Config.cpp:44
virtual void Simulate(modif::ReqSimulate &msg)
Simulate devices managed by the server.
Definition: deviceFacade.cpp:476
virtual bool Recover(rad::SMAdapter &sm, rad::Activity *activity)
Recover all devices managed by the devmgr.
Definition: deviceFacade.cpp:218
virtual bool EndAcq(modif::ReqEndAcq &endAcqMsg)
End Acquisition.
Definition: deviceFacade.cpp:596
virtual bool Enable(rad::SMAdapter &sm, rad::Activity *activity)
Enable all devices managed by the devmgr.
Definition: deviceFacade.cpp:110
Definition: requests.pb.h:5446
virtual bool HwReset(modif::ReqHwReset &hwResetMsg)
Reset hardware.
Definition: deviceFacade.cpp:517
Definition: requests.pb.h:2480
optional string msg
Definition: topics.proto:7
Definition: requests.pb.h:2263
virtual ~DeviceFacade()
~DeviceFacade
Definition: deviceFacade.cpp:65
virtual void StopIgn(modif::ReqStopIgn &msg)
Stop ignoring devices managed by the server.
Definition: deviceFacade.cpp:506
Definition: requests.pb.h:1829
optional bool timeout
Definition: requests.proto:13
virtual bool Status(modif::ReqStatus &statusMsg, std::string &buffer)
Get status from devices.
Definition: deviceFacade.cpp:454
Definition: requests.pb.h:6760
virtual bool Setup(modif::ReqSetup setupMsg, modif::TaskId &taskId, rad::Activity *activity)
Executes a setup message.
Definition: deviceFacade.cpp:338
Definition: SMAdapter.hpp:43
Definition: requests.pb.h:6326
std::unique_ptr< AnyEvent > UniqueEvent
Definition: AnyEvent.hpp:48
virtual bool HwEnable(modif::ReqHwEnable &hwEnableMsg)
Enable hardware.
Definition: deviceFacade.cpp:540
virtual bool Disable()
Disable all devices managed by the devmgr.
Definition: deviceFacade.cpp:310
DeviceFacade(rad::SMAdapter &sm, IConfig &config, fcf::common::Dispatcher<> &failure, fcf::common::Dispatcher<> &normal)
Definition: deviceFacade.cpp:39
Definition: requests.pb.h:548
fcf::common::Dispatcher & GetNormalCB()
Get reference to normal CB.
Definition: deviceFacade.cpp:643
void ClearDevices()
Empty internal device map.
Definition: deviceFacade.cpp:632
void AddDevice(std::shared_ptr< IDevice > device)
Add a device instance to be managed by the facade.
Definition: deviceFacade.cpp:627
virtual void Ignore(modif::ReqIgnore &msg)
Ignore devices managed by the server.
Definition: deviceFacade.cpp:496
virtual void StopSim(modif::ReqStopSim &msg)
Stop simulating devices managed by the server.
Definition: deviceFacade.cpp:486
virtual bool Reset()
Reset devices.
Definition: deviceFacade.cpp:431
virtual bool HwDisable(modif::ReqHwDisable &hwDisableMsg)
Disable hardware.
Definition: deviceFacade.cpp:551
const int GetNumDevices()
Get the number of devices.
Definition: deviceFacade.cpp:670
fcf::common::Dispatcher & GetFailureCB()
Get reference to failure CB.
Definition: deviceFacade.cpp:638
Definition: requests.pb.h:1584
Definition: requests.pb.h:6977
Definition: requests.pb.h:2046