diff options
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, |
