ifw-fcf  3.0.0
sensorLcsIf.hpp
Go to the documentation of this file.
1 
10 #ifndef FCF_DEVMGR_DEVICE_SENSOR_LCSIF_HPP
11 #define FCF_DEVMGR_DEVICE_SENSOR_LCSIF_HPP
12 
13 // System headers
14 #include <unordered_map>
15 
16 // Third party headers
17 #include <yaml-cpp/yaml.h>
18 
22 
23 #include <Fcfif.hpp>
24 #include <rad/mal/publisher.hpp>
25 
26 
27 namespace fcf::devmgr::sensor {
28 
33  struct ChannelData {
34  ChannelData();
35  virtual ~ChannelData();
36 
37 
38  void GetValue(bool& value) const;
39  void GetValue(double& value) const;
40  void GetValue(int& value) const;
41  fcf::common::Variant GetRawValue() const;
42 
43  void SetValue(const fcf::common::Variant value);
44  friend std::ostream& operator<<(std::ostream& dest, const ChannelData& obj);
45 
46  protected:
47 
48  fcf::common::Variant m_value;
49  };
50 
61  public:
63  virtual ~SensorControllerData();
64 
65  inline std::string GetErrorText() const;
66  inline virtual std::string GetSubstateStr() const;
67 
68  inline void ClearChannelValues();
69  inline void SetChannelValue(std::string channel,
70  fcf::common::Variant value);
71  inline void GetChannelValue(std::string channel,
72  ChannelData& data);
73 
74 
75  void SetData(const SensorControllerData& data);
76 
77  //friend class SensorLcsIf<TOPIC_TYPE>;
78  protected:
79  std::unordered_map<std::string, ChannelData> m_values;
80  };
81 
82 
96  template<typename TOPIC_TYPE = fcfif::SensorTopicUnion>
98  // enumerations for the Sensor status
99 
100  enum {
101  STAT_LOCAL = 1,
102  STAT_ERROR = 2,
103  STAT_STATE = 3,
104  STAT_SUBSTATE = 4,
105  STAT_CHANNEL = 5,
106  };
107 
108  public:
116  SensorLcsIf(std::shared_ptr<fcf::devmgr::common::IDeviceConfig> config,
117  fcf::devmgr::common::DataContext& data_ctx, bool initialise = true);
118 
122  virtual ~SensorLcsIf() {};
123 
128  virtual bool IsReady();
129 
130  virtual bool IsNotReady();
131 
136  virtual bool IsOperational();
137 
142  bool IsHwFailure();
143 
153  virtual void ReadStatus(SensorControllerData& status,
154  bool force_read = true);
155 
166 
175 
187  void Listener(fcf::common::VectorVariant& params);
188 
194  virtual std::string GetRpcError(const short error_code) const;
195 
196 
197  private:
198 
206  void PublishState(const fcf::common::Variant& value);
207 
215  void PublishSubstate(const fcf::common::Variant& value);
216 
217  void PublishError(const fcf::common::Variant& value);
218 
219  void PublishChannel(const std::string channel,
220  const fcf::common::Variant& value);
221 
222 
223  protected:
224 
225 
228  std::unordered_map<std::string, std::string> m_channels_map;
229  std::unordered_map<std::string, ChannelData> m_channel_values;
230  std::unique_ptr<rad::cii::Publisher<TOPIC_TYPE>> m_publisher;
231 
232  private:
233 
234 
235 
236  };
237 }
238 
239 #include "sensorLcsIf.ipp"
240 
241 #endif //FCF_DEVMGR_DEVICE_SENSOR_LCSIF_HPP
dataContext.hpp
DataContext class header file.
fcf::devmgr::sensor::SensorControllerData::GetChannelValue
void GetChannelValue(std::string channel, ChannelData &data)
fcf::devmgr::sensor::ChannelData::GetValue
void GetValue(int &value) const
fcf::devmgr::sensor::SensorLcsIf::StopMonitoring
void StopMonitoring()
Stop monitoring of controller attributes.
fcf::devmgr::sensor::ChannelData::GetValue
void GetValue(bool &value) const
fcf::devmgr::sensor::SensorControllerData::m_values
std::unordered_map< std::string, ChannelData > m_values
Definition: sensorLcsIf.hpp:79
fcf::devmgr::sensor::SensorLcsIf::IsOperational
virtual bool IsOperational()
Check if controller is in Operational.
fcf::devmgr::sensor::SensorControllerData
The sensorControllerData struct.
Definition: sensorLcsIf.hpp:60
fcf::devmgr::sensor::SensorControllerData::SetData
void SetData(const SensorControllerData &data)
Definition: sensorLcsIf.cpp:36
fcf::devmgr::sensor::ChannelData::operator<<
friend std::ostream & operator<<(std::ostream &dest, const ChannelData &obj)
Definition: sensorLcsIf.cpp:24
fcf::devmgr::sensor::SensorLcsIf::IsNotReady
virtual bool IsNotReady()
Check if controller is in Standby/NotReady state.
fcf::devmgr::sensor::SensorControllerData::ClearChannelValues
void ClearChannelValues()
fcf::devmgr::sensor::SensorControllerData::SetChannelValue
void SetChannelValue(std::string channel, fcf::common::Variant value)
fcf::devmgr::sensor::SensorLcsIf
Sensor Local Control System (LCS) Interface (IF) class.
Definition: sensorLcsIf.hpp:97
fcf::devmgr::sensor::SensorLcsIf::ReadStatus
virtual void ReadStatus(SensorControllerData &status, bool force_read=true)
Read status from the controller.
fcf::devmgr::sensor::SensorControllerData::GetErrorText
std::string GetErrorText() const
fcf::devmgr::sensor::SensorLcsIf::IsHwFailure
bool IsHwFailure()
Check if Sensor is in hardware error.
fcf::devmgr::sensor::ChannelData::ChannelData
ChannelData()
Definition: sensorLcsIf.cpp:18
fcf::devmgr::sensor::SensorControllerData::~SensorControllerData
virtual ~SensorControllerData()
Definition: sensorLcsIf.cpp:33
deviceLcsIf.hpp
deviceLcsIf class header file.
fcf::devmgr::sensor::SensorLcsIf::Listener
void Listener(fcf::common::VectorVariant &params)
Callback to manage changes on the monitored items.
fcf::devmgr::sensor::SensorLcsIf::m_channels_map
std::unordered_map< std::string, std::string > m_channels_map
Definition: sensorLcsIf.hpp:228
fcf::devmgr::sensor::ChannelData::GetRawValue
fcf::common::Variant GetRawValue() const
fcf::devmgr::sensor::SensorLcsIf::~SensorLcsIf
virtual ~SensorLcsIf()
Default destructor.
Definition: sensorLcsIf.hpp:122
fcf::devmgr::sensor
Definition: sensor.hpp:21
fcf::devmgr::sensor::SensorLcsIf::m_publisher
std::unique_ptr< rad::cii::Publisher< TOPIC_TYPE > > m_publisher
Definition: sensorLcsIf.hpp:230
fcf::devmgr::common::DataContext
Definition: dataContext.hpp:92
fcf::devmgr::sensor::ChannelData::SetValue
void SetValue(const fcf::common::Variant value)
fcf::devmgr::sensor::SensorControllerData::GetSubstateStr
virtual std::string GetSubstateStr() const
fcf::devmgr::sensor::SensorLcsIf::StartMonitoring
void StartMonitoring()
Start monitoring of controller attributes.
fcf::devmgr::common::DeviceLcsIf
Definition: deviceLcsIf.hpp:75
fcf::devmgr::sensor::SensorLcsIf::SensorLcsIf
SensorLcsIf(std::shared_ptr< fcf::devmgr::common::IDeviceConfig > config, fcf::devmgr::common::DataContext &data_ctx, bool initialise=true)
sensorLcsIf constructor.
fcf::devmgr::sensor::SensorLcsIf::GetRpcError
virtual std::string GetRpcError(const short error_code) const
fcf::devmgr::sensor::ChannelData::GetValue
void GetValue(double &value) const
fcf::devmgr::sensor::ChannelData
The ChannelData struct.
Definition: sensorLcsIf.hpp:33
sensorConfig.hpp
SensorConfig class header file.
fcf::devmgr::sensor::SensorControllerData::SensorControllerData
SensorControllerData()
Definition: sensorLcsIf.cpp:29
fcf::devmgr::sensor::ChannelData::~ChannelData
virtual ~ChannelData()
Definition: sensorLcsIf.cpp:21
fcf::devmgr::common::DeviceControllerData
The DeviceControllerData struct.
Definition: deviceLcsIf.hpp:34
fcf::devmgr::sensor::SensorLcsIf::m_channel_values
std::unordered_map< std::string, ChannelData > m_channel_values
Definition: sensorLcsIf.hpp:229
fcf::devmgr::sensor::SensorLcsIf::IsReady
virtual bool IsReady()
Check if controller is in Standby/Ready state.
fcf::devmgr::sensor::ChannelData::m_value
fcf::common::Variant m_value
Definition: sensorLcsIf.hpp:48