ifw-fcf
2.0.0
|
#include <deviceLcsIf.hpp>
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 ¶ms)=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< IDeviceConfig > | m_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::DataContext & | m_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 |
|
explicit |
DeviceLcsIf constructor.
config | Shared pointer to the device configuration. |
data_ctx | Data contex |
|
virtual |
Connect to the controller or simulator.
an | exception if an error ocurrs. |
This method uses the registered communication interface to establish the connection.
|
virtual |
Executes the Disable RPC.
an | exception if an error ocurrs. |
This RPC call shall bring the controller to Standby/Ready state.
Reimplemented in testDeviceFacade::MyDeviceLcsIf, and MyDeviceLcsIf.
|
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.
|
virtual |
Executes the Enable RPC.
an | exception if an error ocurrs. |
This RPC call shall bring the controller to Operational state.
Reimplemented in testDeviceFacade::MyDeviceLcsIf, and MyDeviceLcsIf.
|
protected |
|
virtual |
Get a pointer of device configuration.
fcf::common::Dispatcher< fcf::common::VectorVariant & > & fcf::devmgr::common::DeviceLcsIf::GetDispatcher | ( | ) |
|
virtual |
Get error message.
error_code | Input error code |
update | Flag that indicate to read the error code. |
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.
category | attribute category |
key | attribute key |
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.
|
pure virtual |
Get associated message from the RPC error code.
[in] | error_code |
Implemented in fcf::devmgr::motor::MotorLcsIf< TOPIC_TYPE >, fcf::devmgr::adc::AdcLcsIf< TOPIC_TYPE >, fcf::devmgr::piezo::PiezoLcsIf< TOPIC_TYPE >, fcf::devmgr::actuator::ActuatorLcsIf< TOPIC_TYPE >, fcf::devmgr::sensor::SensorLcsIf< TOPIC_TYPE >, fcf::devmgr::lamp::LampLcsIf< TOPIC_TYPE >, fcf::devmgr::shutter::ShutterLcsIf< TOPIC_TYPE >, testDeviceFacade::MyDeviceLcsIf, fcf::devmgr::drot::DrotLcsIf< TOPIC_TYPE >, MyDeviceLcsIf, and testDeviceLcsIf::MyDeviceLcsIf.
|
protected |
Get states (state and substate) of the controller.
[in,out] | state | state of the controller |
[in,out] | substate | substate 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.
|
virtual |
Executes the Init RPC.
an | exception 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.
bool fcf::devmgr::common::DeviceLcsIf::IsConnected | ( | ) | const |
Check is the communication was established.
|
virtual |
Check if controller is in Disabling state.
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 >.
|
virtual |
Check if controller is in Hardware Failure.
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.
|
virtual |
Check if controller is in Standby/NotReady state.
Reimplemented in fcf::devmgr::sensor::SensorLcsIf< TOPIC_TYPE >, and testDeviceFacade::MyDeviceLcsIf.
|
virtual |
Check if controller is in Operational.
Reimplemented in fcf::devmgr::sensor::SensorLcsIf< TOPIC_TYPE >, testDeviceFacade::MyDeviceLcsIf, fcf::devmgr::piezo::PiezoLcsIf< TOPIC_TYPE >, fcf::devmgr::lamp::LampLcsIf< TOPIC_TYPE >, fcf::devmgr::actuator::ActuatorLcsIf< TOPIC_TYPE >, fcf::devmgr::shutter::ShutterLcsIf< TOPIC_TYPE >, MyDeviceLcsIf, and testDeviceLcsIf::MyDeviceLcsIf.
|
virtual |
Check if controller is in Standby/Ready state.
Reimplemented in fcf::devmgr::sensor::SensorLcsIf< TOPIC_TYPE >, testDeviceFacade::MyDeviceLcsIf, fcf::devmgr::piezo::PiezoLcsIf< TOPIC_TYPE >, fcf::devmgr::lamp::LampLcsIf< TOPIC_TYPE >, fcf::devmgr::actuator::ActuatorLcsIf< TOPIC_TYPE >, fcf::devmgr::shutter::ShutterLcsIf< TOPIC_TYPE >, MyDeviceLcsIf, and testDeviceLcsIf::MyDeviceLcsIf.
|
pure virtual |
Callback for listening controller events.
params | list of paramaters to be monitored. |
Abstract method to be implemented by specific classes.
Implemented in fcf::devmgr::motor::MotorLcsIf< TOPIC_TYPE >, fcf::devmgr::adc::AdcLcsIf< TOPIC_TYPE >, fcf::devmgr::piezo::PiezoLcsIf< TOPIC_TYPE >, fcf::devmgr::actuator::ActuatorLcsIf< TOPIC_TYPE >, fcf::devmgr::sensor::SensorLcsIf< TOPIC_TYPE >, fcf::devmgr::lamp::LampLcsIf< TOPIC_TYPE >, fcf::devmgr::shutter::ShutterLcsIf< TOPIC_TYPE >, testDeviceFacade::MyDeviceLcsIf, fcf::devmgr::drot::DrotLcsIf< TOPIC_TYPE >, MyDeviceLcsIf, and testDeviceLcsIf::MyDeviceLcsIf.
|
protected |
Load the YAML configuration.
rad::Exception | in case of error |
|
virtual |
Read the configuration.
an | exception 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.
|
protected |
|
virtual |
Register a communication interface.
comm_if | shared pointer to the communication interface |
failure | dispatcher for failure events |
normal | dispatcher 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.
|
virtual |
Executes the Reset RPC.
an | exception if an error ocurrs. |
This RPC call shall bring the controller to Standby/NotReady state.
|
virtual |
Start monitoring of controller attributes.
an | exception 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.
|
virtual |
Executes the Stop RPC.
an | exception if an error ocurrs. |
This RPC call stop any ongoing action of the controller.
The specific behaviour will depend on the controller.
|
virtual |
Stop monitoring of controller attributes.
an | exception 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.
|
protected |
Store the updated into the DB.
key | Key used to store the new value. |
value | Variant value to be published. |
attribute | Code of the attribute changed |
This method store the value into the OLDB.
|
protected |
StoreUaNames.
ualist |
|
protected |
Shared pointer to the communication object.
|
protected |
Shared pointer to the device config object.
|
protected |
Flag indicating whether the configuration was successfully loaded.
|
protected |
YAML node for the device mapping file.
|
protected |
Flag indicating whether the LCS is connected.
|
protected |
|
protected |
Dispatcher for managing subscription events.
|
protected |
Dispatcher for managing failures in the communication.
|
protected |
|
protected |
Store the prefix for storing keys in the database.
|
protected |
|
protected |
Dispatcher for managing recovery of communication failures.
|
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.
|
protected |
Actual controller state.
|
protected |
Actual controller substate.
|
protected |
|
protected |
This vector is used to prepare in advance the list of node_ids that will be monitored per device.