|
@@ -433,18 +433,10 @@ createVariableTypeNode(UA_Server *server, char* name, UA_UInt32 variabletypeid,
|
|
|
return variabletype;
|
|
|
}
|
|
|
|
|
|
-static void
|
|
|
-addVariableTypeNode_organized(UA_Server *server, char* name, UA_UInt32 variabletypeid,
|
|
|
- UA_UInt32 parent, UA_Boolean abstract) {
|
|
|
- UA_VariableTypeNode *variabletype = createVariableTypeNode(server, name, variabletypeid, parent, abstract);
|
|
|
- addNodeInternal(server, (UA_Node*)variabletype, UA_NODEID_NUMERIC(0, parent), nodeIdOrganizes);
|
|
|
-}
|
|
|
-
|
|
|
static void
|
|
|
addVariableTypeNode_subtype(UA_Server *server, char* name, UA_UInt32 variabletypeid,
|
|
|
UA_UInt32 parent, UA_Boolean abstract) {
|
|
|
- UA_VariableTypeNode *variabletype =
|
|
|
- createVariableTypeNode(server, name, variabletypeid, parent, abstract);
|
|
|
+ UA_VariableTypeNode *variabletype = createVariableTypeNode(server, name, variabletypeid, parent, abstract);
|
|
|
addNodeInternal(server, (UA_Node*)variabletype, UA_NODEID_NUMERIC(0, parent), nodeIdHasSubType);
|
|
|
}
|
|
|
|
|
@@ -703,7 +695,8 @@ UA_Server * UA_Server_new(const UA_ServerConfig config) {
|
|
|
hasnotifier->nodeId.identifier.numeric = UA_NS0ID_HASNOTIFIER;
|
|
|
hasnotifier->isAbstract = false;
|
|
|
hasnotifier->symmetric = false;
|
|
|
- addNodeInternal(server, (UA_Node*)hasnotifier, UA_NODEID_NUMERIC(0, UA_NS0ID_HASEVENTSOURCE), nodeIdHasSubType);
|
|
|
+ addNodeInternal(server, (UA_Node*)hasnotifier, UA_NODEID_NUMERIC(0, UA_NS0ID_HASEVENTSOURCE),
|
|
|
+ nodeIdHasSubType);
|
|
|
|
|
|
UA_ReferenceTypeNode *hasorderedcomponent = UA_NodeStore_newReferenceTypeNode();
|
|
|
copyNames((UA_Node*)hasorderedcomponent, "HasOrderedComponent");
|
|
@@ -711,7 +704,8 @@ UA_Server * UA_Server_new(const UA_ServerConfig config) {
|
|
|
hasorderedcomponent->nodeId.identifier.numeric = UA_NS0ID_HASORDEREDCOMPONENT;
|
|
|
hasorderedcomponent->isAbstract = false;
|
|
|
hasorderedcomponent->symmetric = false;
|
|
|
- addNodeInternal(server, (UA_Node*)hasorderedcomponent, UA_NODEID_NUMERIC(0, UA_NS0ID_HASCOMPONENT), nodeIdHasSubType);
|
|
|
+ addNodeInternal(server, (UA_Node*)hasorderedcomponent, UA_NODEID_NUMERIC(0, UA_NS0ID_HASCOMPONENT),
|
|
|
+ nodeIdHasSubType);
|
|
|
|
|
|
UA_ReferenceTypeNode *hasmodelparent = UA_NodeStore_newReferenceTypeNode();
|
|
|
copyNames((UA_Node*)hasmodelparent, "HasModelParent");
|
|
@@ -744,7 +738,7 @@ UA_Server * UA_Server_new(const UA_ServerConfig config) {
|
|
|
hascause->isAbstract = false;
|
|
|
hascause->symmetric = false;
|
|
|
addNodeInternal(server, (UA_Node*)hascause, nodeIdNonHierarchicalReferences, nodeIdHasSubType);
|
|
|
-
|
|
|
+
|
|
|
UA_ReferenceTypeNode *haseffect = UA_NodeStore_newReferenceTypeNode();
|
|
|
copyNames((UA_Node*)haseffect, "HasEffect");
|
|
|
haseffect->inverseName = UA_LOCALIZEDTEXT_ALLOC("en_US", "MayBeEffectedBy");
|
|
@@ -823,7 +817,6 @@ UA_Server * UA_Server_new(const UA_ServerConfig config) {
|
|
|
/* Link in the bootstrapped baseobjecttype */
|
|
|
addReferenceInternal(server, UA_NODEID_NUMERIC(0, UA_NS0ID_OBJECTTYPESFOLDER), nodeIdOrganizes,
|
|
|
UA_EXPANDEDNODEID_NUMERIC(0, UA_NS0ID_BASEOBJECTTYPE), true);
|
|
|
-
|
|
|
addObjectTypeNode(server, "ServerType", UA_NS0ID_SERVERTYPE, UA_NS0ID_BASEOBJECTTYPE, UA_NS0ID_HASSUBTYPE);
|
|
|
addObjectTypeNode(server, "ServerDiagnosticsType", UA_NS0ID_SERVERDIAGNOSTICSTYPE,
|
|
|
UA_NS0ID_BASEOBJECTTYPE, UA_NS0ID_HASSUBTYPE);
|
|
@@ -877,13 +870,26 @@ UA_Server * UA_Server_new(const UA_ServerConfig config) {
|
|
|
addDataTypeNode(server, "Enumeration", UA_NS0ID_ENUMERATION, UA_NS0ID_BASEDATATYPE);
|
|
|
addDataTypeNode(server, "ServerState", UA_NS0ID_SERVERSTATE, UA_NS0ID_ENUMERATION);
|
|
|
|
|
|
+ /******************/
|
|
|
+ /* Variable Types */
|
|
|
+ /******************/
|
|
|
+
|
|
|
UA_ObjectNode *variabletypes = UA_NodeStore_newObjectNode();
|
|
|
copyNames((UA_Node*)variabletypes, "VariableTypes");
|
|
|
variabletypes->nodeId.identifier.numeric = UA_NS0ID_VARIABLETYPESFOLDER;
|
|
|
addNodeInternalWithType(server, (UA_Node*)variabletypes, UA_NODEID_NUMERIC(0, UA_NS0ID_TYPESFOLDER),
|
|
|
nodeIdOrganizes, nodeIdFolderType);
|
|
|
- addVariableTypeNode_organized(server, "BaseVariableType", UA_NS0ID_BASEVARIABLETYPE,
|
|
|
- UA_NS0ID_VARIABLETYPESFOLDER, true);
|
|
|
+
|
|
|
+ /* Bootstrap the BaseVariableType */
|
|
|
+ UA_VariableTypeNode *basevariabletype = UA_NodeStore_newVariableTypeNode();
|
|
|
+ copyNames((UA_Node*)basevariabletype, "BaseVariableType");
|
|
|
+ basevariabletype->nodeId.identifier.numeric = UA_NS0ID_BASEVARIABLETYPE;
|
|
|
+ UA_RCU_LOCK();
|
|
|
+ UA_NodeStore_insert(server->nodestore, (UA_Node*)basevariabletype);
|
|
|
+ UA_RCU_UNLOCK();
|
|
|
+ addReferenceInternal(server, UA_NODEID_NUMERIC(0, UA_NS0ID_VARIABLETYPESFOLDER), nodeIdOrganizes,
|
|
|
+ UA_EXPANDEDNODEID_NUMERIC(0, UA_NS0ID_BASEVARIABLETYPE), true);
|
|
|
+
|
|
|
addVariableTypeNode_subtype(server, "BaseDataVariableType", UA_NS0ID_BASEDATAVARIABLETYPE,
|
|
|
UA_NS0ID_BASEVARIABLETYPE, false);
|
|
|
addVariableTypeNode_subtype(server, "PropertyType", UA_NS0ID_PROPERTYTYPE,
|