Wolfgang Hottgenroth da498bb161 * add include files and static library due to problems with AMALGAM'ED
distri and nodeset feature
* add UaModeler project including XML export
* add nodeset using test server
2016-06-08 11:21:06 +02:00

146 lines
3.6 KiB
C

#ifndef UA_NODES_H_
#define UA_NODES_H_
#include "ua_server.h"
#include "ua_types_generated.h"
#include "ua_types_encoding_binary.h"
/*
* Most APIs take and return UA_EditNode and UA_ConstNode. By looking up the
* nodeclass, nodes can be cast to their "true" class, i.e. UA_VariableNode,
* UA_ObjectNode, and so on.
*/
#define UA_STANDARD_NODEMEMBERS \
UA_NodeId nodeId; \
UA_NodeClass nodeClass; \
UA_QualifiedName browseName; \
UA_LocalizedText displayName; \
UA_LocalizedText description; \
UA_UInt32 writeMask; \
UA_UInt32 userWriteMask; \
size_t referencesSize; \
UA_ReferenceNode *references;
typedef struct {
UA_STANDARD_NODEMEMBERS
} UA_Node;
void UA_Node_deleteMembersAnyNodeClass(UA_Node *node);
UA_StatusCode UA_Node_copyAnyNodeClass(const UA_Node *src, UA_Node *dst);
/**************/
/* ObjectNode */
/**************/
typedef struct {
UA_STANDARD_NODEMEMBERS
UA_Byte eventNotifier;
void *instanceHandle;
} UA_ObjectNode;
/******************/
/* ObjectTypeNode */
/******************/
typedef struct {
UA_STANDARD_NODEMEMBERS
UA_Boolean isAbstract;
UA_ObjectLifecycleManagement lifecycleManagement;
} UA_ObjectTypeNode;
typedef enum {
UA_VALUESOURCE_VARIANT,
UA_VALUESOURCE_DATASOURCE
} UA_ValueSource;
/****************/
/* VariableNode */
/****************/
typedef struct {
UA_STANDARD_NODEMEMBERS
UA_Int32 valueRank; /**< n >= 1: the value is an array with the specified number of dimensions.
n = 0: the value is an array with one or more dimensions.
n = -1: the value is a scalar.
n = -2: the value can be a scalar or an array with any number of dimensions.
n = -3: the value can be a scalar or a one dimensional array. */
UA_ValueSource valueSource;
union {
struct {
UA_Variant value;
UA_ValueCallback callback;
} variant;
UA_DataSource dataSource;
} value;
/* <--- similar to variabletypenodes up to there--->*/
UA_Byte accessLevel;
UA_Byte userAccessLevel;
UA_Double minimumSamplingInterval;
UA_Boolean historizing;
} UA_VariableNode;
/********************/
/* VariableTypeNode */
/********************/
typedef struct {
UA_STANDARD_NODEMEMBERS
UA_Int32 valueRank;
UA_ValueSource valueSource;
union {
struct {
UA_Variant value;
UA_ValueCallback callback;
} variant;
UA_DataSource dataSource;
} value;
/* <--- similar to variablenodes up to there--->*/
UA_Boolean isAbstract;
} UA_VariableTypeNode;
/*********************/
/* ReferenceTypeNode */
/*********************/
typedef struct {
UA_STANDARD_NODEMEMBERS
UA_Boolean isAbstract;
UA_Boolean symmetric;
UA_LocalizedText inverseName;
} UA_ReferenceTypeNode;
/**************/
/* MethodNode */
/**************/
typedef struct {
UA_STANDARD_NODEMEMBERS
UA_Boolean executable;
UA_Boolean userExecutable;
void *methodHandle;
UA_MethodCallback attachedMethod;
} UA_MethodNode;
/************/
/* ViewNode */
/************/
typedef struct {
UA_STANDARD_NODEMEMBERS
UA_Byte eventNotifier;
/* <-- the same as objectnode until here --> */
UA_Boolean containsNoLoops;
} UA_ViewNode;
/****************/
/* DataTypeNode */
/****************/
typedef struct {
UA_STANDARD_NODEMEMBERS
UA_Boolean isAbstract;
} UA_DataTypeNode;
#endif /* UA_NODES_H_ */