Skip to content

Commit f11a82b

Browse files
committed
Reformatting general Opta public API access to match overall library design.
1 parent fa8a277 commit f11a82b

File tree

5 files changed

+90
-75
lines changed

5 files changed

+90
-75
lines changed

examples/opcua_server/opcua_server.ino

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -175,34 +175,34 @@ void setup()
175175
}
176176

177177
/* Add the various digital input pins. */
178-
opta_opcua->analog_input_mgr()->add_analog_input(opc_ua_server, "Analog Input I1", []() { return arduino_opta_analog_read(A0); });
179-
opta_opcua->analog_input_mgr()->add_analog_input(opc_ua_server, "Analog Input I2", []() { return arduino_opta_analog_read(A1); });
180-
opta_opcua->analog_input_mgr()->add_analog_input(opc_ua_server, "Analog Input I3", []() { return arduino_opta_analog_read(A2); });
181-
opta_opcua->analog_input_mgr()->add_analog_input(opc_ua_server, "Analog Input I4", []() { return arduino_opta_analog_read(A3); });
182-
opta_opcua->analog_input_mgr()->add_analog_input(opc_ua_server, "Analog Input I5", []() { return arduino_opta_analog_read(A4); });
183-
opta_opcua->analog_input_mgr()->add_analog_input(opc_ua_server, "Analog Input I6", []() { return arduino_opta_analog_read(A5); });
184-
opta_opcua->analog_input_mgr()->add_analog_input(opc_ua_server, "Analog Input I7", []() { return arduino_opta_analog_read(A6); });
185-
opta_opcua->analog_input_mgr()->add_analog_input(opc_ua_server, "Analog Input I8", []() { return arduino_opta_analog_read(A7); });
178+
opta_opcua->add_analog_input(opc_ua_server, "Analog Input I1", []() { return arduino_opta_analog_read(A0); });
179+
opta_opcua->add_analog_input(opc_ua_server, "Analog Input I2", []() { return arduino_opta_analog_read(A1); });
180+
opta_opcua->add_analog_input(opc_ua_server, "Analog Input I3", []() { return arduino_opta_analog_read(A2); });
181+
opta_opcua->add_analog_input(opc_ua_server, "Analog Input I4", []() { return arduino_opta_analog_read(A3); });
182+
opta_opcua->add_analog_input(opc_ua_server, "Analog Input I5", []() { return arduino_opta_analog_read(A4); });
183+
opta_opcua->add_analog_input(opc_ua_server, "Analog Input I6", []() { return arduino_opta_analog_read(A5); });
184+
opta_opcua->add_analog_input(opc_ua_server, "Analog Input I7", []() { return arduino_opta_analog_read(A6); });
185+
opta_opcua->add_analog_input(opc_ua_server, "Analog Input I8", []() { return arduino_opta_analog_read(A7); });
186186

187187
/* Add the various digital input pins. */
188-
opta_opcua->digital_input_mgr()->add_digital_input(opc_ua_server, "Digital Input I1", []() { return arduino_opta_digital_read(A0); });
189-
opta_opcua->digital_input_mgr()->add_digital_input(opc_ua_server, "Digital Input I2", []() { return arduino_opta_digital_read(A1); });
190-
opta_opcua->digital_input_mgr()->add_digital_input(opc_ua_server, "Digital Input I3", []() { return arduino_opta_digital_read(A2); });
191-
opta_opcua->digital_input_mgr()->add_digital_input(opc_ua_server, "Digital Input I4", []() { return arduino_opta_digital_read(A3); });
192-
opta_opcua->digital_input_mgr()->add_digital_input(opc_ua_server, "Digital Input I5", []() { return arduino_opta_digital_read(A4); });
193-
opta_opcua->digital_input_mgr()->add_digital_input(opc_ua_server, "Digital Input I6", []() { return arduino_opta_digital_read(A5); });
194-
opta_opcua->digital_input_mgr()->add_digital_input(opc_ua_server, "Digital Input I7", []() { return arduino_opta_digital_read(A6); });
195-
opta_opcua->digital_input_mgr()->add_digital_input(opc_ua_server, "Digital Input I8", []() { return arduino_opta_digital_read(A7); });
188+
opta_opcua->add_digital_input(opc_ua_server, "Digital Input I1", []() { return arduino_opta_digital_read(A0); });
189+
opta_opcua->add_digital_input(opc_ua_server, "Digital Input I2", []() { return arduino_opta_digital_read(A1); });
190+
opta_opcua->add_digital_input(opc_ua_server, "Digital Input I3", []() { return arduino_opta_digital_read(A2); });
191+
opta_opcua->add_digital_input(opc_ua_server, "Digital Input I4", []() { return arduino_opta_digital_read(A3); });
192+
opta_opcua->add_digital_input(opc_ua_server, "Digital Input I5", []() { return arduino_opta_digital_read(A4); });
193+
opta_opcua->add_digital_input(opc_ua_server, "Digital Input I6", []() { return arduino_opta_digital_read(A5); });
194+
opta_opcua->add_digital_input(opc_ua_server, "Digital Input I7", []() { return arduino_opta_digital_read(A6); });
195+
opta_opcua->add_digital_input(opc_ua_server, "Digital Input I8", []() { return arduino_opta_digital_read(A7); });
196196

197197
/* Add the various relay outputs. */
198-
opta_opcua->relay_mgr()->add_relay_output(opc_ua_server, "Relay 1", [](bool const value) { pinMode(RELAY1, OUTPUT); digitalWrite(RELAY1, value); pinMode(LED_D0, OUTPUT); digitalWrite(LED_D0, value); });
199-
opta_opcua->relay_mgr()->add_relay_output(opc_ua_server, "Relay 2", [](bool const value) { pinMode(RELAY2, OUTPUT); digitalWrite(RELAY2, value); pinMode(LED_D1, OUTPUT); digitalWrite(LED_D1, value);});
200-
opta_opcua->relay_mgr()->add_relay_output(opc_ua_server, "Relay 3", [](bool const value) { pinMode(RELAY3, OUTPUT); digitalWrite(RELAY3, value); pinMode(LED_D2, OUTPUT); digitalWrite(LED_D2, value);});
201-
opta_opcua->relay_mgr()->add_relay_output(opc_ua_server, "Relay 4", [](bool const value) { pinMode(RELAY4, OUTPUT); digitalWrite(RELAY4, value); pinMode(LED_D3, OUTPUT); digitalWrite(LED_D3, value);});
198+
opta_opcua->add_relay_output(opc_ua_server, "Relay 1", [](bool const value) { pinMode(RELAY1, OUTPUT); digitalWrite(RELAY1, value); pinMode(LED_D0, OUTPUT); digitalWrite(LED_D0, value); });
199+
opta_opcua->add_relay_output(opc_ua_server, "Relay 2", [](bool const value) { pinMode(RELAY2, OUTPUT); digitalWrite(RELAY2, value); pinMode(LED_D1, OUTPUT); digitalWrite(LED_D1, value);});
200+
opta_opcua->add_relay_output(opc_ua_server, "Relay 3", [](bool const value) { pinMode(RELAY3, OUTPUT); digitalWrite(RELAY3, value); pinMode(LED_D2, OUTPUT); digitalWrite(LED_D2, value);});
201+
opta_opcua->add_relay_output(opc_ua_server, "Relay 4", [](bool const value) { pinMode(RELAY4, OUTPUT); digitalWrite(RELAY4, value); pinMode(LED_D3, OUTPUT); digitalWrite(LED_D3, value);});
202202

203203
/* Add the various LED outputs. */
204204
if (opta_type == opcua::OptaVariant::Type::WiFi) {
205-
opta_opcua->led_mgr()->add_led_output(opc_ua_server, "User LED", [](bool const value) { pinMode(LEDB, OUTPUT); digitalWrite(LEDB, value); });
205+
opta_opcua->add_led_output(opc_ua_server, "User LED", [](bool const value) { pinMode(LEDB, OUTPUT); digitalWrite(LEDB, value); });
206206
}
207207

208208
/* Check availability of expansion modules. */

src/Opta.cpp

Lines changed: 41 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,26 @@ namespace opcua
2626

2727
Opta::Opta(
2828
UA_Server * server,
29-
UA_NodeId const & node_id)
29+
UA_NodeId const & node_id,
30+
OptaVariant::Type const opta_type)
3031
: _server{server}
3132
, _node_id{node_id}
32-
, _analog_input_mgr{nullptr}
33-
, _digital_input_mgr{nullptr}
34-
, _relay_mgr{nullptr}
35-
, _led_mgr{nullptr}
33+
, _usr_button{opcua::UserButton::create(_server, _node_id)}
34+
, _analog_input_mgr{opcua::AnalogInputManager::create(_server, _node_id)}
35+
, _digital_input_mgr{opcua::DigitalInputManager::create(_server, _node_id)}
36+
, _relay_mgr{opcua::RelayManager::create(_server, _node_id)}
37+
, _led_mgr{(opta_type == OptaVariant::Type::WiFi) ? opcua::LedManager::create(_server, _node_id) : nullptr}
3638
{
37-
_usr_button = opcua::UserButton::create(_server, _node_id);
3839
if (!_usr_button)
3940
UA_LOG_ERROR(UA_Log_Stdout, UA_LOGCATEGORY_SERVER, "%s: UserButton::create(...) failed.", __PRETTY_FUNCTION__);
41+
if (!_analog_input_mgr)
42+
UA_LOG_ERROR(UA_Log_Stdout, UA_LOGCATEGORY_SERVER, "%s: AnalogInputManager::create(...) failed.", __PRETTY_FUNCTION__);
43+
if (!_digital_input_mgr)
44+
UA_LOG_ERROR(UA_Log_Stdout, UA_LOGCATEGORY_SERVER, "%s: DigitalInputManager::create(...) failed.", __PRETTY_FUNCTION__);
45+
if (!_relay_mgr)
46+
UA_LOG_ERROR(UA_Log_Stdout, UA_LOGCATEGORY_SERVER, "%s: RelayManager::create(...) failed.", __PRETTY_FUNCTION__);
47+
if ((opta_type == OptaVariant::Type::WiFi) && !_led_mgr)
48+
UA_LOG_ERROR(UA_Log_Stdout, UA_LOGCATEGORY_SERVER, "%s: LedManager::create(...) failed.", __PRETTY_FUNCTION__);
4049
}
4150

4251
/**************************************************************************************
@@ -129,60 +138,45 @@ Opta::create(
129138
return nullptr;
130139
}
131140

132-
auto const instance_ptr = std::make_shared<Opta>(server, node_id);
141+
auto const instance_ptr = std::make_shared<Opta>(server, node_id, opta_type);
133142
return instance_ptr;
134143
}
135144

136-
AnalogInputManager::SharedPtr
137-
Opta::analog_input_mgr()
145+
void
146+
Opta::add_analog_input(
147+
UA_Server * server,
148+
const char * display_name,
149+
AnalogInput::OnReadRequestFunc const on_read_request_func)
138150
{
139-
if (!_analog_input_mgr)
140-
{
141-
_analog_input_mgr = opcua::AnalogInputManager::create(_server, _node_id);
142-
if (!_analog_input_mgr)
143-
UA_LOG_ERROR(UA_Log_Stdout, UA_LOGCATEGORY_SERVER, "%s: AnalogInputManager::create(...) failed.", __PRETTY_FUNCTION__);
144-
}
145-
146-
return _analog_input_mgr;
151+
_analog_input_mgr->add_analog_input(server, display_name, on_read_request_func);
147152
}
148153

149-
DigitalInputManager::SharedPtr
150-
Opta::digital_input_mgr()
154+
void
155+
Opta::add_digital_input(
156+
UA_Server * server,
157+
const char * display_name,
158+
DigitalInput::OnReadRequestFunc const on_read_request_func)
151159
{
152-
if (!_digital_input_mgr)
153-
{
154-
_digital_input_mgr = opcua::DigitalInputManager::create(_server, _node_id);
155-
if (!_digital_input_mgr)
156-
UA_LOG_ERROR(UA_Log_Stdout, UA_LOGCATEGORY_SERVER, "%s: DigitalInputManager::create(...) failed.", __PRETTY_FUNCTION__);
157-
}
158-
159-
return _digital_input_mgr;
160+
_digital_input_mgr->add_digital_input(server, display_name, on_read_request_func);
160161
}
161162

162-
RelayManager::SharedPtr
163-
Opta::relay_mgr()
163+
void
164+
Opta::add_relay_output(
165+
UA_Server * server,
166+
const char * display_name,
167+
Relay::OnSetRelayStateFunc const on_set_relay_state)
164168
{
165-
if (!_relay_mgr)
166-
{
167-
_relay_mgr = opcua::RelayManager::create(_server, _node_id);
168-
if (!_relay_mgr)
169-
UA_LOG_ERROR(UA_Log_Stdout, UA_LOGCATEGORY_SERVER, "%s: RelayManager::create(...) failed.", __PRETTY_FUNCTION__);
170-
}
171-
172-
return _relay_mgr;
169+
_relay_mgr->add_relay_output(server, display_name, on_set_relay_state);
173170
}
174171

175-
LedManager::SharedPtr
176-
Opta::led_mgr()
172+
void
173+
Opta::add_led_output(
174+
UA_Server * server,
175+
const char * display_name,
176+
Led::OnSetLedStateFunc const on_set_led_state)
177177
{
178-
if (!_led_mgr)
179-
{
180-
_led_mgr = opcua::LedManager::create(_server, _node_id);
181-
if (!_led_mgr)
182-
UA_LOG_ERROR(UA_Log_Stdout, UA_LOGCATEGORY_SERVER, "%s: LedManager::create(...) failed.", __PRETTY_FUNCTION__);
183-
}
184-
185-
return _led_mgr;
178+
if (_led_mgr) /* Only available for Arduino Opta WiFi. */
179+
_led_mgr->add_led_output(server, display_name, on_set_led_state);
186180
}
187181

188182
/**************************************************************************************

src/Opta.h

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,14 +50,33 @@ class Opta
5050

5151
Opta(
5252
UA_Server * server,
53-
UA_NodeId const & node_id);
53+
UA_NodeId const & node_id,
54+
OptaVariant::Type const opta_type);
55+
5456

57+
void
58+
add_analog_input(
59+
UA_Server * server,
60+
const char * display_name,
61+
AnalogInput::OnReadRequestFunc const on_read_request_func);
5562

56-
AnalogInputManager::SharedPtr analog_input_mgr();
57-
DigitalInputManager::SharedPtr digital_input_mgr();
58-
RelayManager::SharedPtr relay_mgr();
59-
LedManager::SharedPtr led_mgr();
63+
void
64+
add_digital_input(
65+
UA_Server * server,
66+
const char * display_name,
67+
DigitalInput::OnReadRequestFunc const on_read_request_func);
6068

69+
void
70+
add_relay_output(
71+
UA_Server * server,
72+
const char * display_name,
73+
Relay::OnSetRelayStateFunc const on_set_relay_state);
74+
75+
void
76+
add_led_output(
77+
UA_Server * server,
78+
const char * display_name,
79+
Led::OnSetLedStateFunc const on_set_led_state);
6180

6281
[[nodiscard]] UA_NodeId node_id() const { return _node_id; }
6382

src/io/led/Led.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,8 @@ class Led
4949
OnSetLedStateFunc const on_set_led_state);
5050

5151

52-
void onWriteRequest(
52+
void
53+
onWriteRequest(
5354
UA_Server * server,
5455
UA_NodeId const * node_id,
5556
bool const value);

src/io/led/LedManager.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,8 @@ class LedManager
4545
LedManager(UA_NodeId const & node_id);
4646

4747

48-
void add_led_output(
48+
void
49+
add_led_output(
4950
UA_Server * server,
5051
const char * display_name,
5152
Led::OnSetLedStateFunc const on_set_led_state);

0 commit comments

Comments
 (0)