ifw-fcf  3.0.0
lampLcsIf.hpp
Go to the documentation of this file.
1 
10 #ifndef FCF_DEVMGR_DEVICE_LAMP_IF_HPP
11 #define FCF_DEVMGR_DEVICE_LAMP_IF_HPP
12 
13 // System headers
14 #include <unordered_map>
15 
16 // Third party headers
17 #include <yaml-cpp/yaml.h>
18 
19 
23 
24 #include <Fcfif.hpp>
25 #include <rad/mal/publisher.hpp>
26 
27 namespace fcf::devmgr::lamp {
28 
37  public:
39  virtual ~LampControllerData();
40 
41  inline double GetIntensity() const;
42  inline void SetIntensity(double intensity);
43 
44  inline std::string GetErrorText() const;
45  inline virtual std::string GetSubstateStr() const;
46 
47  void SetData(const LampControllerData& data);
48 
49  protected:
50  double m_intensity;
51  };
52 
53 
54 
68  template<typename TOPIC_TYPE = fcfif::LampTopicUnion>
70  {
71 
72  // enumerations for the lamp status
73  enum {
74  STAT_LOCAL = 1,
75  STAT_ERROR = 2,
76  STAT_HW_STATUS = 3,
77  STAT_STATE = 4,
78  STAT_SUBSTATE = 5,
79  STAT_INTENSITY = 6,
80  STAT_STATUS = 7
81  };
82 
83  public:
91  LampLcsIf(std::shared_ptr<fcf::devmgr::common::IDeviceConfig> config,
92  fcf::devmgr::common::DataContext& data_ctx, bool initialise = true);
93 
94 
98  virtual ~LampLcsIf() {};
99 
104  virtual bool IsReady();
105 
110  virtual bool IsOperational();
111 
112 
119  void SwitchOn(double intensity, unsigned int time);
120 
127  void SwitchOff();
128 
133  bool IsTurningOn();
134 
139  bool IsTurningOff();
140 
145  bool IsOn();
146 
151  bool IsOff();
152 
161  virtual void ReadStatus(LampControllerData& status,
162  bool force_read = true);
163 
175  void Listener(fcf::common::VectorVariant& params);
176 
182  virtual std::string GetRpcError(const short error_code) const;
183 
184 
185  private:
186 
198  void StoreAttribute(const std::string key,
199  const fcf::common::Variant& value,
200  bool publish,
201  int attribute);
202 
203  protected:
204  std::unique_ptr<rad::cii::Publisher<TOPIC_TYPE>> m_publisher;
205 
209  double m_intensity {};
210 
211  private:
212 
213 
214 
215 
216  };
217 
218 }
219 
220 #include "lampLcsIf.ipp"
221 
222 #endif //FCF_DEVMGR_DEVICE_LAMP_IF_HPP
fcf::devmgr::lamp::LampControllerData::~LampControllerData
virtual ~LampControllerData()
Definition: lampLcsIf.cpp:20
dataContext.hpp
DataContext class header file.
fcf::devmgr::lamp::LampControllerData::LampControllerData
LampControllerData()
Definition: lampLcsIf.cpp:15
fcf::devmgr::lamp
Definition: lamp.hpp:22
fcf::devmgr::lamp::LampLcsIf::SwitchOn
void SwitchOn(double intensity, unsigned int time)
Executes the SwitchOn RPC.
fcf::devmgr::lamp::LampControllerData::m_intensity
double m_intensity
Definition: lampLcsIf.hpp:50
fcf::devmgr::lamp::LampLcsIf::IsReady
virtual bool IsReady()
Check if controller is in Standby/Ready state.
fcf::devmgr::lamp::LampLcsIf::IsTurningOff
bool IsTurningOff()
Check if controller is switching the lamp off.
fcf::devmgr::lamp::LampControllerData
The LampControllerData struct.
Definition: lampLcsIf.hpp:36
lampConfig.hpp
LampConfig class header file.
fcf::devmgr::lamp::LampControllerData::GetErrorText
std::string GetErrorText() const
fcf::devmgr::lamp::LampLcsIf::~LampLcsIf
virtual ~LampLcsIf()
Default destructor.
Definition: lampLcsIf.hpp:98
fcf::devmgr::lamp::LampControllerData::SetIntensity
void SetIntensity(double intensity)
fcf::devmgr::lamp::LampLcsIf::IsOn
bool IsOn()
Check if lamp is on.
deviceLcsIf.hpp
deviceLcsIf class header file.
fcf::devmgr::lamp::LampLcsIf::LampLcsIf
LampLcsIf(std::shared_ptr< fcf::devmgr::common::IDeviceConfig > config, fcf::devmgr::common::DataContext &data_ctx, bool initialise=true)
LampLcsIf constructor.
fcf::devmgr::lamp::LampLcsIf::IsOperational
virtual bool IsOperational()
Check if controller is in Operational.
fcf::devmgr::common::DataContext
Definition: dataContext.hpp:92
fcf::devmgr::common::DeviceLcsIf
Definition: deviceLcsIf.hpp:75
fcf::devmgr::lamp::LampLcsIf::IsTurningOn
bool IsTurningOn()
Check if controller is switching the lamp on.
fcf::devmgr::lamp::LampControllerData::SetData
void SetData(const LampControllerData &data)
Definition: lampLcsIf.cpp:23
fcf::devmgr::lamp::LampControllerData::GetSubstateStr
virtual std::string GetSubstateStr() const
fcf::devmgr::lamp::LampLcsIf::SwitchOff
void SwitchOff()
Executes the SwitchOff RPC.
fcf::devmgr::lamp::LampLcsIf::m_publisher
std::unique_ptr< rad::cii::Publisher< TOPIC_TYPE > > m_publisher
Definition: lampLcsIf.hpp:204
fcf::devmgr::lamp::LampLcsIf::IsOff
bool IsOff()
Check if lamp is off.
fcf::devmgr::common::DeviceControllerData
The DeviceControllerData struct.
Definition: deviceLcsIf.hpp:34
fcf::devmgr::lamp::LampLcsIf
Lamp Local Control System (LCS) Interface (IF) class.
Definition: lampLcsIf.hpp:70
fcf::devmgr::lamp::LampLcsIf::m_intensity
double m_intensity
Actual intensity.
Definition: lampLcsIf.hpp:209
fcf::devmgr::lamp::LampControllerData::GetIntensity
double GetIntensity() const
fcf::devmgr::lamp::LampLcsIf::ReadStatus
virtual void ReadStatus(LampControllerData &status, bool force_read=true)
Read status from the controller.
fcf::devmgr::lamp::LampLcsIf::Listener
void Listener(fcf::common::VectorVariant &params)
Callback to manageUpdateStatus(); changes on the monitored items.
fcf::devmgr::lamp::LampLcsIf::GetRpcError
virtual std::string GetRpcError(const short error_code) const