Skip to content

Commit 4033b0b

Browse files
committed
Enable control of exposed LEDs on analog expansion module.
1 parent d5a2ff4 commit 4033b0b

File tree

3 files changed

+33
-0
lines changed

3 files changed

+33
-0
lines changed

examples/opcua_server/opcua_server.ino

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,23 @@ void setup()
286286
snprintf(analog_in_name, sizeof(analog_in_name), "Analog Input I%d", a + 1);
287287
exp_analog->analog_input_mgr()->add_analog_input(opc_ua_server, analog_in_name, [i, a]() { return reinterpret_cast<AnalogExpansion *>(OptaController.getExpansionPtr(i))->pinVoltage(a); });
288288
}
289+
290+
/* Configure controllable LEDs of analog expansion module. */
291+
for (int l = 0; l < OA_LED_NUM; l++)
292+
{
293+
char led_name[32] = {0};
294+
snprintf(led_name, sizeof(led_name), "LED%d", l + 1);
295+
exp_analog->led_mgr()->add_led_output(opc_ua_server,
296+
led_name,
297+
[i, l](bool const value)
298+
{
299+
AnalogExpansion * ana_exp_ptr = reinterpret_cast<AnalogExpansion *>(OptaController.getExpansionPtr(i));
300+
if (value)
301+
ana_exp_ptr->switchLedOn(l);
302+
else
303+
ana_exp_ptr->switchLedOff(l);
304+
});
305+
}
289306
}
290307
}
291308

src/expansion/AnalogExpansion.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,18 @@ AnalogInputManager::SharedPtr AnalogExpansion::analog_input_mgr()
3636
return _analog_input_mgr;
3737
}
3838

39+
LedManager::SharedPtr AnalogExpansion::led_mgr()
40+
{
41+
if (!_led_mgr)
42+
{
43+
_led_mgr = opcua::LedManager::create(_server, _node_id);
44+
if (!_led_mgr)
45+
UA_LOG_ERROR(UA_Log_Stdout, UA_LOGCATEGORY_SERVER, "AnalogExpansion::led_mgr: LedManager::create(...) failed.");
46+
}
47+
48+
return _led_mgr;
49+
}
50+
3951
/**************************************************************************************
4052
* NAMESPACE
4153
**************************************************************************************/

src/expansion/AnalogExpansion.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
#include <memory>
1919

20+
#include "../io/led/LedManager.h"
2021
#include "../io/analog/AnalogInputManager.h"
2122

2223
/**************************************************************************************
@@ -61,10 +62,13 @@ class AnalogExpansion : public Expansion
6162

6263

6364
AnalogInputManager::SharedPtr analog_input_mgr();
65+
LedManager::SharedPtr led_mgr();
66+
6467

6568

6669
private:
6770
AnalogInputManager::SharedPtr _analog_input_mgr;
71+
LedManager::SharedPtr _led_mgr;
6872
};
6973

7074
/**************************************************************************************

0 commit comments

Comments
 (0)