|
@@ -21,9 +21,22 @@
|
|
|
|
|
|
static UA_Server *server = NULL;
|
|
|
static UA_ServerConfig *config = NULL;
|
|
|
+static UA_Int32 handleCalled = 0;
|
|
|
+
|
|
|
+static UA_StatusCode
|
|
|
+globalInstantiationMethod(UA_Server *server_,
|
|
|
+ const UA_NodeId *sessionId, void *sessionContext,
|
|
|
+ const UA_NodeId *nodeId, void **nodeContext) {
|
|
|
+ handleCalled++;
|
|
|
+ return UA_STATUSCODE_GOOD;
|
|
|
+}
|
|
|
|
|
|
static void setup(void) {
|
|
|
config = UA_ServerConfig_new_default();
|
|
|
+ UA_GlobalNodeLifecycle lifecycle;
|
|
|
+ lifecycle.constructor = globalInstantiationMethod;
|
|
|
+ lifecycle.destructor = NULL;
|
|
|
+ config->nodeLifecycle = lifecycle;
|
|
|
server = UA_Server_new(config);
|
|
|
}
|
|
|
|
|
@@ -32,15 +45,9 @@ static void teardown(void) {
|
|
|
UA_ServerConfig_delete(config);
|
|
|
}
|
|
|
|
|
|
-static UA_StatusCode
|
|
|
-instantiationMethod(UA_NodeId newNodeId, UA_NodeId templateId, void *handle ) {
|
|
|
- *((UA_Int32 *) handle) += 1;
|
|
|
- return UA_STATUSCODE_GOOD;
|
|
|
-}
|
|
|
START_TEST(AddVariableNode) {
|
|
|
|
|
|
- UA_VariableAttributes attr;
|
|
|
- UA_VariableAttributes_init(&attr);
|
|
|
+ UA_VariableAttributes attr = UA_VariableAttributes_default;
|
|
|
UA_Int32 myInteger = 42;
|
|
|
UA_Variant_setScalar(&attr.value, &myInteger, &UA_TYPES[UA_TYPES_INT32]);
|
|
|
attr.description = UA_LOCALIZEDTEXT("en_US","the answer");
|
|
@@ -49,36 +56,36 @@ START_TEST(AddVariableNode) {
|
|
|
UA_QualifiedName myIntegerName = UA_QUALIFIEDNAME(1, "the answer");
|
|
|
UA_NodeId parentNodeId = UA_NODEID_NUMERIC(0, UA_NS0ID_OBJECTSFOLDER);
|
|
|
UA_NodeId parentReferenceNodeId = UA_NODEID_NUMERIC(0, UA_NS0ID_ORGANIZES);
|
|
|
- UA_StatusCode res = UA_Server_addVariableNode(server, myIntegerNodeId, parentNodeId, parentReferenceNodeId,
|
|
|
- myIntegerName, UA_NODEID_NULL, attr, NULL, NULL);
|
|
|
+ UA_StatusCode res =
|
|
|
+ UA_Server_addVariableNode(server, myIntegerNodeId, parentNodeId,
|
|
|
+ parentReferenceNodeId, myIntegerName,
|
|
|
+ UA_NODEID_NUMERIC(0, UA_NS0ID_BASEDATAVARIABLETYPE),
|
|
|
+ attr, NULL, NULL);
|
|
|
ck_assert_int_eq(UA_STATUSCODE_GOOD, res);
|
|
|
} END_TEST
|
|
|
|
|
|
START_TEST(AddComplexTypeWithInheritance) {
|
|
|
-
|
|
|
- UA_ObjectAttributes attr;
|
|
|
- UA_ObjectAttributes_init(&attr);
|
|
|
- attr.description = UA_LOCALIZEDTEXT("en_US","fakeServerStruct");
|
|
|
- attr.displayName = UA_LOCALIZEDTEXT("en_US","fakeServerStruct");
|
|
|
+
|
|
|
+ UA_ObjectAttributes attr = UA_ObjectAttributes_default;
|
|
|
+ attr.description = UA_LOCALIZEDTEXT("en_US","fakeServerStruct");
|
|
|
+ attr.displayName = UA_LOCALIZEDTEXT("en_US","fakeServerStruct");
|
|
|
|
|
|
- UA_NodeId myObjectNodeId = UA_NODEID_STRING(1, "the.fake.Server.Struct");
|
|
|
- UA_QualifiedName myObjectName = UA_QUALIFIEDNAME(1, "the.fake.Server.Struct");
|
|
|
- UA_NodeId parentNodeId = UA_NODEID_NUMERIC(0, UA_NS0ID_OBJECTSFOLDER);
|
|
|
- UA_NodeId parentReferenceNodeId = UA_NODEID_NUMERIC(0, UA_NS0ID_ORGANIZES);
|
|
|
- UA_Int32 handleCalled = 0;
|
|
|
- UA_InstantiationCallback iCallback = {.method=instantiationMethod, .handle = (void *) &handleCalled};
|
|
|
-
|
|
|
- UA_StatusCode res = UA_Server_addObjectNode(server, myObjectNodeId, parentNodeId, parentReferenceNodeId,
|
|
|
- myObjectName, UA_NODEID_NUMERIC(0, 2004),
|
|
|
- attr, &iCallback, NULL);
|
|
|
- ck_assert_int_eq(UA_STATUSCODE_GOOD, res);
|
|
|
- ck_assert_int_gt(handleCalled, 0);
|
|
|
+ UA_NodeId myObjectNodeId = UA_NODEID_STRING(1, "the.fake.Server.Struct");
|
|
|
+ UA_QualifiedName myObjectName = UA_QUALIFIEDNAME(1, "the.fake.Server.Struct");
|
|
|
+ UA_NodeId parentNodeId = UA_NODEID_NUMERIC(0, UA_NS0ID_OBJECTSFOLDER);
|
|
|
+ UA_NodeId parentReferenceNodeId = UA_NODEID_NUMERIC(0, UA_NS0ID_ORGANIZES);
|
|
|
+ UA_StatusCode res =
|
|
|
+ UA_Server_addObjectNode(server, myObjectNodeId, parentNodeId,
|
|
|
+ parentReferenceNodeId, myObjectName,
|
|
|
+ UA_NODEID_NUMERIC(0, 2004), attr,
|
|
|
+ &handleCalled, NULL);
|
|
|
+ ck_assert_int_eq(UA_STATUSCODE_GOOD, res);
|
|
|
+ ck_assert_int_gt(handleCalled, 0);
|
|
|
} END_TEST
|
|
|
|
|
|
START_TEST(AddNodeTwiceGivesError) {
|
|
|
|
|
|
- UA_VariableAttributes attr;
|
|
|
- UA_VariableAttributes_init(&attr);
|
|
|
+ UA_VariableAttributes attr = UA_VariableAttributes_default;
|
|
|
UA_Int32 myInteger = 42;
|
|
|
UA_Variant_setScalar(&attr.value, &myInteger, &UA_TYPES[UA_TYPES_INT32]);
|
|
|
attr.description = UA_LOCALIZEDTEXT("en_US","the answer");
|
|
@@ -87,45 +94,58 @@ START_TEST(AddNodeTwiceGivesError) {
|
|
|
UA_QualifiedName myIntegerName = UA_QUALIFIEDNAME(1, "the answer");
|
|
|
UA_NodeId parentNodeId = UA_NODEID_NUMERIC(0, UA_NS0ID_OBJECTSFOLDER);
|
|
|
UA_NodeId parentReferenceNodeId = UA_NODEID_NUMERIC(0, UA_NS0ID_ORGANIZES);
|
|
|
- UA_StatusCode res = UA_Server_addVariableNode(server, myIntegerNodeId, parentNodeId, parentReferenceNodeId,
|
|
|
- myIntegerName, UA_NODEID_NULL, attr, NULL, NULL);
|
|
|
+ UA_StatusCode res =
|
|
|
+ UA_Server_addVariableNode(server, myIntegerNodeId, parentNodeId,
|
|
|
+ parentReferenceNodeId, myIntegerName,
|
|
|
+ UA_NODEID_NUMERIC(0, UA_NS0ID_BASEDATAVARIABLETYPE),
|
|
|
+ attr, NULL, NULL);
|
|
|
ck_assert_int_eq(UA_STATUSCODE_GOOD, res);
|
|
|
- res = UA_Server_addVariableNode(server, myIntegerNodeId, parentNodeId, parentReferenceNodeId,
|
|
|
- myIntegerName, UA_NODEID_NULL, attr, NULL, NULL);
|
|
|
+ res = UA_Server_addVariableNode(server, myIntegerNodeId, parentNodeId,
|
|
|
+ parentReferenceNodeId, myIntegerName,
|
|
|
+ UA_NODEID_NUMERIC(0, UA_NS0ID_BASEDATAVARIABLETYPE),
|
|
|
+ attr, NULL, NULL);
|
|
|
ck_assert_int_eq(res, UA_STATUSCODE_BADNODEIDEXISTS);
|
|
|
} END_TEST
|
|
|
|
|
|
static UA_Boolean constructorCalled = false;
|
|
|
|
|
|
-static void * objectConstructor(const UA_NodeId instance) {
|
|
|
+static UA_StatusCode
|
|
|
+objectConstructor(UA_Server *server_,
|
|
|
+ const UA_NodeId *sessionId, void *sessionContext,
|
|
|
+ const UA_NodeId *typeId, void *typeContext,
|
|
|
+ const UA_NodeId *nodeId, void **nodeContext) {
|
|
|
constructorCalled = true;
|
|
|
- return NULL;
|
|
|
+ return UA_STATUSCODE_GOOD;
|
|
|
}
|
|
|
|
|
|
START_TEST(AddObjectWithConstructor) {
|
|
|
|
|
|
UA_NodeId objecttypeid = UA_NODEID_NUMERIC(0, 13371337);
|
|
|
- UA_ObjectTypeAttributes attr;
|
|
|
- UA_ObjectTypeAttributes_init(&attr);
|
|
|
+ UA_ObjectTypeAttributes attr = UA_ObjectTypeAttributes_default;
|
|
|
attr.displayName = UA_LOCALIZEDTEXT("en_US","my objecttype");
|
|
|
- UA_StatusCode res = UA_Server_addObjectTypeNode(server, objecttypeid,
|
|
|
- UA_NODEID_NUMERIC(0, UA_NS0ID_BASEOBJECTTYPE),
|
|
|
- UA_NODEID_NUMERIC(0, UA_NS0ID_HASSUBTYPE),
|
|
|
- UA_QUALIFIEDNAME(0, "myobjecttype"), attr, NULL, NULL);
|
|
|
+ UA_StatusCode res =
|
|
|
+ UA_Server_addObjectTypeNode(server, objecttypeid,
|
|
|
+ UA_NODEID_NUMERIC(0, UA_NS0ID_BASEOBJECTTYPE),
|
|
|
+ UA_NODEID_NUMERIC(0, UA_NS0ID_HASSUBTYPE),
|
|
|
+ UA_QUALIFIEDNAME(0, "myobjecttype"), attr,
|
|
|
+ NULL, NULL);
|
|
|
ck_assert_int_eq(res, UA_STATUSCODE_GOOD);
|
|
|
|
|
|
|
|
|
- UA_ObjectLifecycleManagement olm = {objectConstructor, NULL};
|
|
|
- res = UA_Server_setObjectTypeNode_lifecycleManagement(server, objecttypeid, olm);
|
|
|
+ UA_NodeTypeLifecycle lifecycle;
|
|
|
+ lifecycle.constructor = objectConstructor;
|
|
|
+ lifecycle.destructor = NULL;
|
|
|
+ res = UA_Server_setNodeTypeLifecycle(server, objecttypeid, lifecycle);
|
|
|
ck_assert_int_eq(res, UA_STATUSCODE_GOOD);
|
|
|
|
|
|
|
|
|
- UA_ObjectAttributes attr2;
|
|
|
- UA_ObjectAttributes_init(&attr2);
|
|
|
+ UA_ObjectAttributes attr2 = UA_ObjectAttributes_default;
|
|
|
attr2.displayName = UA_LOCALIZEDTEXT("en_US","my object");
|
|
|
- res = UA_Server_addObjectNode(server, UA_NODEID_NULL, UA_NODEID_NUMERIC(0, UA_NS0ID_OBJECTSFOLDER),
|
|
|
- UA_NODEID_NUMERIC(0, UA_NS0ID_HASCOMPONENT), UA_QUALIFIEDNAME(0, ""),
|
|
|
- objecttypeid, attr2, NULL, NULL);
|
|
|
+ res = UA_Server_addObjectNode(server, UA_NODEID_NULL,
|
|
|
+ UA_NODEID_NUMERIC(0, UA_NS0ID_OBJECTSFOLDER),
|
|
|
+ UA_NODEID_NUMERIC(0, UA_NS0ID_HASCOMPONENT),
|
|
|
+ UA_QUALIFIEDNAME(0, ""), objecttypeid,
|
|
|
+ attr2, NULL, NULL);
|
|
|
ck_assert_int_eq(res, UA_STATUSCODE_GOOD);
|
|
|
|
|
|
|
|
@@ -134,35 +154,42 @@ START_TEST(AddObjectWithConstructor) {
|
|
|
|
|
|
static UA_Boolean destructorCalled = false;
|
|
|
|
|
|
-static void objectDestructor(const UA_NodeId instance, void *handle) {
|
|
|
+static void
|
|
|
+objectDestructor(UA_Server *server_,
|
|
|
+ const UA_NodeId *sessionId, void *sessionContext,
|
|
|
+ const UA_NodeId *typeId, void *typeContext,
|
|
|
+ const UA_NodeId *nodeId, void **nodeContext) {
|
|
|
destructorCalled = true;
|
|
|
}
|
|
|
|
|
|
START_TEST(DeleteObjectWithDestructor) {
|
|
|
|
|
|
UA_NodeId objecttypeid = UA_NODEID_NUMERIC(0, 13371337);
|
|
|
- UA_ObjectTypeAttributes attr;
|
|
|
- UA_ObjectTypeAttributes_init(&attr);
|
|
|
+ UA_ObjectTypeAttributes attr = UA_ObjectTypeAttributes_default;
|
|
|
attr.displayName = UA_LOCALIZEDTEXT("en_US","my objecttype");
|
|
|
- UA_StatusCode res = UA_Server_addObjectTypeNode(server, objecttypeid,
|
|
|
- UA_NODEID_NUMERIC(0, UA_NS0ID_BASEOBJECTTYPE),
|
|
|
- UA_NODEID_NUMERIC(0, UA_NS0ID_HASSUBTYPE),
|
|
|
- UA_QUALIFIEDNAME(0, "myobjecttype"), attr, NULL, NULL);
|
|
|
+ UA_StatusCode res =
|
|
|
+ UA_Server_addObjectTypeNode(server, objecttypeid,
|
|
|
+ UA_NODEID_NUMERIC(0, UA_NS0ID_BASEOBJECTTYPE),
|
|
|
+ UA_NODEID_NUMERIC(0, UA_NS0ID_HASSUBTYPE),
|
|
|
+ UA_QUALIFIEDNAME(0, "myobjecttype"), attr, NULL, NULL);
|
|
|
ck_assert_int_eq(res, UA_STATUSCODE_GOOD);
|
|
|
|
|
|
|
|
|
- UA_ObjectLifecycleManagement olm = {NULL, objectDestructor};
|
|
|
- res = UA_Server_setObjectTypeNode_lifecycleManagement(server, objecttypeid, olm);
|
|
|
+ UA_NodeTypeLifecycle lifecycle;
|
|
|
+ lifecycle.constructor = NULL;
|
|
|
+ lifecycle.destructor = objectDestructor;
|
|
|
+ res = UA_Server_setNodeTypeLifecycle(server, objecttypeid, lifecycle);
|
|
|
ck_assert_int_eq(res, UA_STATUSCODE_GOOD);
|
|
|
|
|
|
|
|
|
UA_NodeId objectid = UA_NODEID_NUMERIC(0, 23372337);
|
|
|
- UA_ObjectAttributes attr2;
|
|
|
- UA_ObjectAttributes_init(&attr2);
|
|
|
+ UA_ObjectAttributes attr2 = UA_ObjectAttributes_default;
|
|
|
attr2.displayName = UA_LOCALIZEDTEXT("en_US","my object");
|
|
|
- res = UA_Server_addObjectNode(server, objectid, UA_NODEID_NUMERIC(0, UA_NS0ID_OBJECTSFOLDER),
|
|
|
- UA_NODEID_NUMERIC(0, UA_NS0ID_HASCOMPONENT), UA_QUALIFIEDNAME(0, ""),
|
|
|
- objecttypeid, attr2, NULL, NULL);
|
|
|
+ res = UA_Server_addObjectNode(server, objectid,
|
|
|
+ UA_NODEID_NUMERIC(0, UA_NS0ID_OBJECTSFOLDER),
|
|
|
+ UA_NODEID_NUMERIC(0, UA_NS0ID_HASCOMPONENT),
|
|
|
+ UA_QUALIFIEDNAME(0, ""), objecttypeid,
|
|
|
+ attr2, NULL, NULL);
|
|
|
ck_assert_int_eq(res, UA_STATUSCODE_GOOD);
|
|
|
|
|
|
|
|
@@ -174,14 +201,16 @@ START_TEST(DeleteObjectWithDestructor) {
|
|
|
|
|
|
START_TEST(DeleteObjectAndReferences) {
|
|
|
|
|
|
- UA_ObjectAttributes attr;
|
|
|
- UA_ObjectAttributes_init(&attr);
|
|
|
+ UA_ObjectAttributes attr = UA_ObjectAttributes_default;
|
|
|
attr.displayName = UA_LOCALIZEDTEXT("en_US","my object");
|
|
|
UA_NodeId objectid = UA_NODEID_NUMERIC(0, 23372337);
|
|
|
UA_StatusCode res;
|
|
|
- res = UA_Server_addObjectNode(server, objectid, UA_NODEID_NUMERIC(0, UA_NS0ID_OBJECTSFOLDER),
|
|
|
- UA_NODEID_NUMERIC(0, UA_NS0ID_HASCOMPONENT), UA_QUALIFIEDNAME(0, ""),
|
|
|
- UA_NODEID_NULL, attr, NULL, NULL);
|
|
|
+ res = UA_Server_addObjectNode(server, objectid,
|
|
|
+ UA_NODEID_NUMERIC(0, UA_NS0ID_OBJECTSFOLDER),
|
|
|
+ UA_NODEID_NUMERIC(0, UA_NS0ID_HASCOMPONENT),
|
|
|
+ UA_QUALIFIEDNAME(0, ""),
|
|
|
+ UA_NODEID_NUMERIC(0, UA_NS0ID_BASEOBJECTTYPE),
|
|
|
+ attr, NULL, NULL);
|
|
|
ck_assert_int_eq(res, UA_STATUSCODE_GOOD);
|
|
|
|
|
|
|
|
@@ -216,12 +245,15 @@ START_TEST(DeleteObjectAndReferences) {
|
|
|
UA_BrowseResult_deleteMembers(&br);
|
|
|
|
|
|
|
|
|
- UA_ObjectAttributes_init(&attr);
|
|
|
+ attr = UA_ObjectAttributes_default;
|
|
|
attr.displayName = UA_LOCALIZEDTEXT("en_US","my object");
|
|
|
objectid = UA_NODEID_NUMERIC(0, 23372337);
|
|
|
- res = UA_Server_addObjectNode(server, objectid, UA_NODEID_NUMERIC(0, UA_NS0ID_OBJECTSFOLDER),
|
|
|
- UA_NODEID_NUMERIC(0, UA_NS0ID_HASCOMPONENT), UA_QUALIFIEDNAME(0, ""),
|
|
|
- UA_NODEID_NULL, attr, NULL, NULL);
|
|
|
+ res = UA_Server_addObjectNode(server, objectid,
|
|
|
+ UA_NODEID_NUMERIC(0, UA_NS0ID_OBJECTSFOLDER),
|
|
|
+ UA_NODEID_NUMERIC(0, UA_NS0ID_HASCOMPONENT),
|
|
|
+ UA_QUALIFIEDNAME(0, ""),
|
|
|
+ UA_NODEID_NUMERIC(0, UA_NS0ID_BASEOBJECTTYPE),
|
|
|
+ attr, NULL, NULL);
|
|
|
ck_assert_int_eq(res, UA_STATUSCODE_GOOD);
|
|
|
|
|
|
|
|
@@ -246,8 +278,7 @@ START_TEST(InstantiateObjectType) {
|
|
|
|
|
|
|
|
|
UA_NodeId deviceTypeId;
|
|
|
- UA_ObjectTypeAttributes dtAttr;
|
|
|
- UA_ObjectTypeAttributes_init(&dtAttr);
|
|
|
+ UA_ObjectTypeAttributes dtAttr = UA_ObjectTypeAttributes_default;
|
|
|
dtAttr.displayName = UA_LOCALIZEDTEXT("en_US", "DeviceType");
|
|
|
retval = UA_Server_addObjectTypeNode(server, UA_NODEID_NULL,
|
|
|
UA_NODEID_NUMERIC(0, UA_NS0ID_BASEOBJECTTYPE),
|
|
@@ -256,14 +287,14 @@ START_TEST(InstantiateObjectType) {
|
|
|
NULL, &deviceTypeId);
|
|
|
ck_assert_int_eq(retval, UA_STATUSCODE_GOOD);
|
|
|
|
|
|
- UA_VariableAttributes mnAttr;
|
|
|
- UA_VariableAttributes_init(&mnAttr);
|
|
|
+ UA_VariableAttributes mnAttr = UA_VariableAttributes_default;
|
|
|
mnAttr.displayName = UA_LOCALIZEDTEXT("en_US", "ManufacturerName");
|
|
|
UA_NodeId manufacturerNameId;
|
|
|
retval = UA_Server_addVariableNode(server, UA_NODEID_NULL, deviceTypeId,
|
|
|
UA_NODEID_NUMERIC(0, UA_NS0ID_HASCOMPONENT),
|
|
|
UA_QUALIFIEDNAME(1, "ManufacturerName"),
|
|
|
- UA_NODEID_NULL, mnAttr, NULL, &manufacturerNameId);
|
|
|
+ UA_NODEID_NUMERIC(0, UA_NS0ID_BASEDATAVARIABLETYPE),
|
|
|
+ mnAttr, NULL, &manufacturerNameId);
|
|
|
ck_assert_int_eq(retval, UA_STATUSCODE_GOOD);
|
|
|
|
|
|
retval = UA_Server_addReference(server, manufacturerNameId,
|
|
@@ -271,34 +302,33 @@ START_TEST(InstantiateObjectType) {
|
|
|
UA_EXPANDEDNODEID_NUMERIC(0, UA_NS0ID_MODELLINGRULE_MANDATORY), true);
|
|
|
ck_assert_int_eq(retval, UA_STATUSCODE_GOOD);
|
|
|
|
|
|
- UA_VariableAttributes modelAttr;
|
|
|
- UA_VariableAttributes_init(&modelAttr);
|
|
|
+ UA_VariableAttributes modelAttr = UA_VariableAttributes_default;
|
|
|
modelAttr.displayName = UA_LOCALIZEDTEXT("en_US", "ModelName");
|
|
|
retval = UA_Server_addVariableNode(server, UA_NODEID_NULL, deviceTypeId,
|
|
|
UA_NODEID_NUMERIC(0, UA_NS0ID_HASCOMPONENT),
|
|
|
UA_QUALIFIEDNAME(1, "ModelName"),
|
|
|
- UA_NODEID_NULL, modelAttr, NULL, NULL);
|
|
|
+ UA_NODEID_NUMERIC(0, UA_NS0ID_BASEDATAVARIABLETYPE),
|
|
|
+ modelAttr, NULL, NULL);
|
|
|
ck_assert_int_eq(retval, UA_STATUSCODE_GOOD);
|
|
|
|
|
|
|
|
|
- UA_ObjectTypeAttributes ptAttr;
|
|
|
- UA_ObjectTypeAttributes_init(&ptAttr);
|
|
|
+ UA_ObjectTypeAttributes ptAttr = UA_ObjectTypeAttributes_default;
|
|
|
ptAttr.displayName = UA_LOCALIZEDTEXT("en_US", "PumpType");
|
|
|
- retval = UA_Server_addObjectTypeNode(server, pumpTypeId,
|
|
|
- deviceTypeId, UA_NODEID_NUMERIC(0, UA_NS0ID_HASSUBTYPE),
|
|
|
+ retval = UA_Server_addObjectTypeNode(server, pumpTypeId, deviceTypeId,
|
|
|
+ UA_NODEID_NUMERIC(0, UA_NS0ID_HASSUBTYPE),
|
|
|
UA_QUALIFIEDNAME(1, "PumpType"), ptAttr,
|
|
|
NULL, NULL);
|
|
|
ck_assert_int_eq(retval, UA_STATUSCODE_GOOD);
|
|
|
|
|
|
- UA_VariableAttributes statusAttr;
|
|
|
- UA_VariableAttributes_init(&statusAttr);
|
|
|
+ UA_VariableAttributes statusAttr = UA_VariableAttributes_default;
|
|
|
statusAttr.displayName = UA_LOCALIZEDTEXT("en_US", "Status");
|
|
|
statusAttr.valueRank = -1;
|
|
|
UA_NodeId statusId;
|
|
|
retval = UA_Server_addVariableNode(server, UA_NODEID_NULL, pumpTypeId,
|
|
|
UA_NODEID_NUMERIC(0, UA_NS0ID_HASCOMPONENT),
|
|
|
UA_QUALIFIEDNAME(1, "Status"),
|
|
|
- UA_NODEID_NULL, statusAttr, NULL, &statusId);
|
|
|
+ UA_NODEID_NUMERIC(0, UA_NS0ID_BASEDATAVARIABLETYPE),
|
|
|
+ statusAttr, NULL, &statusId);
|
|
|
ck_assert_int_eq(retval, UA_STATUSCODE_GOOD);
|
|
|
|
|
|
|
|
@@ -307,19 +337,18 @@ START_TEST(InstantiateObjectType) {
|
|
|
UA_EXPANDEDNODEID_NUMERIC(0, UA_NS0ID_MODELLINGRULE_MANDATORY), true);
|
|
|
ck_assert_int_eq(retval, UA_STATUSCODE_GOOD);
|
|
|
|
|
|
- UA_VariableAttributes rpmAttr;
|
|
|
- UA_VariableAttributes_init(&rpmAttr);
|
|
|
+ UA_VariableAttributes rpmAttr = UA_VariableAttributes_default;
|
|
|
rpmAttr.displayName = UA_LOCALIZEDTEXT("en_US", "MotorRPM");
|
|
|
rpmAttr.valueRank = -1;
|
|
|
retval = UA_Server_addVariableNode(server, UA_NODEID_NULL, pumpTypeId,
|
|
|
UA_NODEID_NUMERIC(0, UA_NS0ID_HASCOMPONENT),
|
|
|
UA_QUALIFIEDNAME(1, "MotorRPMs"),
|
|
|
- UA_NODEID_NULL, rpmAttr, NULL, NULL);
|
|
|
+ UA_NODEID_NUMERIC(0, UA_NS0ID_BASEDATAVARIABLETYPE),
|
|
|
+ rpmAttr, NULL, NULL);
|
|
|
ck_assert_int_eq(retval, UA_STATUSCODE_GOOD);
|
|
|
|
|
|
|
|
|
- UA_ObjectAttributes oAttr;
|
|
|
- UA_ObjectAttributes_init(&oAttr);
|
|
|
+ UA_ObjectAttributes oAttr = UA_ObjectAttributes_default;
|
|
|
oAttr.displayName = UA_LOCALIZEDTEXT("en_US", "MyPump");
|
|
|
retval = UA_Server_addObjectNode(server, UA_NODEID_NULL,
|
|
|
UA_NODEID_NUMERIC(0, UA_NS0ID_OBJECTSFOLDER),
|