High Performance OPC UA Server SDK  1.1.0.158
uaserver

Modules

 addressspace
 Functions and definitions for addressspace operations and attribute handling.
 
 authentication
 Interface for implementing an authentication backend.
 
 authorization
 Interface for implementing an authorization backend.
 
 valuestore
 Functions and definitions for using the valuestore infrastructure of the SDK.
 

Data Structures

struct  uaserver_provider
 
struct  ua_monitoreditem
 Structure to represent a monitoreditem in the server. More...
 

Functions

void uaserver_read_internal (ua_node_t node, struct uasession_session *session, enum ua_timestampstoreturn ts, uint32_t attribute_id, struct ua_indexrange *index_range, unsigned int num_ranges, struct ua_datavalue *result)
 Read the attribute of a node. More...
 
ua_statuscode uaserver_write_internal (ua_node_t node, struct uasession_session *session, uint32_t attribute_id, struct ua_indexrange *range, unsigned int num_ranges, struct ua_datavalue *value)
 Write the attribute of a node. More...
 
int uaserver_init (struct uaserver_provider *provider, int num_provider)
 Initialize server. More...
 
int uaserver_init_ipc (void)
 
void uaserver_clear (struct uaserver_provider *provider, int num_provider)
 Clear server. More...
 
void uaserver_clear_ipc (void)
 
int uaserver_start (void)
 Start server. More...
 
int uaserver_stop (void)
 Stop the server. More...
 
int uaserver_do_com (void)
 
int uaserver_timed_do_com (int timeout_ms)
 
int uaserver_registernode_internal (ua_node_t node, uint16_t nsidx, struct ua_nodeid *out)
 Creates a registered node from the given node handle. More...
 

Detailed Description

Function Documentation

void uaserver_clear ( struct uaserver_provider provider,
int  num_provider 
)

Clear server.

Parameters
providerArray of providers to unload.
num_providerNumber of elements in provider array.
int uaserver_init ( struct uaserver_provider provider,
int  num_provider 
)

Initialize server.

Parameters
providerArray with providers to load. Each provider will be assigned a handle on success.
num_providerNumber of elements in provider array.
Returns
Zero on success or errorcode on failure.
void uaserver_read_internal ( ua_node_t  node,
struct uasession_session session,
enum ua_timestampstoreturn  ts,
uint32_t  attribute_id,
struct ua_indexrange index_range,
unsigned int  num_ranges,
struct ua_datavalue result 
)

Read the attribute of a node.

If the value attribute is to be read, this function tries to read it from a store, other attributes are read directly from the addressspace.

Parameters
nodeNode to read the attribute from.
sessionThe session to read the attribute for. If NULL it is ignored.
tsThe timestamps to return, see: ua_timestampstoreturn.
attribute_idId of the attribute to read.
index_rangeArray of index ranges to read. For each dimension to limit the range there is one array entry.
num_rangesNumber of entries in the index_range array.
resultThe attribute that was read, in case of an error a bad statuscode is written to the statuscode of the ua_datavalue.
int uaserver_registernode_internal ( ua_node_t  node,
uint16_t  nsidx,
struct ua_nodeid out 
)

Creates a registered node from the given node handle.

Because the internal node representation only supports 30bit numeric values (0-1,073,741,824 ~ 10^9 values), we can use the highest bit 31 to mark the node as a registered node. This allows to convert every node id of the server into a efficient numeric nodeid without changing the nsidx. Note, if you change the internal node representation you also need to fix this function and ua_node_find() to reflect this change.

Parameters
nodeNode handle to create a registered nodeid for.
nsidxNsidx of node, just passed to for performance reasons to avoid an ua_node_get_nodeid() call. The provider should already know this nsidx.
outThe registed nodeid to return.
Returns
0, this function always succeeds with the current implementation.
int uaserver_start ( void  )

Start server.

Start listening for network connections.

Parameters
net_baseA network base to use. If NULL a new one will be created.
Returns
Zero on success or errorcode on failure.
int uaserver_stop ( void  )

Stop the server.

Stop listening for network connnections and clear network related resources and sessions.

Returns
Zero on success.
ua_statuscode uaserver_write_internal ( ua_node_t  node,
struct uasession_session session,
uint32_t  attribute_id,
struct ua_indexrange range,
unsigned int  num_ranges,
struct ua_datavalue value 
)

Write the attribute of a node.

This function tries to write the value attribute of a node using the store infrastructure. Other attributes are not implemented.

Parameters
nodeNode to write the attribute to.
sessionThe session to write the attribute for. If NULL it is ignored.
attribute_idId of the attribute to write.
rangeArray of index ranges to write. For each dimension to limit the range there is one array entry.
num_rangesNumber of entries in the range array.
valueThe new value to write to the attribute of the node.
Returns
Statuscode to indicate the result of the operation.