8#ifndef FCF_DEVMGR_COMMON_DEVICE_LCS_IF_H
9#define FCF_DEVMGR_COMMON_DEVICE_LCS_IF_H
11#include <yaml-cpp/yaml.h>
21#include <mal/utility/LoadMal.hpp>
23#include <ifw/core/utils/bat/logger.hpp>
25#include <ifw/fnd/defs/iCommAdapter.hpp>
27#include <eso/uatools/ualib/client.hpp>
31#include <config-ng/ciiConfigApi.hpp>
98 explicit DeviceLcsIf(std::shared_ptr<IDeviceConfig> config,
132 virtual void RegisterComm(std::shared_ptr<ifw::fnd::defs::ICommAdapter> comm_if,
133 std::function<
void()> on_failure,
134 std::function<
void()> on_normal);
234 virtual void Reset();
279 virtual void Listener(
const ifw::fnd::defs::Notification& note);
286 virtual std::string
GetRpcError(
const short error_code)
const = 0;
297 virtual std::string
GetHwError(
int& error_code,
const bool update =
false);
314 std::string
GetMapValue(
const std::string& category,
const std::string& key)
const;
343 const elt::configng::CiiConfigInstanceNamespace&
GetCfgInstance()
const;
355 virtual void GetStates(
int &state,
int &substate);
381 const std::string& proc,
382 std::vector<ifw::fnd::defs::CallArgument> args);
407 static std::pair<std::string, std::string>
409 const std::string& obj_hint =
"");
422 void StoreUaNames(
const std::vector <std::pair<std::string, unsigned int>>& ualist);
434 const ifw::fnd::defs::Value& value,
460 std::shared_ptr<ifw::fnd::defs::ICommAdapter>
m_comm;
538 log4cplus::Logger m_logger;
544#include "deviceLcsIf.ipp"
Definition dataContext.hpp:86
std::function< void()> m_on_failure
Callback invoked on failure-significant transitions (replaces the old Dispatcher<> failure fan-out).
Definition deviceLcsIf.hpp:466
virtual void InitObject()
Initialize object.
Definition deviceLcsIf.cpp:63
virtual void Disable()
Executes the Disable RPC.
Definition deviceLcsIf.cpp:396
void ExecuteRpc(const std::string &obj, const std::string &proc, std::vector< ifw::fnd::defs::CallArgument > args)
Call an RPC, parse the short reply, throw on non-zero.
Definition deviceLcsIf.cpp:195
virtual void Enable()
Executes the Enable RPC.
Definition deviceLcsIf.cpp:375
virtual bool IsReady() const
Check if controller is in Standby/Ready state.
Definition deviceLcsIf.cpp:476
virtual void Listener(const ifw::fnd::defs::Notification ¬e)
Callback for listening controller events.
Definition deviceLcsIf.cpp:795
std::function< void()> m_on_normal
Callback invoked on recovery transitions (replaces the old Dispatcher<> normal fan-out).
Definition deviceLcsIf.hpp:472
static std::pair< std::string, std::string > DecodeRpcAddress(const std::string &proc, const std::string &obj_hint="")
Split an FCF '#' RPC address into the OPC UA object + method node ids that the Call service needs.
Definition deviceLcsIf.cpp:167
const elt::configng::CiiConfigInstanceNamespace & GetCfgInstance() const
Definition deviceLcsIf.cpp:728
virtual void Reset()
Executes the Reset RPC.
Definition deviceLcsIf.cpp:417
virtual bool IsDisabling() const
Check if controller is in Disabling state.
Definition deviceLcsIf.cpp:503
int m_state
Actual controller state.
Definition deviceLcsIf.hpp:495
virtual bool IsNotReady() const
Check if controller is in Standby/NotReady state.
Definition deviceLcsIf.cpp:459
void SetConfigLoad(bool flag)
bool m_connected
Flag indicating whether the LCS is connected.
Definition deviceLcsIf.hpp:520
std::shared_ptr< IDeviceConfig > m_config
Shared pointer to the device config object.
Definition deviceLcsIf.hpp:445
int m_substate
Actual controller substate.
Definition deviceLcsIf.hpp:500
virtual void Stop()
Executes the Stop RPC.
Definition deviceLcsIf.cpp:438
virtual void StartMonitoring()
Start monitoring of controller attributes.
Definition deviceLcsIf.cpp:620
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:454
ifw::fnd::defs::SubscriptionHandler GetSubscriptionHandler()
Return the subscription handler this object hands to ualib::Client::Subscribe. Test code uses this to...
Definition deviceLcsIf.cpp:587
int ReadErrorCode()
Definition deviceLcsIf.cpp:212
DeviceLcsIf(std::shared_ptr< IDeviceConfig > config, DataContext &data_ctx)
DeviceLcsIf constructor.
Definition deviceLcsIf.cpp:53
std::unordered_map< short, std::string > m_hw_errors
Definition deviceLcsIf.hpp:534
virtual void GetStates(int &state, int &substate)
Get states (state and substate) of the controller.
Definition deviceLcsIf.cpp:520
std::vector< std::string > m_ua_monitor_vector
Definition deviceLcsIf.hpp:532
virtual void RegisterComm(std::shared_ptr< ifw::fnd::defs::ICommAdapter > comm_if, std::function< void()> on_failure, std::function< void()> on_normal)
Register a communication interface.
Definition deviceLcsIf.cpp:99
bool IsConnected() const
Check is the communication was established.
Definition deviceLcsIf.cpp:611
int m_error_code
Actual error code.
Definition deviceLcsIf.hpp:510
void LoadConfig()
Load the YAML configuration.
Definition deviceLcsIf.cpp:119
virtual void Init()
Executes the Init RPC.
Definition deviceLcsIf.cpp:325
virtual void Connect()
Connect to the controller or simulator.
Definition deviceLcsIf.cpp:229
virtual void Disconnect()
Disconnect from the controller of simulator.
Definition deviceLcsIf.cpp:307
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:492
bool m_config_loaded
Flag indicating whether the configuration was successfully loaded.
Definition deviceLcsIf.hpp:515
std::unordered_map< std::string, short > m_ua_status_map
Definition deviceLcsIf.hpp:528
virtual void ReadStatus(DeviceControllerData &status)
ReadStatus.
Definition deviceLcsIf.cpp:651
std::shared_ptr< ifw::fnd::defs::ICommAdapter > m_comm
Shared pointer to the comm adapter (typically ualib::Client in production; mocked in unit tests).
Definition deviceLcsIf.hpp:460
virtual std::shared_ptr< IDeviceConfig > GetDeviceConfig() const
Get a pointer of device configuration.
Definition deviceLcsIf.cpp:616
void StoreAttribute(const std::string &key, const ifw::fnd::defs::Value &value, int attribute)
Store the updated into the DB.
Definition deviceLcsIf.cpp:732
ifw::fnd::defs::RegistrationToken m_state_token
Keeps the connection-state observer registered for the lifetime of this device.
Definition deviceLcsIf.hpp:490
void StoreUaNames(const std::vector< std::pair< std::string, unsigned int > > &ualist)
StoreUaNames.
Definition deviceLcsIf.cpp:711
ifw::fcf::devmgr::common::DataContext & m_data_ctx
Definition deviceLcsIf.hpp:522
std::unique_ptr< elt::configng::CiiConfigDocument > m_config_doc
Config document for mapping file.
Definition deviceLcsIf.hpp:449
virtual bool IsHwFailure() const
Check if controller is in Hardware Failure.
Definition deviceLcsIf.cpp:509
bool m_local
Actual local flag.
Definition deviceLcsIf.hpp:505
virtual std::string GetHwError(int &error_code, const bool update=false)
Get error message.
Definition deviceLcsIf.cpp:661
@ STAT_LOCAL
Definition deviceLcsIf.hpp:102
@ STAT_HW_STATUS
Definition deviceLcsIf.hpp:104
@ STAT_SUBSTATE
Definition deviceLcsIf.hpp:106
@ STAT_ERROR
Definition deviceLcsIf.hpp:103
@ STAT_STATE
Definition deviceLcsIf.hpp:105
virtual void StopMonitoring()
Stop monitoring of controller attributes.
Definition deviceLcsIf.cpp:643
std::string GetMapValue(const std::string &category, const std::string &key) const
Get mapping value.
Definition deviceLcsIf.cpp:694
ActionMgr class source file.
Definition actionMgr.cpp:28
The DeviceControllerData struct.
Definition deviceLcsIf.hpp:49
std::string GetStateStr() const
void SetErrorCode(int error_code)
virtual ~DeviceControllerData()
Definition deviceLcsIf.cpp:43
void SetData(const DeviceControllerData &data)
Definition deviceLcsIf.cpp:46
void SetLocalFlag(bool local_flag)
void SetSubstate(int subtate)
bool GetLocalFlag() const
DeviceControllerData()
Definition deviceLcsIf.cpp:36