ifw-fcf  5.0.0-pre2
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 <utils/bat/logger.hpp>
19 #include <ifw/core/protocol/base/iComm.hpp>
20 #include <ifw/core/protocol/base/dispatcher.hpp>
22 //#include <rad/mal/publisher.hpp>
23 
24 // New CII Config Service
25 #include <config-ng/ciiConfigApi.hpp>
26 
27 namespace fcf::devmgr::common {
28 
37  public:
39  virtual ~DeviceControllerData();
40  inline int GetState() const;
41  inline void SetState(int state);
42  inline int GetSubstate() const;
43  inline std::string GetStateStr() const;
44  inline void SetSubstate(int subtate);
45  inline bool GetLocalFlag() const;
46  inline void SetLocalFlag(bool local_flag);
47  inline int GetErrorCode() const;
48  inline void SetErrorCode(int error_code);
49 
50  void SetData(const DeviceControllerData& data);
51 
52  protected:
53  int m_state;
55  bool m_local;
57  };
58 
75  class DataContext;
76 
77  class DeviceLcsIf {
78  public:
84  explicit DeviceLcsIf(std::shared_ptr<IDeviceConfig> config,
85  DataContext& data_ctx);
86 
87  enum {
92  STAT_SUBSTATE = 5
93  };
94 
95 
104  virtual void InitObject();
105 
118  virtual void RegisterComm(std::shared_ptr<protocol::base::IComm> comm_if,
119  protocol::base::Dispatcher<>& failure,
120  protocol::base::Dispatcher<>& normal);
121 
130  virtual void Connect();
131 
139  virtual void Disconnect();
140 
145  virtual bool IsNotReady() const;
146 
151  virtual bool IsReady() const;
152 
161  virtual bool IsDisabling() const;
162 
167  virtual bool IsOperational() const;
168 
179  virtual bool IsHwFailure() const;
180 
186  virtual void Init();
187 
194  virtual void Enable();
195 
202  virtual void Disable();
203 
212  virtual void Stop();
213 
220  virtual void Reset();
221 
231  virtual void StartMonitoring();
232 
241  virtual void StopMonitoring();
242 
247  virtual void ReadStatus(DeviceControllerData& status);
248 
255  virtual void Listener(protocol::base::VectorVariant& params);
256 
262  virtual std::string GetRpcError(const short error_code) const = 0;
263 
273  virtual std::string GetHwError(int& error_code, const bool update = false);
274 
275 
290  std::string GetMapValue(const std::string& category, const std::string& key) const;
291 
292  protocol::base::Dispatcher<protocol::base::VectorVariant&>& GetDispatcher();
293 
298  bool IsConfigLoaded() const;
299 
304  bool IsConnected() const;
305 
311  virtual std::shared_ptr<IDeviceConfig> GetDeviceConfig() const;
312 
313  const elt::configng::CiiConfigInstanceNamespace& GetCfgInstance() const;
314 
315 
325  virtual void GetStates(int &state, int &substate);
326 
327  protected:
328 
333  void LoadConfig();
334 
335  void ExecuteRpc(const std::string& obj,
336  const std::string& proc,
337  protocol::base::VectorVariant& attr_list);
338  int ReadErrorCode();
339 
340 
341 
350  void StoreUaNames(const std::vector <std::pair<std::string, unsigned int>>& ualist);
351 
361  void StoreAttribute(const std::string key,
362  const protocol::base::Variant& value,
363  int attribute);
367  std::unique_ptr<elt::configng::CiiConfigDocument> m_config_doc;
368 
372  std::shared_ptr<protocol::base::IComm> m_comm;
373 
377  std::shared_ptr<IDeviceConfig> m_config;
378 
382  protocol::base::Dispatcher<protocol::base::VectorVariant&> m_dispatcher;
383 
387  protocol::base::Dispatcher<> m_failure;
388 
392  protocol::base::Dispatcher<> m_normal;
393 
397  int m_state {};
398 
402  int m_substate {};
403 
407  bool m_local {false};
408 
412  bool m_error_code {false};
413 
417  bool m_config_loaded {false};
418 
422  bool m_connected {false};
423 
425 
427  std::string m_lcs_prefix;
428 
429 
434  std::unordered_map<std::string, short> m_ua_status_map;
435 
438  std::vector<std::string> m_ua_monitor_vector;
439 
440  std::unordered_map<short, std::string> m_hw_errors;
441 
442  private:
443  log4cplus::Logger m_logger;
444 
445  };
446 
447 } //namespace
448 
449 #include "deviceLcsIf.ipp"
450 
451 #endif // FCF_DEVMGR_COMMON_DEVICE_LCS_IF_H
Definition: dataContext.hpp:90
Definition: deviceLcsIf.hpp:77
bool m_connected
Flag indicating whether the LCS is connected.
Definition: deviceLcsIf.hpp:422
bool m_local
Actual local flag.
Definition: deviceLcsIf.hpp:407
int m_state
Actual controller state.
Definition: deviceLcsIf.hpp:397
virtual void Enable()
Executes the Enable RPC.
Definition: deviceLcsIf.cpp:313
virtual bool IsHwFailure() const
Check if controller is in Hardware Failure.
Definition: deviceLcsIf.cpp:513
std::string GetMapValue(const std::string &category, const std::string &key) const
Get mapping value.
Definition: deviceLcsIf.cpp:680
virtual void GetStates(int &state, int &substate)
Get states (state and substate) of the controller.
Definition: deviceLcsIf.cpp:524
virtual void InitObject()
Initialize object.
Definition: deviceLcsIf.cpp:61
fcf::devmgr::common::DataContext & m_data_ctx
Definition: deviceLcsIf.hpp:424
virtual std::shared_ptr< IDeviceConfig > GetDeviceConfig() const
Get a pointer of device configuration.
Definition: deviceLcsIf.cpp:599
virtual bool IsDisabling() const
Check if controller is in Disabling state.
Definition: deviceLcsIf.cpp:507
virtual bool IsNotReady() const
Check if controller is in Standby/NotReady state.
Definition: deviceLcsIf.cpp:463
std::string m_lcs_prefix
Store the prefix for storing keys in the database.
Definition: deviceLcsIf.hpp:427
@ STAT_STATE
Definition: deviceLcsIf.hpp:91
@ STAT_ERROR
Definition: deviceLcsIf.hpp:89
@ STAT_SUBSTATE
Definition: deviceLcsIf.hpp:92
@ STAT_HW_STATUS
Definition: deviceLcsIf.hpp:90
@ STAT_LOCAL
Definition: deviceLcsIf.hpp:88
protocol::base::Dispatcher m_normal
Dispatcher for managing recovery of communication failures.
Definition: deviceLcsIf.hpp:392
std::unique_ptr< elt::configng::CiiConfigDocument > m_config_doc
Config document for mapping file.
Definition: deviceLcsIf.hpp:367
virtual void Disconnect()
Disconnect from the controller of simulator.
Definition: deviceLcsIf.cpp:232
virtual void RegisterComm(std::shared_ptr< protocol::base::IComm > comm_if, protocol::base::Dispatcher<> &failure, protocol::base::Dispatcher<> &normal)
Register a communication interface.
Definition: deviceLcsIf.cpp:95
virtual void ReadStatus(DeviceControllerData &status)
ReadStatus.
Definition: deviceLcsIf.cpp:636
protocol::base::Dispatcher< protocol::base::VectorVariant & > m_dispatcher
Dispatcher for managing subscription events.
Definition: deviceLcsIf.hpp:382
virtual bool IsOperational() const
Check if controller is in Operational.
Definition: deviceLcsIf.cpp:496
virtual void Disable()
Executes the Disable RPC.
Definition: deviceLcsIf.cpp:350
bool IsConnected() const
Check is the communication was established.
Definition: deviceLcsIf.cpp:594
int ReadErrorCode()
Definition: deviceLcsIf.cpp:183
virtual void Reset()
Executes the Reset RPC.
Definition: deviceLcsIf.cpp:388
bool IsConfigLoaded() const
Check if configuration was loaded.
Definition: deviceLcsIf.cpp:586
DeviceLcsIf(std::shared_ptr< IDeviceConfig > config, DataContext &data_ctx)
DeviceLcsIf constructor.
Definition: deviceLcsIf.cpp:51
void StoreUaNames(const std::vector< std::pair< std::string, unsigned int >> &ualist)
StoreUaNames.
Definition: deviceLcsIf.cpp:697
virtual std::string GetHwError(int &error_code, const bool update=false)
Get error message.
Definition: deviceLcsIf.cpp:646
std::unordered_map< std::string, short > m_ua_status_map
Definition: deviceLcsIf.hpp:434
bool m_config_loaded
Flag indicating whether the configuration was successfully loaded.
Definition: deviceLcsIf.hpp:417
std::vector< std::string > m_ua_monitor_vector
Definition: deviceLcsIf.hpp:438
void LoadConfig()
Load the YAML configuration.
Definition: deviceLcsIf.cpp:109
protocol::base::Dispatcher m_failure
Dispatcher for managing failures in the communication.
Definition: deviceLcsIf.hpp:387
virtual void Listener(protocol::base::VectorVariant &params)
Callback for listening controller events.
Definition: deviceLcsIf.cpp:781
virtual void Connect()
Connect to the controller or simulator.
Definition: deviceLcsIf.cpp:200
virtual void StartMonitoring()
Start monitoring of controller attributes.
Definition: deviceLcsIf.cpp:603
void ExecuteRpc(const std::string &obj, const std::string &proc, protocol::base::VectorVariant &attr_list)
Definition: deviceLcsIf.cpp:158
std::shared_ptr< protocol::base::IComm > m_comm
Shared pointer to the communication object.
Definition: deviceLcsIf.hpp:372
virtual std::string GetRpcError(const short error_code) const =0
Get associated message from the RPC error code.
std::unordered_map< short, std::string > m_hw_errors
Definition: deviceLcsIf.hpp:440
protocol::base::Dispatcher< protocol::base::VectorVariant & > & GetDispatcher()
Definition: deviceLcsIf.cpp:590
virtual void StopMonitoring()
Stop monitoring of controller attributes.
Definition: deviceLcsIf.cpp:624
std::shared_ptr< IDeviceConfig > m_config
Shared pointer to the device config object.
Definition: deviceLcsIf.hpp:377
virtual void Stop()
Executes the Stop RPC.
Definition: deviceLcsIf.cpp:426
const elt::configng::CiiConfigInstanceNamespace & GetCfgInstance() const
Definition: deviceLcsIf.cpp:722
virtual void Init()
Executes the Init RPC.
Definition: deviceLcsIf.cpp:249
virtual bool IsReady() const
Check if controller is in Standby/Ready state.
Definition: deviceLcsIf.cpp:480
void StoreAttribute(const std::string key, const protocol::base::Variant &value, int attribute)
Store the updated into the DB.
Definition: deviceLcsIf.cpp:726
bool m_error_code
Actual error code.
Definition: deviceLcsIf.hpp:412
int m_substate
Actual controller substate.
Definition: deviceLcsIf.hpp:402
DeviceConfig class header file.
Definition: actionMgr.cpp:29
The DeviceControllerData struct.
Definition: deviceLcsIf.hpp:36
int m_error_code
Definition: deviceLcsIf.hpp:56
int m_substate
Definition: deviceLcsIf.hpp:54
DeviceControllerData()
Definition: deviceLcsIf.cpp:34
void SetData(const DeviceControllerData &data)
Definition: deviceLcsIf.cpp:44
int m_state
Definition: deviceLcsIf.hpp:53
bool m_local
Definition: deviceLcsIf.hpp:55
virtual ~DeviceControllerData()
Definition: deviceLcsIf.cpp:41