aboutsummaryrefslogtreecommitdiffstats
path: root/src/server_register.c
diff options
context:
space:
mode:
authorThomas Vanbesien <tvanbesi@proton.me>2026-02-20 13:28:27 +0100
committerThomas Vanbesien <tvanbesi@proton.me>2026-02-20 13:37:21 +0100
commit07d29a0b6c1d4f550fa8c69f6bbe20443f0bdec3 (patch)
tree27f4eaf81e6a8868185c8898afb2af1e17c7a337 /src/server_register.c
parent2b632bd229edaa9999be5043f9a8ae2ac7d17e41 (diff)
downloadBobinkCOpcUa-07d29a0b6c1d4f550fa8c69f6bbe20443f0bdec3.tar.gz
BobinkCOpcUa-07d29a0b6c1d4f550fa8c69f6bbe20443f0bdec3.zip
Replace static node values with random updates every second
Remove the value field from nodes config — nodes are now created with zero-initialized values, then randomized at startup and every 1000ms via UA_Server_addRepeatedCallback. This is intended for testing OPC UA monitoring and subscriptions.
Diffstat (limited to 'src/server_register.c')
-rw-r--r--src/server_register.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/server_register.c b/src/server_register.c
index b938ca4..bbd1c31 100644
--- a/src/server_register.c
+++ b/src/server_register.c
@@ -102,6 +102,21 @@ _s_deregister_from_lds (UA_Server *server, const lds_client_params *p,
}
/* ========================================================================
+ * Node-Update Callback
+ * ======================================================================== */
+
+/**
+ * Repeated callback that randomizes all configured variable node values.
+ * Registered via UA_Server_addRepeatedCallback with a nodes_config pointer.
+ */
+static void
+_s_update_nodes_cb (UA_Server *server, void *data)
+{
+ nodes_config *nc = (nodes_config *)data;
+ nodes_config_randomize (server, nc);
+}
+
+/* ========================================================================
* Main
* ======================================================================== */
@@ -110,6 +125,7 @@ main (int argc, char **argv)
{
signal (SIGINT, _s_stop_handler);
signal (SIGTERM, _s_stop_handler);
+ srand ((unsigned)time (NULL));
if (argc < 4 || argc > 6)
{
@@ -241,6 +257,15 @@ main (int argc, char **argv)
can periodically re-register with the LDS between iterations. */
UA_Server_run_startup (server);
+ /* Assign initial random values and schedule periodic updates. */
+ UA_UInt64 update_cb_id = 0;
+ if (nodes_cfg.count > 0)
+ {
+ nodes_config_randomize (server, &nodes_cfg);
+ UA_Server_addRepeatedCallback (server, _s_update_nodes_cb, &nodes_cfg,
+ 1000, &update_cb_id);
+ }
+
retval = _s_register_with_lds (server, &lds_params, discovery_endpoint);
if (retval != UA_STATUSCODE_GOOD)
UA_LOG_WARNING (UA_Log_Stdout, UA_LOGCATEGORY_SERVER,