ifw-fcf  2.0.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
fcf::devmgr::common::DeviceLcsIf Class Referenceabstract

#include <deviceLcsIf.hpp>

Inheritance diagram for fcf::devmgr::common::DeviceLcsIf:
fcf::devmgr::actuator::ActuatorLcsIf< TOPIC_TYPE > fcf::devmgr::adc::AdcLcsIf< TOPIC_TYPE > fcf::devmgr::lamp::LampLcsIf< TOPIC_TYPE > fcf::devmgr::motor::MotorLcsIf< TOPIC_TYPE > fcf::devmgr::piezo::PiezoLcsIf< TOPIC_TYPE > fcf::devmgr::sensor::SensorLcsIf< TOPIC_TYPE > fcf::devmgr::shutter::ShutterLcsIf< TOPIC_TYPE > MyDeviceLcsIf testDeviceFacade::MyDeviceLcsIf testDeviceLcsIf::MyDeviceLcsIf

Public Types

enum  {
  STAT_LOCAL = 1, STAT_ERROR = 2, STAT_HW_STATUS = 3, STAT_STATE = 4,
  STAT_SUBSTATE = 5
}
 

Public Member Functions

 DeviceLcsIf (std::shared_ptr< IDeviceConfig > config, DataContext &data_ctx)
 DeviceLcsIf constructor. More...
 
virtual void RegisterComm (std::shared_ptr< fcf::common::IComm > comm_if, fcf::common::Dispatcher<> &failure, fcf::common::Dispatcher<> &normal)
 Register a communication interface. More...
 
virtual void Connect ()
 Connect to the controller or simulator. More...
 
virtual void Disconnect ()
 Disconnect from the controller of simulator. More...
 
virtual void ReadConfig (const std::vector< std::string > &stat_map_vector, const std::vector< std::string > &rpc_map_vector)
 Read the configuration. More...
 
virtual bool IsNotReady ()
 Check if controller is in Standby/NotReady state. More...
 
virtual bool IsReady ()
 Check if controller is in Standby/Ready state. More...
 
virtual bool IsDisabling ()
 Check if controller is in Disabling state. More...
 
virtual bool IsOperational ()
 Check if controller is in Operational. More...
 
virtual bool IsHwFailure ()
 Check if controller is in Hardware Failure. More...
 
virtual void Init ()
 Executes the Init RPC. More...
 
virtual void Enable ()
 Executes the Enable RPC. More...
 
virtual void Disable ()
 Executes the Disable RPC. More...
 
virtual void Stop ()
 Executes the Stop RPC. More...
 
virtual void Reset ()
 Executes the Reset RPC. More...
 
virtual void StartMonitoring ()
 Start monitoring of controller attributes. More...
 
virtual void StopMonitoring ()
 Stop monitoring of controller attributes. More...
 
virtual void Listener (fcf::common::VectorVariant &params)=0
 Callback for listening controller events. More...
 
virtual std::string GetRpcError (const short error_code) const =0
 Get associated message from the RPC error code. More...
 
virtual std::string GetHwError (int &error_code, const bool update=false)
 Get error message. More...
 
std::string GetMapValue (std::string category, std::string key)
 Get mapping valLampConfigue. More...
 
fcf::common::Dispatcher
< fcf::common::VectorVariant & > & 
GetDispatcher ()
 
bool IsConfigLoaded () const
 Check if configuration was loaded. More...
 
bool IsConnected () const
 Check is the communication was established. More...
 
virtual std::shared_ptr
< IDeviceConfig
GetDeviceConfig ()
 Get a pointer of device configuration. More...
 

Protected Member Functions

void LoadConfig ()
 Load the YAML configuration. More...
 
void ExecuteRpc (const std::string &obj, const std::string &proc, fcf::common::VectorVariant &attr_list)
 
int ReadErrorCode ()
 
void GetStates (int &state, int &substate)
 Get states (state and substate) of the controller. More...
 
void StoreUaNames (const std::vector< std::pair< std::string, unsigned int >> &ualist)
 StoreUaNames. More...
 
void StoreAttribute (const std::string key, const fcf::common::Variant &value, int attribute)
 Store the updated into the DB. More...
 

Protected Attributes

YAML::Node m_config_node
 YAML node for the device mapping file. More...
 
std::shared_ptr
< fcf::common::IComm > 
m_comm
 Shared pointer to the communication object. More...
 
std::shared_ptr< IDeviceConfigm_config
 Shared pointer to the device config object. More...
 
fcf::common::Dispatcher
< fcf::common::VectorVariant & > 
m_dispatcher
 Dispatcher for managing subscription events. More...
 
fcf::common::Dispatcher m_failure
 Dispatcher for managing failures in the communication. More...
 
fcf::common::Dispatcher m_normal
 Dispatcher for managing recovery of communication failures. More...
 
short m_state
 Actual controller state. More...
 
short m_substate
 Actual controller substate. More...
 
bool m_config_loaded
 Flag indicating whether the configuration was successfully loaded. More...
 
bool m_connected
 Flag indicating whether the LCS is connected. More...
 
devmgr::common::DataContextm_data_ctx
 
std::string m_lcs_prefix
 Store the prefix for storing keys in the database. More...
 
elt::mal::Mal::Properties m_mal_properties
 
std::string m_pub_endpoint
 
std::unordered_map
< std::string, short > 
m_ua_status_map
 
std::vector< std::string > m_ua_monitor_vector
 
std::unordered_map< short,
std::string > 
m_hw_errors
 

Member Enumeration Documentation

anonymous enum
Enumerator
STAT_LOCAL 
STAT_ERROR 
STAT_HW_STATUS 
STAT_STATE 
STAT_SUBSTATE 

Constructor & Destructor Documentation

fcf::devmgr::common::DeviceLcsIf::DeviceLcsIf ( std::shared_ptr< IDeviceConfig config,
DataContext data_ctx 
)
explicit

DeviceLcsIf constructor.

Parameters
configShared pointer to the device configuration.
data_ctxData contex

Member Function Documentation

void fcf::devmgr::common::DeviceLcsIf::Connect ( )
virtual

Connect to the controller or simulator.

Exceptions
anexception if an error ocurrs.

This method uses the registered communication interface to establish the connection.

void fcf::devmgr::common::DeviceLcsIf::Disable ( )
virtual

Executes the Disable RPC.

Exceptions
anexception if an error ocurrs.

This RPC call shall bring the controller to Standby/Ready state.

Reimplemented in testDeviceFacade::MyDeviceLcsIf, and MyDeviceLcsIf.

void fcf::devmgr::common::DeviceLcsIf::Disconnect ( )
virtual

Disconnect from the controller of simulator.

This method tries to disconnect from the controller or simulator. In case of error, the class will consider anyway the connection closed.

void fcf::devmgr::common::DeviceLcsIf::Enable ( )
virtual

Executes the Enable RPC.

Exceptions
anexception if an error ocurrs.

This RPC call shall bring the controller to Operational state.

Reimplemented in testDeviceFacade::MyDeviceLcsIf, and MyDeviceLcsIf.

void fcf::devmgr::common::DeviceLcsIf::ExecuteRpc ( const std::string &  obj,
const std::string &  proc,
fcf::common::VectorVariant &  attr_list 
)
protected
std::shared_ptr< IDeviceConfig > fcf::devmgr::common::DeviceLcsIf::GetDeviceConfig ( )
virtual

Get a pointer of device configuration.

Returns
shared pointer of internal configuration object
fcf::common::Dispatcher< fcf::common::VectorVariant & > & fcf::devmgr::common::DeviceLcsIf::GetDispatcher ( )
std::string fcf::devmgr::common::DeviceLcsIf::GetHwError ( int &  error_code,
const bool  update = false 
)
virtual

Get error message.

Parameters
error_codeInput error code
updateFlag that indicate to read the error code.
Returns
error message associated to the error code read from the PLC.

This methods does a read to the PLC to obtain the error code.

Reimplemented in testDeviceFacade::MyDeviceLcsIf, testDeviceLcsIf::MyDeviceLcsIf, and MyDeviceLcsIf.

std::string fcf::devmgr::common::DeviceLcsIf::GetMapValue ( std::string  category,
std::string  key 
)

Get mapping valLampConfigue.

Parameters
categoryattribute category
keyattribute key
Returns
string contaning the mapping value

This method delivers the attribute name at the controller (mapping). This is obtained from the mapping file and based on the category and key given. This mapping string represents the OPCUA name in the address space of the device.

The mapping file is a generalization of the address space of a particular type of device.

virtual std::string fcf::devmgr::common::DeviceLcsIf::GetRpcError ( const short  error_code) const
pure virtual
void fcf::devmgr::common::DeviceLcsIf::GetStates ( int &  state,
int &  substate 
)
protected

Get states (state and substate) of the controller.

Parameters
[in,out]statestate of the controller
[in,out]substatesubstate of the controller

This is a generic method to read the state and substate attributes of the controller. The value of these attributes might be different depending of the device.

void fcf::devmgr::common::DeviceLcsIf::Init ( )
virtual

Executes the Init RPC.

Exceptions
anexception if an error ocurrs.

Reimplemented in fcf::devmgr::adc::AdcLcsIf< TOPIC_TYPE >, testDeviceFacade::MyDeviceLcsIf, and MyDeviceLcsIf.

bool fcf::devmgr::common::DeviceLcsIf::IsConfigLoaded ( ) const

Check if configuration was loaded.

Returns
true when configuration was loaded, false otherwise.
bool fcf::devmgr::common::DeviceLcsIf::IsConnected ( ) const

Check is the communication was established.

Returns
true when is connected, false otherwise.
bool fcf::devmgr::common::DeviceLcsIf::IsDisabling ( )
virtual

Check if controller is in Disabling state.

Returns
true if condit// System headersion is met, false otherwise.

This is method is needed when Enabling a device. Sometimes a device is still disabling from the previous action and device must wait before attempting to enable again.

Reimplemented in fcf::devmgr::motor::MotorLcsIf< TOPIC_TYPE >.

bool fcf::devmgr::common::DeviceLcsIf::IsHwFailure ( )
virtual

Check if controller is in Hardware Failure.

Returns
true if condition is met, false otherwise.

Sometimes the controller may enter into a failure state triggerd by a hardware error. The controller will enter into a specific state to signal this condition. This method is checking if this condition is met.

This method reads the substate attribute from the PLC.

Reimplemented in fcf::devmgr::sensor::SensorLcsIf< TOPIC_TYPE >, testDeviceFacade::MyDeviceLcsIf, MyDeviceLcsIf, and testDeviceLcsIf::MyDeviceLcsIf.

bool fcf::devmgr::common::DeviceLcsIf::IsNotReady ( )
virtual

Check if controller is in Standby/NotReady state.

Returns
true if condition is met, false otherwise.

Reimplemented in fcf::devmgr::sensor::SensorLcsIf< TOPIC_TYPE >, and testDeviceFacade::MyDeviceLcsIf.

bool fcf::devmgr::common::DeviceLcsIf::IsOperational ( )
virtual
bool fcf::devmgr::common::DeviceLcsIf::IsReady ( )
virtual
virtual void fcf::devmgr::common::DeviceLcsIf::Listener ( fcf::common::VectorVariant &  params)
pure virtual
void fcf::devmgr::common::DeviceLcsIf::LoadConfig ( )
protected

Load the YAML configuration.

Exceptions
rad::Exceptionin case of error
void fcf::devmgr::common::DeviceLcsIf::ReadConfig ( const std::vector< std::string > &  stat_map_vector,
const std::vector< std::string > &  rpc_map_vector 
)
virtual

Read the configuration.

Exceptions
anexception if an error ocurrs.

This class reads the mapping configuration of the device with the purpose to verify the correctness of the LCS IF mapping before to continue.

Parameters are specific for each device and shall be called from child objects.

int fcf::devmgr::common::DeviceLcsIf::ReadErrorCode ( )
protected
void fcf::devmgr::common::DeviceLcsIf::RegisterComm ( std::shared_ptr< fcf::common::IComm >  comm_if,
fcf::common::Dispatcher<> &  failure,
fcf::common::Dispatcher<> &  normal 
)
virtual

Register a communication interface.

Parameters
comm_ifshared pointer to the communication interface
failuredispatcher for failure events
normaldispatcher for recovering failure events

The communication object have to be created before using this class and registered using this method.

The constructor create a callback for the internal dispatcher and loads the configuration.

void fcf::devmgr::common::DeviceLcsIf::Reset ( )
virtual

Executes the Reset RPC.

Exceptions
anexception if an error ocurrs.

This RPC call shall bring the controller to Standby/NotReady state.

void fcf::devmgr::common::DeviceLcsIf::StartMonitoring ( )
virtual

Start monitoring of controller attributes.

Exceptions
anexception if an error ocurrs.

This methods take cares of registering the attributes that will be monitored by the communication class. Most of the communication will be OPCUA and this monitoring means OPCUA subscription.

Reimplemented in fcf::devmgr::sensor::SensorLcsIf< TOPIC_TYPE >, testDeviceFacade::MyDeviceLcsIf, MyDeviceLcsIf, and testDeviceLcsIf::MyDeviceLcsIf.

void fcf::devmgr::common::DeviceLcsIf::Stop ( )
virtual

Executes the Stop RPC.

Exceptions
anexception if an error ocurrs.

This RPC call stop any ongoing action of the controller.

The specific behaviour will depend on the controller.

void fcf::devmgr::common::DeviceLcsIf::StopMonitoring ( )
virtual

Stop monitoring of controller attributes.

Exceptions
anexception if an error ocurrs.

This method will inform the communication interface to stop monitoring the shutter attributes. All OPCUA subscriptions will be removed.

Reimplemented in fcf::devmgr::adc::AdcLcsIf< TOPIC_TYPE >, fcf::devmgr::sensor::SensorLcsIf< TOPIC_TYPE >, testDeviceFacade::MyDeviceLcsIf, MyDeviceLcsIf, and testDeviceLcsIf::MyDeviceLcsIf.

void fcf::devmgr::common::DeviceLcsIf::StoreAttribute ( const std::string  key,
const fcf::common::Variant &  value,
int  attribute 
)
protected

Store the updated into the DB.

Parameters
keyKey used to store the new value.
valueVariant value to be published.
attributeCode of the attribute changed

This method store the value into the OLDB.

void fcf::devmgr::common::DeviceLcsIf::StoreUaNames ( const std::vector< std::pair< std::string, unsigned int >> &  ualist)
protected

StoreUaNames.

Parameters
ualist

Member Data Documentation

std::shared_ptr<fcf::common::IComm> fcf::devmgr::common::DeviceLcsIf::m_comm
protected

Shared pointer to the communication object.

std::shared_ptr<IDeviceConfig> fcf::devmgr::common::DeviceLcsIf::m_config
protected

Shared pointer to the device config object.

bool fcf::devmgr::common::DeviceLcsIf::m_config_loaded
protected

Flag indicating whether the configuration was successfully loaded.

YAML::Node fcf::devmgr::common::DeviceLcsIf::m_config_node
protected

YAML node for the device mapping file.

bool fcf::devmgr::common::DeviceLcsIf::m_connected
protected

Flag indicating whether the LCS is connected.

devmgr::common::DataContext& fcf::devmgr::common::DeviceLcsIf::m_data_ctx
protected
fcf::common::Dispatcher<fcf::common::VectorVariant&> fcf::devmgr::common::DeviceLcsIf::m_dispatcher
protected

Dispatcher for managing subscription events.

fcf::common::Dispatcher fcf::devmgr::common::DeviceLcsIf::m_failure
protected

Dispatcher for managing failures in the communication.

std::unordered_map<short, std::string> fcf::devmgr::common::DeviceLcsIf::m_hw_errors
protected
std::string fcf::devmgr::common::DeviceLcsIf::m_lcs_prefix
protected

Store the prefix for storing keys in the database.

elt::mal::Mal::Properties fcf::devmgr::common::DeviceLcsIf::m_mal_properties
protected
fcf::common::Dispatcher fcf::devmgr::common::DeviceLcsIf::m_normal
protected

Dispatcher for managing recovery of communication failures.

std::string fcf::devmgr::common::DeviceLcsIf::m_pub_endpoint
protected

this map is used to convert NodeId received by the OPCUA notifications to an index value to avoid comparing strings fo r each notification.

short fcf::devmgr::common::DeviceLcsIf::m_state
protected

Actual controller state.

short fcf::devmgr::common::DeviceLcsIf::m_substate
protected

Actual controller substate.

std::vector<std::string> fcf::devmgr::common::DeviceLcsIf::m_ua_monitor_vector
protected
std::unordered_map<std::string, short> fcf::devmgr::common::DeviceLcsIf::m_ua_status_map
protected

This vector is used to prepare in advance the list of node_ids that will be monitored per device.


The documentation for this class was generated from the following files: