ifw-fcf  2.0.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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 // Local headers
15 #include <fcf/common/iComm.hpp>
16 #include <fcf/common/dispatcher.hpp>
18 #include <rad/mal/publisher.hpp>
19 
20 namespace fcf {
21  namespace devmgr {
22  namespace common {
23 
32  public:
34  virtual ~DeviceControllerData();
35  inline int GetState() const;
36  inline void SetState(int state);
37  inline int GetSubstate() const;
38  inline std::string GetStateStr() const;
39  inline void SetSubstate(int subtate);
40  inline bool GetLocalFlag() const;
41  inline void SetLocalFlag(bool local_flag);
42  inline int GetErrorCode() const;
43  inline void SetErrorCode(int error_code);
44 
45  void SetData(const DeviceControllerData& data);
46 
47  protected:
48  int m_state;
50  bool m_local;
52  };
53 
70  class DataContext;
71 
72  class DeviceLcsIf {
73  public:
79  explicit DeviceLcsIf(std::shared_ptr<IDeviceConfig> config,
80  DataContext& data_ctx);
81 
82  enum {
88  };
89 
90 
103  virtual void RegisterComm(std::shared_ptr<fcf::common::IComm> comm_if,
104  fcf::common::Dispatcher<>& failure,
105  fcf::common::Dispatcher<>& normal);
106 
115  virtual void Connect();
116 
124  virtual void Disconnect();
125 
136  virtual void ReadConfig(const std::vector<std::string>& stat_map_vector,
137  const std::vector<std::string>& rpc_map_vector);
138 
139 
144  virtual bool IsNotReady();
145 
150  virtual bool IsReady();
151 
160  virtual bool IsDisabling();
161 
166  virtual bool IsOperational();
167 
178  virtual bool IsHwFailure();
179 
185  virtual void Init();
186 
193  virtual void Enable();
194 
201  virtual void Disable();
202 
211  virtual void Stop();
212 
219  virtual void Reset();
220 
230  virtual void StartMonitoring();
231 
240  virtual void StopMonitoring();
241 
248  virtual void Listener(fcf::common::VectorVariant& params) = 0;
249 
255  virtual std::string GetRpcError(const short error_code) const = 0;
256 
266  virtual std::string GetHwError(int& error_code, const bool update = false);
267 
268 
283  std::string GetMapValue(std::string category, std::string key);
284 
285  fcf::common::Dispatcher<fcf::common::VectorVariant&>& GetDispatcher();
286 
291  bool IsConfigLoaded() const;
292 
297  bool IsConnected() const;
298 
304  virtual std::shared_ptr<IDeviceConfig> GetDeviceConfig();
305 
306 
307  protected:
308 
313  void LoadConfig();
314 
315  void ExecuteRpc(const std::string& obj,
316  const std::string& proc,
317  fcf::common::VectorVariant& attr_list);
318  int ReadErrorCode();
319 
329  void GetStates(int &state, int &substate);
330 
335  void StoreUaNames(const std::vector <std::pair<std::string, unsigned int>>& ualist);
336 
346  void StoreAttribute(const std::string key,
347  const fcf::common::Variant& value,
348  int attribute);
352  YAML::Node m_config_node;
353 
357  std::shared_ptr<fcf::common::IComm> m_comm;
358 
362  std::shared_ptr<IDeviceConfig> m_config;
363 
367  fcf::common::Dispatcher<fcf::common::VectorVariant&> m_dispatcher;
368 
372  fcf::common::Dispatcher<> m_failure;
373 
377  fcf::common::Dispatcher<> m_normal;
378 
382  short m_state;
383 
387  short m_substate;
388 
393 
398 
400 
402  std::string m_lcs_prefix;
403 
404  elt::mal::Mal::Properties m_mal_properties;
405  std::string m_pub_endpoint;
406 
407 
412  std::unordered_map<std::string, short> m_ua_status_map;
413 
416  std::vector<std::string> m_ua_monitor_vector;
417 
418  std::unordered_map<short, std::string> m_hw_errors;
419 
420 
421  };
422  }
423  }
424 }
425 
426 #include "deviceLcsIf.ipp"
427 
428 #endif // FCF_DEVMGR_COMMON_DEVICE_LCS_IF_H
short m_substate
Actual controller substate.
Definition: deviceLcsIf.hpp:387
std::string m_lcs_prefix
Store the prefix for storing keys in the database.
Definition: deviceLcsIf.hpp:402
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
virtual void Stop()
Executes the Stop RPC.
Definition: deviceLcsIf.cpp:420
Definition: deviceLcsIf.hpp:84
virtual bool IsReady()
Check if controller is in Standby/Ready state.
Definition: deviceLcsIf.cpp:483
std::vector< std::string > m_ua_monitor_vector
Definition: deviceLcsIf.hpp:416
virtual void Init()
Executes the Init RPC.
Definition: deviceLcsIf.cpp:254
devmgr::common::DataContext & m_data_ctx
Definition: deviceLcsIf.hpp:399
Definition: deviceLcsIf.hpp:83
DeviceControllerData()
Definition: deviceLcsIf.cpp:32
void StoreUaNames(const std::vector< std::pair< std::string, unsigned int >> &ualist)
StoreUaNames.
Definition: deviceLcsIf.cpp:689
fcf::common::Dispatcher m_failure
Dispatcher for managing failures in the communication.
Definition: deviceLcsIf.hpp:372
The DeviceControllerData struct.
Definition: deviceLcsIf.hpp:31
virtual bool IsDisabling()
Check if controller is in Disabling state.
Definition: deviceLcsIf.cpp:517
virtual std::string GetHwError(int &error_code, const bool update=false)
Get error message.
Definition: deviceLcsIf.cpp:641
virtual bool IsHwFailure()
Check if controller is in Hardware Failure.
Definition: deviceLcsIf.cpp:523
void SetData(const DeviceControllerData &data)
Definition: deviceLcsIf.cpp:41
int m_state
Definition: deviceLcsIf.hpp:48
YAML::Node m_config_node
YAML node for the device mapping file.
Definition: deviceLcsIf.hpp:352
virtual std::string GetRpcError(const short error_code) const =0
Get associated message from the RPC error code.
virtual void StopMonitoring()
Stop monitoring of controller attributes.
Definition: deviceLcsIf.cpp:631
int m_substate
Definition: deviceLcsIf.hpp:49
virtual std::shared_ptr< IDeviceConfig > GetDeviceConfig()
Get a pointer of device configuration.
Definition: deviceLcsIf.cpp:610
void StoreAttribute(const std::string key, const fcf::common::Variant &value, int attribute)
Store the updated into the DB.
Definition: deviceLcsIf.cpp:709
std::unordered_map< std::string, short > m_ua_status_map
Definition: deviceLcsIf.hpp:412
fcf::common::Dispatcher< fcf::common::VectorVariant & > m_dispatcher
Dispatcher for managing subscription events.
Definition: deviceLcsIf.hpp:367
virtual bool IsNotReady()
Check if controller is in Standby/NotReady state.
Definition: deviceLcsIf.cpp:457
fcf::common::Dispatcher< fcf::common::VectorVariant & > & GetDispatcher()
Definition: deviceLcsIf.cpp:601
fcf::common::Dispatcher m_normal
Dispatcher for managing recovery of communication failures.
Definition: deviceLcsIf.hpp:377
elt::mal::Mal::Properties m_mal_properties
Definition: deviceLcsIf.hpp:404
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
virtual void Reset()
Executes the Reset RPC.
Definition: deviceLcsIf.cpp:382
bool IsConfigLoaded() const
Check if configuration was loaded.
Definition: deviceLcsIf.cpp:597
virtual void Enable()
Executes the Enable RPC.
Definition: deviceLcsIf.cpp:307
virtual void Connect()
Connect to the controller or simulator.
Definition: deviceLcsIf.cpp:210
short m_state
Actual controller state.
Definition: deviceLcsIf.hpp:382
virtual ~DeviceControllerData()
Definition: deviceLcsIf.cpp:38
virtual void StartMonitoring()
Start monitoring of controller attributes.
Definition: deviceLcsIf.cpp:615
void GetStates(int &state, int &substate)
Get states (state and substate) of the controller.
Definition: deviceLcsIf.cpp:537
std::string GetMapValue(std::string category, std::string key)
Get mapping valLampConfigue.
Definition: deviceLcsIf.cpp:675
int ReadErrorCode()
Definition: deviceLcsIf.cpp:139
std::shared_ptr< fcf::common::IComm > m_comm
Shared pointer to the communication object.
Definition: deviceLcsIf.hpp:357
Definition: dataContext.hpp:81
Definition: deviceLcsIf.hpp:86
virtual void Disable()
Executes the Disable RPC.
Definition: deviceLcsIf.cpp:344
bool IsConnected() const
Check is the communication was established.
Definition: deviceLcsIf.cpp:605
virtual void Listener(fcf::common::VectorVariant &params)=0
Callback for listening controller events.
DeviceLcsIf(std::shared_ptr< IDeviceConfig > config, DataContext &data_ctx)
DeviceLcsIf constructor.
Definition: deviceLcsIf.cpp:47
void ExecuteRpc(const std::string &obj, const std::string &proc, fcf::common::VectorVariant &attr_list)
Definition: deviceLcsIf.cpp:114
bool m_local
Definition: deviceLcsIf.hpp:50
int m_error_code
Definition: deviceLcsIf.hpp:51
std::unordered_map< short, std::string > m_hw_errors
Definition: deviceLcsIf.hpp:418
void LoadConfig()
Load the YAML configuration.
Definition: deviceLcsIf.cpp:95
bool m_connected
Flag indicating whether the LCS is connected.
Definition: deviceLcsIf.hpp:397
virtual bool IsOperational()
Check if controller is in Operational.
Definition: deviceLcsIf.cpp:502
bool m_config_loaded
Flag indicating whether the configuration was successfully loaded.
Definition: deviceLcsIf.hpp:392
std::string m_pub_endpoint
Definition: deviceLcsIf.hpp:405
std::shared_ptr< IDeviceConfig > m_config
Shared pointer to the device config object.
Definition: deviceLcsIf.hpp:362
DeviceConfig class header file.
Definition: deviceLcsIf.hpp:72
virtual void Disconnect()
Disconnect from the controller of simulator.
Definition: deviceLcsIf.cpp:237