ifw-fcf  4.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 <utils/bat/logger.hpp>
19 #include <fcf/common/iComm.hpp>
20 #include <fcf/common/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 
108  virtual void RegisterComm(std::shared_ptr<fcf::common::IComm> comm_if,
109  fcf::common::Dispatcher<>& failure,
110  fcf::common::Dispatcher<>& normal);
111 
120  virtual void Connect();
121 
129  virtual void Disconnect();
130 
135  virtual bool IsNotReady() const;
136 
141  virtual bool IsReady() const;
142 
151  virtual bool IsDisabling() const;
152 
157  virtual bool IsOperational() const;
158 
169  virtual bool IsHwFailure() const;
170 
176  virtual void Init();
177 
184  virtual void Enable();
185 
192  virtual void Disable();
193 
202  virtual void Stop();
203 
210  virtual void Reset();
211 
221  virtual void StartMonitoring();
222 
231  virtual void StopMonitoring();
232 
237  virtual void ReadStatus(DeviceControllerData& status);
238 
245  virtual void Listener(fcf::common::VectorVariant& params);
246 
252  virtual std::string GetRpcError(const short error_code) const = 0;
253 
263  virtual std::string GetHwError(int& error_code, const bool update = false);
264 
265 
280  std::string GetMapValue(const std::string& category, const std::string& key) const;
281 
282  fcf::common::Dispatcher<fcf::common::VectorVariant&>& GetDispatcher();
283 
288  bool IsConfigLoaded() const;
289 
294  bool IsConnected() const;
295 
301  virtual std::shared_ptr<IDeviceConfig> GetDeviceConfig() const;
302 
303  const elt::configng::CiiConfigInstanceNamespace& GetCfgInstance() const;
304 
305 
315  void GetStates(int &state, int &substate);
316 
317  protected:
318 
323  void LoadConfig();
324 
325  void ExecuteRpc(const std::string& obj,
326  const std::string& proc,
327  fcf::common::VectorVariant& attr_list);
328  int ReadErrorCode();
329 
330 
331 
340  void StoreUaNames(const std::vector <std::pair<std::string, unsigned int>>& ualist);
341 
351  void StoreAttribute(const std::string key,
352  const fcf::common::Variant& value,
353  int attribute);
357  std::unique_ptr<elt::configng::CiiConfigDocument> m_config_doc;
358 
362  std::shared_ptr<fcf::common::IComm> m_comm;
363 
367  std::shared_ptr<IDeviceConfig> m_config;
368 
372  fcf::common::Dispatcher<fcf::common::VectorVariant&> m_dispatcher;
373 
377  fcf::common::Dispatcher<> m_failure;
378 
382  fcf::common::Dispatcher<> m_normal;
383 
387  int m_state {};
388 
392  int m_substate {};
393 
397  bool m_local {false};
398 
402  bool m_error_code {false};
403 
407  bool m_config_loaded {false};
408 
412  bool m_connected {false};
413 
415 
417  std::string m_lcs_prefix;
418 
419 
424  std::unordered_map<std::string, short> m_ua_status_map;
425 
428  std::vector<std::string> m_ua_monitor_vector;
429 
430  std::unordered_map<short, std::string> m_hw_errors;
431 
432  private:
433  log4cplus::Logger m_logger;
434 
435  };
436 
437 } //namespace
438 
439 #include "deviceLcsIf.ipp"
440 
441 #endif // FCF_DEVMGR_COMMON_DEVICE_LCS_IF_H
fcf::devmgr::common::DeviceControllerData::DeviceControllerData
DeviceControllerData()
Definition: deviceLcsIf.cpp:34
fcf::devmgr::common::DeviceControllerData::GetState
int GetState() const
fcf::devmgr::common::DeviceLcsIf::STAT_HW_STATUS
@ STAT_HW_STATUS
Definition: deviceLcsIf.hpp:90
fcf::devmgr::common::DeviceLcsIf::IsHwFailure
virtual bool IsHwFailure() const
Check if controller is in Hardware Failure.
Definition: deviceLcsIf.cpp:509
fcf::devmgr::common::DeviceLcsIf::GetStates
void GetStates(int &state, int &substate)
Get states (state and substate) of the controller.
Definition: deviceLcsIf.cpp:520
fcf::devmgr::common::DeviceLcsIf::GetHwError
virtual std::string GetHwError(int &error_code, const bool update=false)
Get error message.
Definition: deviceLcsIf.cpp:636
fcf::devmgr::common::DeviceLcsIf::ExecuteRpc
void ExecuteRpc(const std::string &obj, const std::string &proc, fcf::common::VectorVariant &attr_list)
Definition: deviceLcsIf.cpp:154
fcf::devmgr::common::DeviceLcsIf::m_ua_status_map
std::unordered_map< std::string, short > m_ua_status_map
Definition: deviceLcsIf.hpp:424
fcf::devmgr::common::DeviceLcsIf::LoadConfig
void LoadConfig()
Load the YAML configuration.
Definition: deviceLcsIf.cpp:105
fcf::devmgr::common::DeviceLcsIf::m_dispatcher
fcf::common::Dispatcher< fcf::common::VectorVariant & > m_dispatcher
Dispatcher for managing subscription events.
Definition: deviceLcsIf.hpp:372
fcf::devmgr::common::DeviceLcsIf::m_data_ctx
fcf::devmgr::common::DataContext & m_data_ctx
Definition: deviceLcsIf.hpp:414
fcf::devmgr::common::DeviceLcsIf::m_connected
bool m_connected
Flag indicating whether the LCS is connected.
Definition: deviceLcsIf.hpp:412
fcf::devmgr::common::DeviceLcsIf::m_config_loaded
bool m_config_loaded
Flag indicating whether the configuration was successfully loaded.
Definition: deviceLcsIf.hpp:407
fcf::devmgr::common::DeviceLcsIf::Enable
virtual void Enable()
Executes the Enable RPC.
Definition: deviceLcsIf.cpp:309
fcf::devmgr::common::DeviceLcsIf::STAT_ERROR
@ STAT_ERROR
Definition: deviceLcsIf.hpp:89
fcf::devmgr::common::DeviceControllerData::m_substate
int m_substate
Definition: deviceLcsIf.hpp:54
fcf::devmgr::common::DeviceLcsIf::m_substate
int m_substate
Actual controller substate.
Definition: deviceLcsIf.hpp:392
fcf::devmgr::common::DeviceLcsIf::m_ua_monitor_vector
std::vector< std::string > m_ua_monitor_vector
Definition: deviceLcsIf.hpp:428
fcf::devmgr::common::DeviceLcsIf::Init
virtual void Init()
Executes the Init RPC.
Definition: deviceLcsIf.cpp:245
fcf::devmgr::common::DeviceLcsIf::GetMapValue
std::string GetMapValue(const std::string &category, const std::string &key) const
Get mapping value.
Definition: deviceLcsIf.cpp:670
fcf::devmgr::common::DeviceLcsIf::m_normal
fcf::common::Dispatcher m_normal
Dispatcher for managing recovery of communication failures.
Definition: deviceLcsIf.hpp:382
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:91
fcf::devmgr::common::DeviceLcsIf::Reset
virtual void Reset()
Executes the Reset RPC.
Definition: deviceLcsIf.cpp:384
fcf::devmgr::common::DeviceLcsIf::GetDispatcher
fcf::common::Dispatcher< fcf::common::VectorVariant & > & GetDispatcher()
Definition: deviceLcsIf.cpp:586
fcf::devmgr::common
Definition: actionMgr.cpp:29
fcf::devmgr::common::DeviceLcsIf::Stop
virtual void Stop()
Executes the Stop RPC.
Definition: deviceLcsIf.cpp:422
fcf::devmgr::common::DeviceLcsIf::Connect
virtual void Connect()
Connect to the controller or simulator.
Definition: deviceLcsIf.cpp:196
fcf::devmgr::common::DeviceLcsIf::STAT_LOCAL
@ STAT_LOCAL
Definition: deviceLcsIf.hpp:88
fcf::devmgr::common::DeviceLcsIf::ReadErrorCode
int ReadErrorCode()
Definition: deviceLcsIf.cpp:179
fcf::devmgr::common::DeviceLcsIf::StoreUaNames
void StoreUaNames(const std::vector< std::pair< std::string, unsigned int >> &ualist)
StoreUaNames.
Definition: deviceLcsIf.cpp:687
fcf::devmgr::common::DeviceLcsIf::GetCfgInstance
const elt::configng::CiiConfigInstanceNamespace & GetCfgInstance() const
Definition: deviceLcsIf.cpp:708
fcf::devmgr::common::DeviceControllerData::SetLocalFlag
void SetLocalFlag(bool local_flag)
fcf::devmgr::common::DeviceLcsIf::IsReady
virtual bool IsReady() const
Check if controller is in Standby/Ready state.
Definition: deviceLcsIf.cpp:476
fcf::devmgr::common::DeviceLcsIf::m_comm
std::shared_ptr< fcf::common::IComm > m_comm
Shared pointer to the communication object.
Definition: deviceLcsIf.hpp:362
fcf::devmgr::common::DeviceLcsIf::STAT_STATE
@ STAT_STATE
Definition: deviceLcsIf.hpp:91
fcf::devmgr::common::DeviceLcsIf::IsConnected
bool IsConnected() const
Check is the communication was established.
Definition: deviceLcsIf.cpp:590
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:41
fcf::devmgr::common::DataContext
Definition: dataContext.hpp:90
fcf::devmgr::common::DeviceLcsIf::m_hw_errors
std::unordered_map< short, std::string > m_hw_errors
Definition: deviceLcsIf.hpp:430
fcf::devmgr::common::DeviceLcsIf::m_config
std::shared_ptr< IDeviceConfig > m_config
Shared pointer to the device config object.
Definition: deviceLcsIf.hpp:367
fcf::devmgr::common::DeviceControllerData::SetErrorCode
void SetErrorCode(int error_code)
fcf::devmgr::common::DeviceLcsIf
Definition: deviceLcsIf.hpp:77
fcf::devmgr::common::DeviceLcsIf::ReadStatus
virtual void ReadStatus(DeviceControllerData &status)
ReadStatus.
Definition: deviceLcsIf.cpp:626
fcf::devmgr::common::DeviceControllerData::SetSubstate
void SetSubstate(int subtate)
fcf::devmgr::common::DeviceLcsIf::m_lcs_prefix
std::string m_lcs_prefix
Store the prefix for storing keys in the database.
Definition: deviceLcsIf.hpp:417
fcf::devmgr::common::DeviceLcsIf::StopMonitoring
virtual void StopMonitoring()
Stop monitoring of controller attributes.
Definition: deviceLcsIf.cpp:616
fcf::devmgr::common::DeviceLcsIf::IsConfigLoaded
bool IsConfigLoaded() const
Check if configuration was loaded.
Definition: deviceLcsIf.cpp:582
fcf::devmgr::common::DeviceLcsIf::STAT_SUBSTATE
@ STAT_SUBSTATE
Definition: deviceLcsIf.hpp:92
fcf::devmgr::common::DeviceLcsIf::m_config_doc
std::unique_ptr< elt::configng::CiiConfigDocument > m_config_doc
Config document for mapping file.
Definition: deviceLcsIf.hpp:357
fcf::devmgr::common::DeviceLcsIf::IsNotReady
virtual bool IsNotReady() const
Check if controller is in Standby/NotReady state.
Definition: deviceLcsIf.cpp:459
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:712
fcf::devmgr::common::DeviceControllerData::SetData
void SetData(const DeviceControllerData &data)
Definition: deviceLcsIf.cpp:44
fcf::devmgr::common::DeviceControllerData::m_state
int m_state
Definition: deviceLcsIf.hpp:53
fcf::devmgr::common::DeviceLcsIf::Disconnect
virtual void Disconnect()
Disconnect from the controller of simulator.
Definition: deviceLcsIf.cpp:228
fcf::devmgr::common::DeviceLcsIf::IsDisabling
virtual bool IsDisabling() const
Check if controller is in Disabling state.
Definition: deviceLcsIf.cpp:503
fcf::devmgr::common::DeviceLcsIf::Listener
virtual void Listener(fcf::common::VectorVariant &params)
Callback for listening controller events.
Definition: deviceLcsIf.cpp:767
fcf::devmgr::common::DeviceLcsIf::m_state
int m_state
Actual controller state.
Definition: deviceLcsIf.hpp:387
fcf::devmgr::common::DeviceLcsIf::GetDeviceConfig
virtual std::shared_ptr< IDeviceConfig > GetDeviceConfig() const
Get a pointer of device configuration.
Definition: deviceLcsIf.cpp:595
fcf::devmgr::common::DeviceControllerData
The DeviceControllerData struct.
Definition: deviceLcsIf.hpp:36
fcf::devmgr::common::DeviceLcsIf::IsOperational
virtual bool IsOperational() const
Check if controller is in Operational.
Definition: deviceLcsIf.cpp:492
fcf::devmgr::common::DeviceLcsIf::m_local
bool m_local
Actual local flag.
Definition: deviceLcsIf.hpp:397
fcf::devmgr::common::DeviceLcsIf::StartMonitoring
virtual void StartMonitoring()
Start monitoring of controller attributes.
Definition: deviceLcsIf.cpp:599
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:55
fcf::devmgr::common::DeviceControllerData::m_error_code
int m_error_code
Definition: deviceLcsIf.hpp:56
fcf::devmgr::common::DeviceLcsIf::DeviceLcsIf
DeviceLcsIf(std::shared_ptr< IDeviceConfig > config, DataContext &data_ctx)
DeviceLcsIf constructor.
Definition: deviceLcsIf.cpp:51
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:402
fcf::devmgr::common::DeviceLcsIf::Disable
virtual void Disable()
Executes the Disable RPC.
Definition: deviceLcsIf.cpp:346
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:377