#include <trace/trace.h>
#include <memory/memory.h>
#include <uabase/statuscodes.h>
#include <uabase/nodeid.h>
#include <uabase/variant.h>
#include <uabase/accesslevel.h>
#include <uabase/valuerank.h>
#include <uabase/structure/nodeclass.h>
#include <uabase/structure/range.h>
#include <uabase/identifiers.h>
#include <uabase/qualifiedname.h>
#include <uabase/eventnotifier.h>
#include <uaserver/server_config.h>
#include <uaserver/addressspace/node.h>
#ifdef UASERVER_SUPPORT_EVENTS
#include <uaserver/addressspace/addressspace.h>
#include <uaserver/addressspace/object.h>
#include <uaserver/addressspace/variable.h>
#include <uaserver/addressspace/objecttype.h>
#include <uaserver/event/eventfield.h>
#include <uaserver/event/eventnotifier.h>
#include <uaserver/event/event.h>
#include "custom_provider.h"
#include "custom_provider_identifiers.h"
#include "custom_provider_event.h"
static int g_newvalue_eventfield_handle = -1;
static int custom_provider_create_eventtypes(void)
{
int ret;
&nodeid,
UA_NODECLASS_OBJECTTYPE,
g_custom_provider_nsidx,
"NewValueEventType",
NULL,
base_eventtype,
UA_NODE_HASSUBTYPE);
if (ret != 0) return ret;
g_newvalue_eventtype = newvalue_eventtype;
&nodeid,
UA_NODECLASS_VARIABLE,
g_custom_provider_nsidx,
"NewValue",
NULL,
UA_NODE_PROPERTYTYPE,
newvalue_eventtype,
UA_NODE_HASPROPERTY);
if (ret != 0) return ret;
&nodeid,
UA_NODECLASS_OBJECTTYPE,
g_custom_provider_nsidx,
"OutOfRangeEventType",
NULL,
newvalue_eventtype,
UA_NODE_HASSUBTYPE);
g_outofrange_eventtype = outofrange_eventtype;
if (ret != 0) return ret;
return 0;
}
static int custom_provider_create_eventnotifier(void)
{
int ret;
&nodeid,
UA_NODECLASS_OBJECT,
g_custom_provider_nsidx,
"MyEventNotfifier",
NULL,
UA_NODE_BASEOBJECTTYPE,
custom_nodes,
UA_NODE_ORGANIZES);
if (ret != 0) return ret;
new_ref =
ua_reference_add(UA_NODE_SERVEROBJECT, notfifier, UA_NODE_HASNOTIFIER);
continue;
}
}
return 0;
}
int custom_provider_event_fire(
ua_node_t node, uint32_t value,
bool outofrange)
{
int field_handle;
int ret;
if (outofrange) {
if (e == NULL) {
ret = UA_EBAD;
goto error;
}
if (ret != 0) goto error;
} else {
if (e == NULL) {
ret = UA_EBAD;
goto error;
}
}
if (ret != 0) goto error;
if (ret != 0) goto error;
if (ret != 0) goto error;
if (ret != 0) goto error;
if (ret != 0) goto error;
return 0;
error:
return ret;
}
int custom_provider_event_init(void)
{
int ret;
ret = custom_provider_create_eventtypes();
if (ret != 0) return ret;
ret = custom_provider_create_eventnotifier();
if (ret != 0) return ret;
if (ret != 0) return ret;
if (ret != 0) return ret;
if (g_newvalue_eventfield_handle < 0) {
return g_newvalue_eventfield_handle;
}
return ret;
}
void custom_provider_event_clear(void)
{
int ret;
g_newvalue_eventfield_handle = -1;
if (ret != 0) {
}
if (ret != 0) {
}
return;
}
#endif