diff options
| author | Thomas Vanbesien <tvanbesi@proton.me> | 2026-02-20 13:28:27 +0100 |
|---|---|---|
| committer | Thomas Vanbesien <tvanbesi@proton.me> | 2026-02-20 13:37:21 +0100 |
| commit | 07d29a0b6c1d4f550fa8c69f6bbe20443f0bdec3 (patch) | |
| tree | 27f4eaf81e6a8868185c8898afb2af1e17c7a337 /src/server_register.c | |
| parent | 2b632bd229edaa9999be5043f9a8ae2ac7d17e41 (diff) | |
| download | BobinkCOpcUa-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.c | 25 |
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, |
