From 07d29a0b6c1d4f550fa8c69f6bbe20443f0bdec3 Mon Sep 17 00:00:00 2001 From: Thomas Vanbesien Date: Fri, 20 Feb 2026 13:28:27 +0100 Subject: Replace static node values with random updates every second MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- src/server_register.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'src/server_register.c') 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 @@ -101,6 +101,21 @@ _s_deregister_from_lds (UA_Server *server, const lds_client_params *p, return rv; } +/* ======================================================================== + * 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, -- cgit v1.2.3