@@ -23,46 +23,57 @@ namespace opcua
2323{
2424
2525/* *************************************************************************************
26- * PUBLIC MEMBER FUNCTIONS
26+ * CTOR/DTOR
2727 **************************************************************************************/
2828
29- AnalogInputManager::SharedPtr
30- DigitalExpansion::analog_input_mgr ()
29+ DigitalExpansion::DigitalExpansion (
30+ UA_Server * server,
31+ UA_NodeId const parent_node_id,
32+ char * display_name,
33+ char * node_name,
34+ char * model_name)
35+ : Expansion(server, parent_node_id, display_name, node_name, model_name)
36+ , _analog_input_mgr{opcua::AnalogInputManager::create (_server, _node_id)}
37+ , _digital_input_mgr{opcua::DigitalInputManager::create (_server, _node_id)}
38+ , _relay_mgr{opcua::RelayManager::create (_server, _node_id)}
3139{
3240 if (!_analog_input_mgr)
33- {
34- _analog_input_mgr = opcua::AnalogInputManager::create (_server, _node_id);
35- if (!_analog_input_mgr)
36- UA_LOG_ERROR (UA_Log_Stdout, UA_LOGCATEGORY_SERVER, " %s: AnalogInputManager::create(...) failed." , __PRETTY_FUNCTION__);
37- }
38-
39- return _analog_input_mgr;
41+ UA_LOG_ERROR (UA_Log_Stdout, UA_LOGCATEGORY_SERVER, " %s: AnalogInputManager::create(...) failed." , __PRETTY_FUNCTION__);
42+ if (!_digital_input_mgr)
43+ UA_LOG_ERROR (UA_Log_Stdout, UA_LOGCATEGORY_SERVER, " %s: DigitalInputManager::create(...) failed." , __PRETTY_FUNCTION__);
44+ if (!_relay_mgr)
45+ UA_LOG_ERROR (UA_Log_Stdout, UA_LOGCATEGORY_SERVER, " %s: RelayManager::create(...) failed." , __PRETTY_FUNCTION__);
4046}
4147
42- DigitalInputManager::SharedPtr
43- DigitalExpansion::digital_input_mgr ()
44- {
45- if (!_digital_input_mgr)
46- {
47- _digital_input_mgr = opcua::DigitalInputManager::create (_server, _node_id);
48- if (!_digital_input_mgr)
49- UA_LOG_ERROR (UA_Log_Stdout, UA_LOGCATEGORY_SERVER, " %s: DigitalInputManager::create(...) failed." , __PRETTY_FUNCTION__);
50- }
48+ /* *************************************************************************************
49+ * PUBLIC MEMBER FUNCTIONS
50+ **************************************************************************************/
5151
52- return _digital_input_mgr;
52+ void
53+ DigitalExpansion::add_analog_input (
54+ UA_Server * server,
55+ const char * display_name,
56+ AnalogInput::OnReadRequestFunc const on_read_request_func)
57+ {
58+ _analog_input_mgr->add_analog_input (server, display_name, on_read_request_func);
5359}
5460
55- RelayManager::SharedPtr
56- DigitalExpansion::relay_mgr ()
61+ void
62+ DigitalExpansion::add_digital_input (
63+ UA_Server * server,
64+ const char * display_name,
65+ DigitalInput::OnReadRequestFunc const on_read_request_func)
5766{
58- if (!_relay_mgr)
59- {
60- _relay_mgr = opcua::RelayManager::create (_server, _node_id);
61- if (!_relay_mgr)
62- UA_LOG_ERROR (UA_Log_Stdout, UA_LOGCATEGORY_SERVER, " %s: RelayManager::create(...) failed." , __PRETTY_FUNCTION__);
63- }
67+ _digital_input_mgr->add_digital_input (server, display_name, on_read_request_func);
68+ }
6469
65- return _relay_mgr;
70+ void
71+ DigitalExpansion::add_relay_output (
72+ UA_Server * server,
73+ const char * display_name,
74+ Relay::OnSetRelayStateFunc const on_set_relay_state)
75+ {
76+ _relay_mgr->add_relay_output (server, display_name, on_set_relay_state);
6677}
6778
6879/* *************************************************************************************
0 commit comments