aboutsummaryrefslogtreecommitdiffstats
path: root/src/server_register.c
diff options
context:
space:
mode:
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,