ifw-fcf 7.1.4
Loading...
Searching...
No Matches
deviceLcsIf.hpp
Go to the documentation of this file.
1
7#ifndef FCF_DEVMGR_COMMON_DEVICE_LCS_IF_H
8#define FCF_DEVMGR_COMMON_DEVICE_LCS_IF_H
9
10#include <yaml-cpp/yaml.h>
11#include <variant>
12
13#include <mal/Cii.hpp>
14#include <mal/utility/LoadMal.hpp>
15
16#include <ifw/core/utils/bat/logger.hpp>
17#include <ifw/core/protocol/base/iComm.hpp>
18#include <ifw/core/protocol/base/dispatcher.hpp>
20
21#include <config-ng/ciiConfigApi.hpp>
22
23
25
26// Variadic template function to create a vector of variants
27template<typename... Args>
28ifw::core::protocol::base::VectorVariant CreateVariantVector(Args&&... args) {
29
30 return {std::make_pair(std::string(),
31 ifw::core::protocol::base::Variant(std::forward<Args>(args)))... };
32
33}
34
43 public:
45 virtual ~DeviceControllerData();
46 inline int GetState() const;
47 inline void SetState(int state);
48 inline int GetSubstate() const;
49 inline std::string GetStateStr() const;
50 inline void SetSubstate(int subtate);
51 inline bool GetLocalFlag() const;
52 inline void SetLocalFlag(bool local_flag);
53 inline int GetErrorCode() const;
54 inline void SetErrorCode(int error_code);
55
56 void SetData(const DeviceControllerData& data);
57
58 private:
59 int m_state;
60 int m_substate;
61 bool m_local;
62 int m_error_code;
63 };
64
81 class DataContext;
82
83 // cppcheck-suppress unusedStructMember
85 public:
91 explicit DeviceLcsIf(std::shared_ptr<IDeviceConfig> config,
92 DataContext& data_ctx);
93
94 enum {
100 };
101
102
111 virtual void InitObject();
112
125 virtual void RegisterComm(std::shared_ptr<ifw::core::protocol::base::IComm> comm_if,
126 ifw::core::protocol::base::Dispatcher<>& failure,
127 ifw::core::protocol::base::Dispatcher<>& normal);
128
137 virtual void Connect();
138
146 virtual void Disconnect();
147
152 virtual bool IsNotReady() const;
153
158 virtual bool IsReady() const;
159
168 virtual bool IsDisabling() const;
169
174 virtual bool IsOperational() const;
175
186 virtual bool IsHwFailure() const;
187
193 virtual void Init();
194
201 virtual void Enable();
202
209 virtual void Disable();
210
219 virtual void Stop();
220
227 virtual void Reset();
228
238 virtual void StartMonitoring();
239
248 virtual void StopMonitoring();
249
254 virtual void ReadStatus(DeviceControllerData& status);
255
262 virtual void Listener(ifw::core::protocol::base::VectorVariant& params);
263
269 virtual std::string GetRpcError(const short error_code) const = 0;
270
280 virtual std::string GetHwError(int& error_code, const bool update = false);
281
282
297 std::string GetMapValue(const std::string& category, const std::string& key) const;
298
299 ifw::core::protocol::base::Dispatcher<ifw::core::protocol::base::VectorVariant&>& GetDispatcher();
300
305 bool IsConfigLoaded() const;
306
311 bool IsConnected() const;
312
318 virtual std::shared_ptr<IDeviceConfig> GetDeviceConfig() const;
319
320 const elt::configng::CiiConfigInstanceNamespace& GetCfgInstance() const;
321
322
332 virtual void GetStates(int &state, int &substate);
333
334 protected:
335
340 void LoadConfig();
341
342 void ExecuteRpc(const std::string& obj,
343 const std::string& proc,
344 ifw::core::protocol::base::VectorVariant& attr_list);
345 int ReadErrorCode();
346
347
348
357 void StoreUaNames(const std::vector <std::pair<std::string, unsigned int>>& ualist);
358
368 void StoreAttribute(const std::string& key,
369 const ifw::core::protocol::base::Variant& value,
370 int attribute);
371
372 inline void SetConfigLoad(bool flag);
373
374 protected:
375
376 // NOLINTBEGIN(misc-non-private-member-variables-in-classes)
380 std::shared_ptr<IDeviceConfig> m_config;
384 std::unique_ptr<elt::configng::CiiConfigDocument> m_config_doc;
385
386
387
389 std::string m_lcs_prefix;
390
394 std::shared_ptr<ifw::core::protocol::base::IComm> m_comm;
395
399 ifw::core::protocol::base::Dispatcher<ifw::core::protocol::base::VectorVariant&> m_dispatcher;
400
404 ifw::core::protocol::base::Dispatcher<> m_failure;
405
409 ifw::core::protocol::base::Dispatcher<> m_normal;
410
414 int m_state {};
415
420
424 bool m_local {false};
425
429 bool m_error_code {false};
430
434 bool m_config_loaded {false};
435
439 bool m_connected {false};
440
442
447 std::unordered_map<std::string, short> m_ua_status_map;
448
451 std::vector<std::string> m_ua_monitor_vector;
452
453 std::unordered_map<short, std::string> m_hw_errors;
454 // NOLINTEND(misc-non-private-member-variables-in-classes)
455
456 private:
457 log4cplus::Logger m_logger;
458
459 };
460
461} //namespace
462
463#include "deviceLcsIf.ipp"
464
465#endif // FCF_DEVMGR_COMMON_DEVICE_LCS_IF_H
Definition dataContext.hpp:86
Definition deviceLcsIf.hpp:84
virtual void InitObject()
Initialize object.
Definition deviceLcsIf.cpp:59
virtual void Disable()
Executes the Disable RPC.
Definition deviceLcsIf.cpp:347
ifw::core::protocol::base::Dispatcher m_normal
Dispatcher for managing recovery of communication failures.
Definition deviceLcsIf.hpp:409
virtual void Enable()
Executes the Enable RPC.
Definition deviceLcsIf.cpp:310
virtual bool IsReady() const
Check if controller is in Standby/Ready state.
Definition deviceLcsIf.cpp:477
ifw::core::protocol::base::Dispatcher m_failure
Dispatcher for managing failures in the communication.
Definition deviceLcsIf.hpp:404
const elt::configng::CiiConfigInstanceNamespace & GetCfgInstance() const
Definition deviceLcsIf.cpp:711
virtual void Reset()
Executes the Reset RPC.
Definition deviceLcsIf.cpp:385
void ExecuteRpc(const std::string &obj, const std::string &proc, ifw::core::protocol::base::VectorVariant &attr_list)
Definition deviceLcsIf.cpp:155
virtual void RegisterComm(std::shared_ptr< ifw::core::protocol::base::IComm > comm_if, ifw::core::protocol::base::Dispatcher<> &failure, ifw::core::protocol::base::Dispatcher<> &normal)
Register a communication interface.
Definition deviceLcsIf.cpp:94
virtual bool IsDisabling() const
Check if controller is in Disabling state.
Definition deviceLcsIf.cpp:504
int m_state
Actual controller state.
Definition deviceLcsIf.hpp:414
virtual bool IsNotReady() const
Check if controller is in Standby/NotReady state.
Definition deviceLcsIf.cpp:460
bool m_connected
Flag indicating whether the LCS is connected.
Definition deviceLcsIf.hpp:439
std::shared_ptr< IDeviceConfig > m_config
Shared pointer to the device config object.
Definition deviceLcsIf.hpp:380
int m_substate
Actual controller substate.
Definition deviceLcsIf.hpp:419
virtual void Stop()
Executes the Stop RPC.
Definition deviceLcsIf.cpp:423
virtual void StartMonitoring()
Start monitoring of controller attributes.
Definition deviceLcsIf.cpp:600
bool IsConfigLoaded() const
Check if configuration was loaded.
Definition deviceLcsIf.cpp:583
std::string m_lcs_prefix
Store the prefix for storing keys in the database.
Definition deviceLcsIf.hpp:389
int ReadErrorCode()
Definition deviceLcsIf.cpp:180
DeviceLcsIf(std::shared_ptr< IDeviceConfig > config, DataContext &data_ctx)
DeviceLcsIf constructor.
Definition deviceLcsIf.cpp:49
std::unordered_map< short, std::string > m_hw_errors
Definition deviceLcsIf.hpp:453
ifw::core::protocol::base::Dispatcher< ifw::core::protocol::base::VectorVariant & > m_dispatcher
Dispatcher for managing subscription events.
Definition deviceLcsIf.hpp:399
virtual void GetStates(int &state, int &substate)
Get states (state and substate) of the controller.
Definition deviceLcsIf.cpp:521
std::vector< std::string > m_ua_monitor_vector
Definition deviceLcsIf.hpp:451
std::shared_ptr< ifw::core::protocol::base::IComm > m_comm
Shared pointer to the communication object.
Definition deviceLcsIf.hpp:394
bool IsConnected() const
Check is the communication was established.
Definition deviceLcsIf.cpp:591
void LoadConfig()
Load the YAML configuration.
Definition deviceLcsIf.cpp:108
virtual void Init()
Executes the Init RPC.
Definition deviceLcsIf.cpp:246
virtual void Connect()
Connect to the controller or simulator.
Definition deviceLcsIf.cpp:197
bool m_error_code
Actual error code.
Definition deviceLcsIf.hpp:429
virtual void Disconnect()
Disconnect from the controller of simulator.
Definition deviceLcsIf.cpp:229
virtual std::string GetRpcError(const short error_code) const =0
Get associated message from the RPC error code.
virtual bool IsOperational() const
Check if controller is in Operational.
Definition deviceLcsIf.cpp:493
bool m_config_loaded
Flag indicating whether the configuration was successfully loaded.
Definition deviceLcsIf.hpp:434
std::unordered_map< std::string, short > m_ua_status_map
Definition deviceLcsIf.hpp:447
virtual void ReadStatus(DeviceControllerData &status)
ReadStatus.
Definition deviceLcsIf.cpp:633
virtual std::shared_ptr< IDeviceConfig > GetDeviceConfig() const
Get a pointer of device configuration.
Definition deviceLcsIf.cpp:596
virtual void Listener(ifw::core::protocol::base::VectorVariant &params)
Callback for listening controller events.
Definition deviceLcsIf.cpp:770
void StoreAttribute(const std::string &key, const ifw::core::protocol::base::Variant &value, int attribute)
Store the updated into the DB.
Definition deviceLcsIf.cpp:715
ifw::core::protocol::base::Dispatcher< ifw::core::protocol::base::VectorVariant & > & GetDispatcher()
Definition deviceLcsIf.cpp:587
void StoreUaNames(const std::vector< std::pair< std::string, unsigned int > > &ualist)
StoreUaNames.
Definition deviceLcsIf.cpp:694
@ STAT_LOCAL
Definition deviceLcsIf.hpp:95
@ STAT_HW_STATUS
Definition deviceLcsIf.hpp:97
@ STAT_SUBSTATE
Definition deviceLcsIf.hpp:99
@ STAT_ERROR
Definition deviceLcsIf.hpp:96
@ STAT_STATE
Definition deviceLcsIf.hpp:98
ifw::fcf::devmgr::common::DataContext & m_data_ctx
Definition deviceLcsIf.hpp:441
std::unique_ptr< elt::configng::CiiConfigDocument > m_config_doc
Config document for mapping file.
Definition deviceLcsIf.hpp:384
virtual bool IsHwFailure() const
Check if controller is in Hardware Failure.
Definition deviceLcsIf.cpp:510
bool m_local
Actual local flag.
Definition deviceLcsIf.hpp:424
virtual std::string GetHwError(int &error_code, const bool update=false)
Get error message.
Definition deviceLcsIf.cpp:643
virtual void StopMonitoring()
Stop monitoring of controller attributes.
Definition deviceLcsIf.cpp:621
std::string GetMapValue(const std::string &category, const std::string &key) const
Get mapping value.
Definition deviceLcsIf.cpp:677
ActionMgr class source file.
Definition actionMgr.cpp:28
ifw::core::protocol::base::VectorVariant CreateVariantVector(Args &&... args)
Definition deviceLcsIf.hpp:28
The DeviceControllerData struct.
Definition deviceLcsIf.hpp:42
virtual ~DeviceControllerData()
Definition deviceLcsIf.cpp:39
void SetData(const DeviceControllerData &data)
Definition deviceLcsIf.cpp:42
DeviceControllerData()
Definition deviceLcsIf.cpp:32