ifw-fcf  3.0.0
deviceLcsIf.hpp
Go to the documentation of this file.
1 
8 #ifndef FCF_DEVMGR_COMMON_DEVICE_LCS_IF_H
9 #define FCF_DEVMGR_COMMON_DEVICE_LCS_IF_H
10 
11 // Third party headers
12 #include <yaml-cpp/yaml.h>
13 
14 #include <mal/Cii.hpp>
15 #include <mal/utility/LoadMal.hpp>
16 
17 // Local headers
18 #include <fcf/common/iComm.hpp>
19 #include <fcf/common/dispatcher.hpp>
21 //#include <rad/mal/publisher.hpp>
22 
23 namespace fcf {
24  namespace devmgr {
25  namespace common {
26 
35  public:
37  virtual ~DeviceControllerData();
38  inline int GetState() const;
39  inline void SetState(int state);
40  inline int GetSubstate() const;
41  inline std::string GetStateStr() const;
42  inline void SetSubstate(int subtate);
43  inline bool GetLocalFlag() const;
44  inline void SetLocalFlag(bool local_flag);
45  inline int GetErrorCode() const;
46  inline void SetErrorCode(int error_code);
47 
48  void SetData(const DeviceControllerData& data);
49 
50  protected:
51  int m_state;
53  bool m_local;
55  };
56 
73  class DataContext;
74 
75  class DeviceLcsIf {
76  public:
82  explicit DeviceLcsIf(std::shared_ptr<IDeviceConfig> config,
83  DataContext& data_ctx);
84 
85  enum {
90  STAT_SUBSTATE = 5
91  };
92 
93 
106  virtual void RegisterComm(std::shared_ptr<fcf::common::IComm> comm_if,
107  fcf::common::Dispatcher<>& failure,
108  fcf::common::Dispatcher<>& normal);
109 
118  virtual void Connect();
119 
127  virtual void Disconnect();
128 
139  virtual void ReadConfig(const std::vector<std::string>& stat_map_vector,
140  const std::vector<std::string>& rpc_map_vector);
141 
142 
147  virtual bool IsNotReady();
148 
153  virtual bool IsReady();
154 
163  virtual bool IsDisabling();
164 
169  virtual bool IsOperational();
170 
181  virtual bool IsHwFailure();
182 
188  virtual void Init();
189 
196  virtual void Enable();
197 
204  virtual void Disable();
205 
214  virtual void Stop();
215 
222  virtual void Reset();
223 
233  virtual void StartMonitoring();
234 
243  virtual void StopMonitoring();
244 
251  virtual void Listener(fcf::common::VectorVariant& params) = 0;
252 
258  virtual std::string GetRpcError(const short error_code) const = 0;
259 
269  virtual std::string GetHwError(int& error_code, const bool update = false);
270 
271 
286  std::string GetMapValue(std::string category, std::string key);
287 
288  fcf::common::Dispatcher<fcf::common::VectorVariant&>& GetDispatcher();
289 
294  bool IsConfigLoaded() const;
295 
300  bool IsConnected() const;
301 
307  virtual std::shared_ptr<IDeviceConfig> GetDeviceConfig();
308 
309 
310  protected:
311 
316  void LoadConfig();
317 
318  void ExecuteRpc(const std::string& obj,
319  const std::string& proc,
320  fcf::common::VectorVariant& attr_list);
321  int ReadErrorCode();
322 
332  void GetStates(int &state, int &substate);
333 
338  void StoreUaNames(const std::vector <std::pair<std::string, unsigned int>>& ualist);
339 
349  void StoreAttribute(const std::string key,
350  const fcf::common::Variant& value,
351  int attribute);
355  YAML::Node m_config_node;
356 
360  std::shared_ptr<fcf::common::IComm> m_comm;
361 
365  std::shared_ptr<IDeviceConfig> m_config;
366 
370  fcf::common::Dispatcher<fcf::common::VectorVariant&> m_dispatcher;
371 
375  fcf::common::Dispatcher<> m_failure;
376 
380  fcf::common::Dispatcher<> m_normal;
381 
385  int m_state {};
386 
390  int m_substate {};
391 
395  bool m_local {false};
396 
400  bool m_error_code {false};
401 
405  bool m_config_loaded {false};
406 
410  bool m_connected {false};
411 
413 
415  std::string m_lcs_prefix;
416 
417  elt::mal::Mal::Properties m_mal_properties;
418  std::string m_pub_endpoint;
419 
420 
425  std::unordered_map<std::string, short> m_ua_status_map;
426 
429  std::vector<std::string> m_ua_monitor_vector;
430 
431  std::unordered_map<short, std::string> m_hw_errors;
432 
433 
434  };
435  }
436  }
437 }
438 
439 #include "deviceLcsIf.ipp"
440 
441 #endif // FCF_DEVMGR_COMMON_DEVICE_LCS_IF_H
fcf::devmgr::common::DeviceControllerData::DeviceControllerData
DeviceControllerData()
Definition: deviceLcsIf.cpp:32
fcf::devmgr::common::DeviceControllerData::GetState
int GetState() const
fcf::devmgr::common::DeviceLcsIf::STAT_HW_STATUS
@ STAT_HW_STATUS
Definition: deviceLcsIf.hpp:88
fcf::devmgr::common::DeviceLcsIf::GetStates
void GetStates(int &state, int &substate)
Get states (state and substate) of the controller.
Definition: deviceLcsIf.cpp:537
fcf::devmgr::common::DeviceLcsIf::GetHwError
virtual std::string GetHwError(int &error_code, const bool update=false)
Get error message.
Definition: deviceLcsIf.cpp:641
fcf::devmgr::common::DeviceLcsIf::ExecuteRpc
void ExecuteRpc(const std::string &obj, const std::string &proc, fcf::common::VectorVariant &attr_list)
Definition: deviceLcsIf.cpp:114
fcf::devmgr::common::DeviceLcsIf::m_ua_status_map
std::unordered_map< std::string, short > m_ua_status_map
Definition: deviceLcsIf.hpp:425
fcf::devmgr::common::DeviceLcsIf::LoadConfig
void LoadConfig()
Load the YAML configuration.
Definition: deviceLcsIf.cpp:95
fcf::devmgr::common::DeviceLcsIf::m_dispatcher
fcf::common::Dispatcher< fcf::common::VectorVariant & > m_dispatcher
Dispatcher for managing subscription events.
Definition: deviceLcsIf.hpp:370
fcf::devmgr::common::DeviceLcsIf::m_data_ctx
fcf::devmgr::common::DataContext & m_data_ctx
Definition: deviceLcsIf.hpp:412
fcf::devmgr::common::DeviceLcsIf::m_connected
bool m_connected
Flag indicating whether the LCS is connected.
Definition: deviceLcsIf.hpp:410
fcf::devmgr::common::DeviceLcsIf::m_config_loaded
bool m_config_loaded
Flag indicating whether the configuration was successfully loaded.
Definition: deviceLcsIf.hpp:405
fcf::devmgr::common::DeviceLcsIf::ReadConfig
virtual void ReadConfig(const std::vector< std::string > &stat_map_vector, const std::vector< std::string > &rpc_map_vector)
Read the configuration.
Definition: deviceLcsIf.cpp:156
fcf::devmgr::common::DeviceLcsIf::GetDeviceConfig
virtual std::shared_ptr< IDeviceConfig > GetDeviceConfig()
Get a pointer of device configuration.
Definition: deviceLcsIf.cpp:610
fcf::devmgr::common::DeviceLcsIf::Enable
virtual void Enable()
Executes the Enable RPC.
Definition: deviceLcsIf.cpp:307
fcf::devmgr::common::DeviceLcsIf::IsNotReady
virtual bool IsNotReady()
Check if controller is in Standby/NotReady state.
Definition: deviceLcsIf.cpp:457
fcf::devmgr::common::DeviceLcsIf::m_pub_endpoint
std::string m_pub_endpoint
Definition: deviceLcsIf.hpp:418
fcf::devmgr::common::DeviceLcsIf::STAT_ERROR
@ STAT_ERROR
Definition: deviceLcsIf.hpp:87
fcf::devmgr::common::DeviceControllerData::m_substate
int m_substate
Definition: deviceLcsIf.hpp:52
fcf::devmgr::common::DeviceLcsIf::m_substate
int m_substate
Actual controller substate.
Definition: deviceLcsIf.hpp:390
fcf::devmgr::common::DeviceLcsIf::IsReady
virtual bool IsReady()
Check if controller is in Standby/Ready state.
Definition: deviceLcsIf.cpp:483
fcf::devmgr::common::DeviceLcsIf::m_ua_monitor_vector
std::vector< std::string > m_ua_monitor_vector
Definition: deviceLcsIf.hpp:429
fcf::devmgr::common::DeviceLcsIf::Init
virtual void Init()
Executes the Init RPC.
Definition: deviceLcsIf.cpp:254
fcf::devmgr::common::DeviceLcsIf::m_normal
fcf::common::Dispatcher m_normal
Dispatcher for managing recovery of communication failures.
Definition: deviceLcsIf.hpp:380
deviceConfig.hpp
DeviceConfig class header file.
fcf::devmgr::common::DeviceLcsIf::RegisterComm
virtual void RegisterComm(std::shared_ptr< fcf::common::IComm > comm_if, fcf::common::Dispatcher<> &failure, fcf::common::Dispatcher<> &normal)
Register a communication interface.
Definition: deviceLcsIf.cpp:83
fcf::devmgr::common::DeviceLcsIf::Reset
virtual void Reset()
Executes the Reset RPC.
Definition: deviceLcsIf.cpp:382
fcf::devmgr::common::DeviceLcsIf::GetDispatcher
fcf::common::Dispatcher< fcf::common::VectorVariant & > & GetDispatcher()
Definition: deviceLcsIf.cpp:601
fcf::devmgr::common::DeviceLcsIf::Stop
virtual void Stop()
Executes the Stop RPC.
Definition: deviceLcsIf.cpp:420
fcf::devmgr::common::DeviceLcsIf::Connect
virtual void Connect()
Connect to the controller or simulator.
Definition: deviceLcsIf.cpp:210
fcf::devmgr::common::DeviceLcsIf::STAT_LOCAL
@ STAT_LOCAL
Definition: deviceLcsIf.hpp:86
fcf::devmgr::common::DeviceLcsIf::GetMapValue
std::string GetMapValue(std::string category, std::string key)
Get mapping valLampConfigue.
Definition: deviceLcsIf.cpp:675
fcf::devmgr::common::DeviceLcsIf::ReadErrorCode
int ReadErrorCode()
Definition: deviceLcsIf.cpp:139
fcf::devmgr::common::DeviceLcsIf::IsHwFailure
virtual bool IsHwFailure()
Check if controller is in Hardware Failure.
Definition: deviceLcsIf.cpp:523
fcf::devmgr::common::DeviceLcsIf::StoreUaNames
void StoreUaNames(const std::vector< std::pair< std::string, unsigned int >> &ualist)
StoreUaNames.
Definition: deviceLcsIf.cpp:689
fcf::devmgr::common::DeviceControllerData::SetLocalFlag
void SetLocalFlag(bool local_flag)
fcf::devmgr::common::DeviceLcsIf::m_comm
std::shared_ptr< fcf::common::IComm > m_comm
Shared pointer to the communication object.
Definition: deviceLcsIf.hpp:360
fcf::devmgr::common::DeviceLcsIf::STAT_STATE
@ STAT_STATE
Definition: deviceLcsIf.hpp:89
fcf::devmgr::common::DeviceLcsIf::IsConnected
bool IsConnected() const
Check is the communication was established.
Definition: deviceLcsIf.cpp:605
fcf::devmgr::common::DeviceLcsIf::Listener
virtual void Listener(fcf::common::VectorVariant &params)=0
Callback for listening controller events.
fcf::devmgr::common::DeviceControllerData::SetState
void SetState(int state)
fcf::devmgr::common::DeviceControllerData::GetLocalFlag
bool GetLocalFlag() const
fcf::devmgr::common::DeviceControllerData::~DeviceControllerData
virtual ~DeviceControllerData()
Definition: deviceLcsIf.cpp:38
fcf::devmgr::common::DataContext
Definition: dataContext.hpp:92
fcf
Definition: actionMgr.cpp:29
fcf::devmgr::common::DeviceLcsIf::m_hw_errors
std::unordered_map< short, std::string > m_hw_errors
Definition: deviceLcsIf.hpp:431
fcf::devmgr::common::DeviceLcsIf::m_config
std::shared_ptr< IDeviceConfig > m_config
Shared pointer to the device config object.
Definition: deviceLcsIf.hpp:365
fcf::devmgr::common::DeviceControllerData::SetErrorCode
void SetErrorCode(int error_code)
fcf::devmgr::common::DeviceLcsIf
Definition: deviceLcsIf.hpp:75
fcf::devmgr::common::DeviceControllerData::SetSubstate
void SetSubstate(int subtate)
fcf::devmgr::common::DeviceLcsIf::IsOperational
virtual bool IsOperational()
Check if controller is in Operational.
Definition: deviceLcsIf.cpp:502
fcf::devmgr::common::DeviceLcsIf::m_lcs_prefix
std::string m_lcs_prefix
Store the prefix for storing keys in the database.
Definition: deviceLcsIf.hpp:415
fcf::devmgr::common::DeviceLcsIf::StopMonitoring
virtual void StopMonitoring()
Stop monitoring of controller attributes.
Definition: deviceLcsIf.cpp:631
fcf::devmgr::common::DeviceLcsIf::IsConfigLoaded
bool IsConfigLoaded() const
Check if configuration was loaded.
Definition: deviceLcsIf.cpp:597
fcf::devmgr::common::DeviceLcsIf::STAT_SUBSTATE
@ STAT_SUBSTATE
Definition: deviceLcsIf.hpp:90
fcf::devmgr::common::DeviceLcsIf::StoreAttribute
void StoreAttribute(const std::string key, const fcf::common::Variant &value, int attribute)
Store the updated into the DB.
Definition: deviceLcsIf.cpp:709
fcf::devmgr::common::DeviceControllerData::SetData
void SetData(const DeviceControllerData &data)
Definition: deviceLcsIf.cpp:41
fcf::devmgr::common::DeviceControllerData::m_state
int m_state
Definition: deviceLcsIf.hpp:51
fcf::devmgr::common::DeviceLcsIf::Disconnect
virtual void Disconnect()
Disconnect from the controller of simulator.
Definition: deviceLcsIf.cpp:237
fcf::devmgr::common::DeviceLcsIf::m_mal_properties
elt::mal::Mal::Properties m_mal_properties
Definition: deviceLcsIf.hpp:417
fcf::devmgr::common::DeviceLcsIf::m_state
int m_state
Actual controller state.
Definition: deviceLcsIf.hpp:385
fcf::devmgr::common::DeviceControllerData
The DeviceControllerData struct.
Definition: deviceLcsIf.hpp:34
fcf::devmgr::common::DeviceLcsIf::IsDisabling
virtual bool IsDisabling()
Check if controller is in Disabling state.
Definition: deviceLcsIf.cpp:517
fcf::devmgr::common::DeviceLcsIf::m_local
bool m_local
Actual local flag.
Definition: deviceLcsIf.hpp:395
fcf::devmgr::common::DeviceLcsIf::StartMonitoring
virtual void StartMonitoring()
Start monitoring of controller attributes.
Definition: deviceLcsIf.cpp:615
fcf::devmgr::common::DeviceLcsIf::m_config_node
YAML::Node m_config_node
YAML node for the device mapping file.
Definition: deviceLcsIf.hpp:355
fcf::devmgr::common::DeviceLcsIf::GetRpcError
virtual std::string GetRpcError(const short error_code) const =0
Get associated message from the RPC error code.
fcf::devmgr::common::DeviceControllerData::m_local
bool m_local
Definition: deviceLcsIf.hpp:53
fcf::devmgr::common::DeviceControllerData::m_error_code
int m_error_code
Definition: deviceLcsIf.hpp:54
fcf::devmgr::common::DeviceLcsIf::DeviceLcsIf
DeviceLcsIf(std::shared_ptr< IDeviceConfig > config, DataContext &data_ctx)
DeviceLcsIf constructor.
Definition: deviceLcsIf.cpp:47
fcf::devmgr::common::DeviceControllerData::GetStateStr
std::string GetStateStr() const
fcf::devmgr::common::DeviceControllerData::GetSubstate
int GetSubstate() const
fcf::devmgr::common::DeviceLcsIf::m_error_code
bool m_error_code
Actual error code.
Definition: deviceLcsIf.hpp:400
fcf::devmgr::common::DeviceLcsIf::Disable
virtual void Disable()
Executes the Disable RPC.
Definition: deviceLcsIf.cpp:344
fcf::devmgr::common::DeviceControllerData::GetErrorCode
int GetErrorCode() const
fcf::devmgr::common::DeviceLcsIf::m_failure
fcf::common::Dispatcher m_failure
Dispatcher for managing failures in the communication.
Definition: deviceLcsIf.hpp:375