ifw-fcf 6.0.0
Loading...
Searching...
No Matches
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#include <variant>
14
15#include <mal/Cii.hpp>
16#include <mal/utility/LoadMal.hpp>
17
18// Local headers
19#include <utils/bat/logger.hpp>
20#include <ifw/core/protocol/base/iComm.hpp>
21#include <ifw/core/protocol/base/dispatcher.hpp>
23//#include <rad/mal/publisher.hpp>
24
25// New CII Config Service
26#include <config-ng/ciiConfigApi.hpp>
27
28namespace fcf::devmgr::common {
29
30// Variadic template function to create a vector of variants
31template<typename... Args>
32protocol::base::VectorVariant CreateVariantVector(Args&&... args) {
33
34 return {std::make_pair(std::string(),
35 protocol::base::Variant(std::forward<Args>(args)))... };
36
37}
38
47 public:
49 virtual ~DeviceControllerData();
50 inline int GetState() const;
51 inline void SetState(int state);
52 inline int GetSubstate() const;
53 inline std::string GetStateStr() const;
54 inline void SetSubstate(int subtate);
55 inline bool GetLocalFlag() const;
56 inline void SetLocalFlag(bool local_flag);
57 inline int GetErrorCode() const;
58 inline void SetErrorCode(int error_code);
59
60 void SetData(const DeviceControllerData& data);
61
62 protected:
65 bool m_local;
67 };
68
85 class DataContext;
86
88 public:
94 explicit DeviceLcsIf(std::shared_ptr<IDeviceConfig> config,
95 DataContext& data_ctx);
96
97 enum {
102 STAT_SUBSTATE = 5
103 };
104
105
114 virtual void InitObject();
115
128 virtual void RegisterComm(std::shared_ptr<protocol::base::IComm> comm_if,
129 protocol::base::Dispatcher<>& failure,
130 protocol::base::Dispatcher<>& normal);
131
140 virtual void Connect();
141
149 virtual void Disconnect();
150
155 virtual bool IsNotReady() const;
156
161 virtual bool IsReady() const;
162
171 virtual bool IsDisabling() const;
172
177 virtual bool IsOperational() const;
178
189 virtual bool IsHwFailure() const;
190
196 virtual void Init();
197
204 virtual void Enable();
205
212 virtual void Disable();
213
222 virtual void Stop();
223
230 virtual void Reset();
231
241 virtual void StartMonitoring();
242
251 virtual void StopMonitoring();
252
257 virtual void ReadStatus(DeviceControllerData& status);
258
265 virtual void Listener(protocol::base::VectorVariant& params);
266
272 virtual std::string GetRpcError(const short error_code) const = 0;
273
283 virtual std::string GetHwError(int& error_code, const bool update = false);
284
285
300 std::string GetMapValue(const std::string& category, const std::string& key) const;
301
302 protocol::base::Dispatcher<protocol::base::VectorVariant&>& GetDispatcher();
303
308 bool IsConfigLoaded() const;
309
314 bool IsConnected() const;
315
321 virtual std::shared_ptr<IDeviceConfig> GetDeviceConfig() const;
322
323 const elt::configng::CiiConfigInstanceNamespace& GetCfgInstance() const;
324
325
335 virtual void GetStates(int &state, int &substate);
336
337 protected:
338
343 void LoadConfig();
344
345 void ExecuteRpc(const std::string& obj,
346 const std::string& proc,
347 protocol::base::VectorVariant& attr_list);
348 int ReadErrorCode();
349
350
351
360 void StoreUaNames(const std::vector <std::pair<std::string, unsigned int>>& ualist);
361
371 void StoreAttribute(const std::string key,
372 const protocol::base::Variant& value,
373 int attribute);
377 std::unique_ptr<elt::configng::CiiConfigDocument> m_config_doc;
378
382 std::shared_ptr<protocol::base::IComm> m_comm;
383
387 std::shared_ptr<IDeviceConfig> m_config;
388
392 protocol::base::Dispatcher<protocol::base::VectorVariant&> m_dispatcher;
393
397 protocol::base::Dispatcher<> m_failure;
398
402 protocol::base::Dispatcher<> m_normal;
403
407 int m_state {};
408
413
417 bool m_local {false};
418
422 bool m_error_code {false};
423
427 bool m_config_loaded {false};
428
432 bool m_connected {false};
433
435
437 std::string m_lcs_prefix;
438
439
444 std::unordered_map<std::string, short> m_ua_status_map;
445
448 std::vector<std::string> m_ua_monitor_vector;
449
450 std::unordered_map<short, std::string> m_hw_errors;
451
452 private:
453 log4cplus::Logger m_logger;
454
455 };
456
457} //namespace
458
459#include "deviceLcsIf.ipp"
460
461#endif // FCF_DEVMGR_COMMON_DEVICE_LCS_IF_H
Definition: dataContext.hpp:90
Definition: deviceLcsIf.hpp:87
bool m_connected
Flag indicating whether the LCS is connected.
Definition: deviceLcsIf.hpp:432
bool m_local
Actual local flag.
Definition: deviceLcsIf.hpp:417
int m_state
Actual controller state.
Definition: deviceLcsIf.hpp:407
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:62
fcf::devmgr::common::DataContext & m_data_ctx
Definition: deviceLcsIf.hpp:434
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:437
@ STAT_STATE
Definition: deviceLcsIf.hpp:101
@ STAT_ERROR
Definition: deviceLcsIf.hpp:99
@ STAT_SUBSTATE
Definition: deviceLcsIf.hpp:102
@ STAT_HW_STATUS
Definition: deviceLcsIf.hpp:100
@ STAT_LOCAL
Definition: deviceLcsIf.hpp:98
protocol::base::Dispatcher m_normal
Dispatcher for managing recovery of communication failures.
Definition: deviceLcsIf.hpp:402
std::unique_ptr< elt::configng::CiiConfigDocument > m_config_doc
Config document for mapping file.
Definition: deviceLcsIf.hpp:377
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:97
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:392
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
void StoreUaNames(const std::vector< std::pair< std::string, unsigned int > > &ualist)
StoreUaNames.
Definition: deviceLcsIf.cpp:697
bool IsConfigLoaded() const
Check if configuration was loaded.
Definition: deviceLcsIf.cpp:586
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:444
bool m_config_loaded
Flag indicating whether the configuration was successfully loaded.
Definition: deviceLcsIf.hpp:427
std::vector< std::string > m_ua_monitor_vector
Definition: deviceLcsIf.hpp:448
void LoadConfig()
Load the YAML configuration.
Definition: deviceLcsIf.cpp:111
protocol::base::Dispatcher m_failure
Dispatcher for managing failures in the communication.
Definition: deviceLcsIf.hpp:397
virtual void Listener(protocol::base::VectorVariant &params)
Callback for listening controller events.
Definition: deviceLcsIf.cpp:773
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:382
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:450
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:387
virtual void Stop()
Executes the Stop RPC.
Definition: deviceLcsIf.cpp:426
const elt::configng::CiiConfigInstanceNamespace & GetCfgInstance() const
Definition: deviceLcsIf.cpp:714
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:718
bool m_error_code
Actual error code.
Definition: deviceLcsIf.hpp:422
int m_substate
Actual controller substate.
Definition: deviceLcsIf.hpp:412
DeviceConfig class header file.
Definition: actionMgr.cpp:29
protocol::base::VectorVariant CreateVariantVector(Args &&... args)
Definition: deviceLcsIf.hpp:32
The DeviceControllerData struct.
Definition: deviceLcsIf.hpp:46
int m_error_code
Definition: deviceLcsIf.hpp:66
int m_substate
Definition: deviceLcsIf.hpp:64
DeviceControllerData()
Definition: deviceLcsIf.cpp:35
void SetData(const DeviceControllerData &data)
Definition: deviceLcsIf.cpp:45
int m_state
Definition: deviceLcsIf.hpp:63
bool m_local
Definition: deviceLcsIf.hpp:65
virtual ~DeviceControllerData()
Definition: deviceLcsIf.cpp:42