Replace ValueRanks by defines (#2124)

* Replace ValueRanks by defines

* Update tests/client/check_client_highlevel.c
This commit is contained in:
Martin Lang 2018-10-20 15:46:30 +02:00 committed by Julius Pfrommer
parent 271c944049
commit 4b9cb3c034
14 changed files with 71 additions and 63 deletions

View File

@ -18,7 +18,7 @@ add3PointDataType(UA_Server *server) {
dattr.description = UA_LOCALIZEDTEXT("en-US", "3D Point");
dattr.displayName = UA_LOCALIZEDTEXT("en-US", "3D Point");
dattr.dataType = PointType.typeId;
dattr.valueRank = -1;
dattr.valueRank = UA_VALUERANK_SCALAR;
Point p;
p.x = 0.0;
@ -45,7 +45,7 @@ add3DPointVariable(UA_Server *server) {
vattr.description = UA_LOCALIZEDTEXT("en-US", "3D Point");
vattr.displayName = UA_LOCALIZEDTEXT("en-US", "3D Point");
vattr.dataType = PointType.typeId;
vattr.valueRank = -1;
vattr.valueRank = UA_VALUERANK_SCALAR;
UA_Variant_setScalar(&vattr.value, &p, &PointType);
UA_Server_addVariableNode(server, UA_NODEID_STRING(1, "3D.Point"),

View File

@ -103,7 +103,7 @@ setInformationModel(UA_Server *server) {
myVar.displayName = UA_LOCALIZEDTEXT("en-US", "the answer");
myVar.accessLevel = UA_ACCESSLEVELMASK_READ | UA_ACCESSLEVELMASK_WRITE;
myVar.dataType = UA_TYPES[UA_TYPES_INT32].typeId;
myVar.valueRank = -1;
myVar.valueRank = UA_VALUERANK_SCALAR;
UA_Int32 myInteger = 42;
UA_Variant_setScalar(&myVar.value, &myInteger, &UA_TYPES[UA_TYPES_INT32]);
const UA_QualifiedName myIntegerName = UA_QUALIFIEDNAME(1, "the answer");
@ -119,7 +119,7 @@ setInformationModel(UA_Server *server) {
myVar.displayName = UA_LOCALIZEDTEXT("en-US", "the answer - not readable");
myVar.accessLevel = UA_ACCESSLEVELMASK_WRITE;
myVar.dataType = UA_TYPES[UA_TYPES_INT32].typeId;
myVar.valueRank = -1;
myVar.valueRank = UA_VALUERANK_SCALAR;
UA_Variant_setScalar(&myVar.value, &myInteger, &UA_TYPES[UA_TYPES_INT32]);
const UA_QualifiedName myInteger2Name = UA_QUALIFIEDNAME(1, "the answer - not readable");
const UA_NodeId myInteger2NodeId = UA_NODEID_STRING(1, "the.answer.no.read");
@ -132,7 +132,7 @@ setInformationModel(UA_Server *server) {
myVar.displayName = UA_LOCALIZEDTEXT("en-US", "the answer - not current user");
myVar.accessLevel = UA_ACCESSLEVELMASK_WRITE;
myVar.dataType = UA_TYPES[UA_TYPES_INT32].typeId;
myVar.valueRank = -1;
myVar.valueRank = UA_VALUERANK_SCALAR;
myVar.accessLevel = UA_ACCESSLEVELMASK_READ | UA_ACCESSLEVELMASK_WRITE;
UA_Variant_setScalar(&myVar.value, &myInteger, &UA_TYPES[UA_TYPES_INT32]);
const UA_QualifiedName accessDeniedName = UA_QUALIFIEDNAME(1, "the answer - not current user");
@ -148,7 +148,7 @@ setInformationModel(UA_Server *server) {
v_attr.displayName = UA_LOCALIZEDTEXT("en-US", "current time");
v_attr.accessLevel = UA_ACCESSLEVELMASK_READ;
v_attr.dataType = UA_TYPES[UA_TYPES_DATETIME].typeId;
v_attr.valueRank = -1;
v_attr.valueRank = UA_VALUERANK_SCALAR;
const UA_QualifiedName dateName = UA_QUALIFIEDNAME(1, "current time");
UA_Server_addDataSourceVariableNode(server, UA_NODEID_NULL, UA_NODEID_NUMERIC(0, UA_NS0ID_OBJECTSFOLDER),
UA_NODEID_NUMERIC(0, UA_NS0ID_ORGANIZES), dateName,
@ -159,7 +159,7 @@ setInformationModel(UA_Server *server) {
myVar.description = UA_LOCALIZEDTEXT("", "");
myVar.displayName = UA_LOCALIZEDTEXT("", "example bytestring");
myVar.dataType = UA_TYPES[UA_TYPES_BYTESTRING].typeId;
myVar.valueRank = -1;
myVar.valueRank = UA_VALUERANK_SCALAR;
myVar.accessLevel = UA_ACCESSLEVELMASK_READ | UA_ACCESSLEVELMASK_WRITE;
UA_ByteString myByteString = UA_BYTESTRING("test123\0test123");
UA_Variant_setScalar(&myVar.value, &myByteString, &UA_TYPES[UA_TYPES_BYTESTRING]);
@ -177,7 +177,7 @@ setInformationModel(UA_Server *server) {
inputArguments.dataType = UA_TYPES[UA_TYPES_STRING].typeId;
inputArguments.description = UA_LOCALIZEDTEXT("en-US", "Say your name");
inputArguments.name = UA_STRING("Name");
inputArguments.valueRank = -1; /* scalar argument */
inputArguments.valueRank = UA_VALUERANK_SCALAR; /* scalar argument */
UA_Argument outputArguments;
UA_Argument_init(&outputArguments);
@ -186,7 +186,7 @@ setInformationModel(UA_Server *server) {
outputArguments.dataType = UA_TYPES[UA_TYPES_STRING].typeId;
outputArguments.description = UA_LOCALIZEDTEXT("en-US", "Receive a greeting");
outputArguments.name = UA_STRING("greeting");
outputArguments.valueRank = -1;
outputArguments.valueRank = UA_VALUERANK_SCALAR;
UA_MethodAttributes addmethodattributes = UA_MethodAttributes_default;
addmethodattributes.displayName = UA_LOCALIZEDTEXT("en-US", "Hello World");
@ -258,7 +258,7 @@ setInformationModel(UA_Server *server) {
attr.userWriteMask = UA_WRITEMASK_DISPLAYNAME | UA_WRITEMASK_DESCRIPTION;
/* add a scalar node for every built-in type */
attr.valueRank = -1;
attr.valueRank = UA_VALUERANK_SCALAR;
void *value = UA_new(&UA_TYPES[type]);
UA_Variant_setScalar(&attr.value, value, &UA_TYPES[type]);
UA_Server_addVariableNode(server, UA_NODEID_NUMERIC(1, ++id),
@ -268,7 +268,7 @@ setInformationModel(UA_Server *server) {
/* add an array node for every built-in type */
UA_UInt32 arrayDims = 0;
attr.valueRank = 1;
attr.valueRank = UA_VALUERANK_ONE_DIMENSION;
attr.arrayDimensions = &arrayDims;
attr.arrayDimensionsSize = 1;
UA_Variant_setArray(&attr.value, UA_Array_new(10, &UA_TYPES[type]), 10, &UA_TYPES[type]);
@ -278,7 +278,7 @@ setInformationModel(UA_Server *server) {
UA_Variant_deleteMembers(&attr.value);
/* add an matrix node for every built-in type */
attr.valueRank = 2;
attr.valueRank = UA_VALUERANK_TWO_DIMENSIONS;
attr.arrayDimensions = matrixDims;
attr.arrayDimensionsSize = 2;
void *myMultiArray = UA_Array_new(9, &UA_TYPES[type]);
@ -360,7 +360,7 @@ setInformationModel(UA_Server *server) {
inputArguments.dataType = UA_TYPES[UA_TYPES_INT32].typeId;
inputArguments.description = UA_LOCALIZEDTEXT("en-US", "Input");
inputArguments.name = UA_STRING("Input");
inputArguments.valueRank = -1; //uaexpert will crash if set to 0 ;)
inputArguments.valueRank = UA_VALUERANK_SCALAR; //uaexpert will crash if set to 0 ;)
UA_Server_addMethodNode(server, UA_NODEID_NUMERIC(1, INARGID),
UA_NODEID_NUMERIC(1, DEMOID),
@ -379,7 +379,7 @@ setInformationModel(UA_Server *server) {
outputArguments.dataType = UA_TYPES[UA_TYPES_INT32].typeId;
outputArguments.description = UA_LOCALIZEDTEXT("en-US", "Output");
outputArguments.name = UA_STRING("Output");
outputArguments.valueRank = -1;
outputArguments.valueRank = UA_VALUERANK_SCALAR;
UA_Server_addMethodNode(server, UA_NODEID_NUMERIC(1, OUTARGID),
UA_NODEID_NUMERIC(1, DEMOID),

View File

@ -60,14 +60,14 @@ addHellWorldMethod(UA_Server *server) {
inputArgument.description = UA_LOCALIZEDTEXT("en-US", "A String");
inputArgument.name = UA_STRING("MyInput");
inputArgument.dataType = UA_TYPES[UA_TYPES_STRING].typeId;
inputArgument.valueRank = -1; /* scalar */
inputArgument.valueRank = UA_VALUERANK_SCALAR;
UA_Argument outputArgument;
UA_Argument_init(&outputArgument);
outputArgument.description = UA_LOCALIZEDTEXT("en-US", "A String");
outputArgument.name = UA_STRING("MyOutput");
outputArgument.dataType = UA_TYPES[UA_TYPES_STRING].typeId;
outputArgument.valueRank = -1; /* scalar */
outputArgument.valueRank = UA_VALUERANK_SCALAR;
UA_MethodAttributes helloAttr = UA_MethodAttributes_default;
helloAttr.description = UA_LOCALIZEDTEXT("en-US","Say `Hello World`");
@ -120,7 +120,7 @@ addIncInt32ArrayMethod(UA_Server *server) {
inputArguments[0].description = UA_LOCALIZEDTEXT("en-US", "int32[5] array");
inputArguments[0].name = UA_STRING("int32 array");
inputArguments[0].dataType = UA_TYPES[UA_TYPES_INT32].typeId;
inputArguments[0].valueRank = 1;
inputArguments[0].valueRank = UA_VALUERANK_ONE_DIMENSION;
UA_UInt32 pInputDimension = 5;
inputArguments[0].arrayDimensionsSize = 1;
inputArguments[0].arrayDimensions = &pInputDimension;
@ -129,7 +129,7 @@ addIncInt32ArrayMethod(UA_Server *server) {
inputArguments[1].description = UA_LOCALIZEDTEXT("en-US", "int32 delta");
inputArguments[1].name = UA_STRING("int32 delta");
inputArguments[1].dataType = UA_TYPES[UA_TYPES_INT32].typeId;
inputArguments[1].valueRank = -1; /* scalar */
inputArguments[1].valueRank = UA_VALUERANK_SCALAR;
/* One output argument */
UA_Argument outputArgument;
@ -137,7 +137,7 @@ addIncInt32ArrayMethod(UA_Server *server) {
outputArgument.description = UA_LOCALIZEDTEXT("en-US", "int32[5] array");
outputArgument.name = UA_STRING("each entry is incremented by the delta");
outputArgument.dataType = UA_TYPES[UA_TYPES_INT32].typeId;
outputArgument.valueRank = 1;
outputArgument.valueRank = UA_VALUERANK_ONE_DIMENSION;
UA_UInt32 pOutputDimension = 5;
outputArgument.arrayDimensionsSize = 1;
outputArgument.arrayDimensions = &pOutputDimension;

View File

@ -207,7 +207,7 @@ defineObjectTypes(UA_Server *server) {
UA_VariableAttributes statusAttr = UA_VariableAttributes_default;
statusAttr.displayName = UA_LOCALIZEDTEXT("en-US", "Status");
statusAttr.valueRank = -1;
statusAttr.valueRank = UA_VALUERANK_SCALAR;
UA_NodeId statusId;
UA_Server_addVariableNode(server, UA_NODEID_NULL, pumpTypeId,
UA_NODEID_NUMERIC(0, UA_NS0ID_HASCOMPONENT),
@ -220,7 +220,7 @@ defineObjectTypes(UA_Server *server) {
UA_VariableAttributes rpmAttr = UA_VariableAttributes_default;
rpmAttr.displayName = UA_LOCALIZEDTEXT("en-US", "MotorRPM");
rpmAttr.valueRank = -1;
rpmAttr.valueRank = UA_VALUERANK_SCALAR;
UA_Server_addVariableNode(server, UA_NODEID_NULL, pumpTypeId,
UA_NODEID_NUMERIC(0, UA_NS0ID_HASCOMPONENT),
UA_QUALIFIEDNAME(1, "MotorRPMs"),

View File

@ -27,7 +27,7 @@ static void
addVariableType2DPoint(UA_Server *server) {
UA_VariableTypeAttributes vtAttr = UA_VariableTypeAttributes_default;
vtAttr.dataType = UA_TYPES[UA_TYPES_DOUBLE].typeId;
vtAttr.valueRank = 1; /* array with one dimension */
vtAttr.valueRank = UA_VALUERANK_ONE_DIMENSION;
UA_UInt32 arrayDims[1] = {2};
vtAttr.arrayDimensions = arrayDims;
vtAttr.arrayDimensionsSize = 1;
@ -57,7 +57,7 @@ addVariable(UA_Server *server) {
/* Prepare the node attributes */
UA_VariableAttributes vAttr = UA_VariableAttributes_default;
vAttr.dataType = UA_TYPES[UA_TYPES_DOUBLE].typeId;
vAttr.valueRank = 1; /* array with one dimension */
vAttr.valueRank = UA_VALUERANK_ONE_DIMENSION;
UA_UInt32 arrayDims[1] = {2};
vAttr.arrayDimensions = arrayDims;
vAttr.arrayDimensionsSize = 1;
@ -84,7 +84,7 @@ addVariableFail(UA_Server *server) {
/* Prepare the node attributes */
UA_VariableAttributes vAttr = UA_VariableAttributes_default;
vAttr.dataType = UA_TYPES[UA_TYPES_DOUBLE].typeId;
vAttr.valueRank = -1; /* a scalar. this is not allowed per the variable type */
vAttr.valueRank = UA_VALUERANK_SCALAR; /* a scalar. this is not allowed per the variable type */
vAttr.displayName = UA_LOCALIZEDTEXT("en-US", "2DPoint Variable (fail)");
UA_String s = UA_STRING("2dpoint?");
UA_Variant_setScalar(&vAttr.value, &s, &UA_TYPES[UA_TYPES_STRING]);
@ -104,7 +104,7 @@ addVariableFail(UA_Server *server) {
static void
writeVariable(UA_Server *server) {
UA_StatusCode retval = UA_Server_writeValueRank(server, pointVariableId, 0);
UA_StatusCode retval = UA_Server_writeValueRank(server, pointVariableId, UA_VALUERANK_ONE_OR_MORE_DIMENSIONS);
UA_LOG_INFO(UA_Log_Stdout, UA_LOGCATEGORY_USERLAND,
"Setting the Value Rank failed with Status Code %s",
UA_StatusCode_name(retval));

View File

@ -96,6 +96,14 @@ typedef enum {
#define UA_WRITEMASK_WRITEMASK (0x01<<20)
#define UA_WRITEMASK_VALUEFORVARIABLETYPE (0x01<<21)
#define UA_VALUERANK_SCALAR_OR_ONE_DIMENSION -3
#define UA_VALUERANK_ANY -2
#define UA_VALUERANK_SCALAR -1
#define UA_VALUERANK_ONE_OR_MORE_DIMENSIONS 0
#define UA_VALUERANK_ONE_DIMENSION 1
#define UA_VALUERANK_TWO_DIMENSIONS 2
#define UA_VALUERANK_THREE_DIMENSIONS 3
_UA_END_DECLS
#endif /* UA_CONSTANTS_H_ */

View File

@ -162,7 +162,7 @@ UA_Server_createNS0_base(UA_Server *server) {
UA_VariableTypeAttributes basevar_attr = UA_VariableTypeAttributes_default;
basevar_attr.displayName = UA_LOCALIZEDTEXT("", "BaseVariableType");
basevar_attr.isAbstract = true;
basevar_attr.valueRank = -2;
basevar_attr.valueRank = UA_VALUERANK_ANY;
basevar_attr.dataType = UA_NODEID_NUMERIC(0, UA_NS0ID_BASEDATATYPE);
ret |= addNode_raw(server, UA_NODECLASS_VARIABLETYPE, UA_NS0ID_BASEVARIABLETYPE, "BaseVariableType",
&basevar_attr, &UA_TYPES[UA_TYPES_VARIABLETYPEATTRIBUTES]);
@ -170,7 +170,7 @@ UA_Server_createNS0_base(UA_Server *server) {
UA_VariableTypeAttributes bdv_attr = UA_VariableTypeAttributes_default;
bdv_attr.displayName = UA_LOCALIZEDTEXT("", "BaseDataVariableType");
bdv_attr.dataType = UA_NODEID_NUMERIC(0, UA_NS0ID_BASEDATATYPE);
bdv_attr.valueRank = -2;
bdv_attr.valueRank = UA_VALUERANK_ANY;
ret |= UA_Server_addVariableTypeNode(server, UA_NODEID_NUMERIC(0, UA_NS0ID_BASEDATAVARIABLETYPE),
UA_NODEID_NUMERIC(0, UA_NS0ID_BASEVARIABLETYPE),
UA_NODEID_NULL, UA_QUALIFIEDNAME(0, "BaseDataVariableType"),

View File

@ -400,7 +400,7 @@ const UA_VariableAttributes UA_VariableAttributes_default = {
0, NULL, 0, NULL}, /* value */
{0, UA_NODEIDTYPE_NUMERIC,
{UA_NS0ID_BASEDATATYPE}}, /* dataType */
-2, /* valueRank */
UA_VALUERANK_ANY, /* valueRank */
0, NULL, /* arrayDimensions */
UA_ACCESSLEVELMASK_READ, 0, /* accessLevel (userAccessLevel) */
0.0, /* minimumSamplingInterval */
@ -432,7 +432,7 @@ const UA_VariableTypeAttributes UA_VariableTypeAttributes_default = {
0, NULL, 0, NULL}, /* value */
{0, UA_NODEIDTYPE_NUMERIC,
{UA_NS0ID_BASEDATATYPE}}, /* dataType */
-2, /* valueRank */
UA_VALUERANK_ANY, /* valueRank */
0, NULL, /* arrayDimensions */
false /* isAbstract */
};

View File

@ -636,16 +636,16 @@ UA_Boolean
compatibleValueRankArrayDimensions(UA_Server *server, UA_Session *session,
UA_Int32 valueRank, size_t arrayDimensionsSize) {
/* ValueRank invalid */
if(valueRank < -3) {
if(valueRank < UA_VALUERANK_SCALAR_OR_ONE_DIMENSION) {
UA_LOG_INFO_SESSION(server->config.logger, session, "The ValueRank is invalid (< -3)");
return false;
}
/* case -3: the value can be a scalar or a one dimensional array */
/* case -2: the value can be a scalar or an array with any number of dimensions */
/* case -1: the value is a scalar */
/* case 0: the value is an array with one or more dimensions */
if(valueRank <= 0) {
/* case -3, UA_VALUERANK_SCALAR_OR_ONE_DIMENSION: the value can be a scalar or a one dimensional array */
/* case -2, UA_VALUERANK_ANY: the value can be a scalar or an array with any number of dimensions */
/* case -1, UA_VALUERANK_SCALAR: the value is a scalar */
/* case 0, UA_VALUERANK_ONE_OR_MORE_DIMENSIONS: the value is an array with one or more dimensions */
if(valueRank <= UA_VALUERANK_ONE_OR_MORE_DIMENSIONS) {
if(arrayDimensionsSize > 0) {
UA_LOG_INFO_SESSION(server->config.logger, session,
"No ArrayDimensions can be defined for a ValueRank <= 0");
@ -654,7 +654,7 @@ compatibleValueRankArrayDimensions(UA_Server *server, UA_Session *session,
return true;
}
/* case >= 1: the value is an array with the specified number of dimensions */
/* case >= 1, UA_VALUERANK_ONE_DIMENSION: the value is an array with the specified number of dimensions */
if(arrayDimensionsSize != (size_t)valueRank) {
UA_LOG_INFO_SESSION(server->config.logger, session,
"The number of ArrayDimensions is not equal to the (positive) ValueRank");
@ -667,18 +667,18 @@ UA_Boolean
compatibleValueRanks(UA_Int32 valueRank, UA_Int32 constraintValueRank) {
/* Check if the valuerank of the variabletype allows the change. */
switch(constraintValueRank) {
case -3: /* the value can be a scalar or a one dimensional array */
if(valueRank != -1 && valueRank != 1)
case UA_VALUERANK_SCALAR_OR_ONE_DIMENSION: /* the value can be a scalar or a one dimensional array */
if(valueRank != UA_VALUERANK_SCALAR && valueRank != UA_VALUERANK_ONE_DIMENSION)
return false;
break;
case -2: /* the value can be a scalar or an array with any number of dimensions */
case UA_VALUERANK_ANY: /* the value can be a scalar or an array with any number of dimensions */
break;
case -1: /* the value is a scalar */
if(valueRank != -1)
case UA_VALUERANK_SCALAR: /* the value is a scalar */
if(valueRank != UA_VALUERANK_SCALAR)
return false;
break;
case 0: /* the value is an array with one or more dimensions */
if(valueRank < (UA_Int32) 0)
case UA_VALUERANK_ONE_OR_MORE_DIMENSIONS: /* the value is an array with one or more dimensions */
if(valueRank < (UA_Int32) UA_VALUERANK_ONE_OR_MORE_DIMENSIONS)
return false;
break;
default: /* >= 1: the value is an array with the specified number of dimensions */
@ -695,7 +695,7 @@ compatibleValueRanks(UA_Int32 valueRank, UA_Int32 constraintValueRank) {
static UA_Boolean
compatibleValueRankValue(UA_Int32 valueRank, const UA_Variant *value) {
/* Invalid ValueRank */
if(valueRank < -3)
if(valueRank < UA_VALUERANK_SCALAR_OR_ONE_DIMENSION)
return false;
/* Empty arrays (-1) always match */
@ -709,17 +709,17 @@ compatibleValueRankValue(UA_Int32 valueRank, const UA_Variant *value) {
/* We cannot simply use compatibleValueRankArrayDimensions since we can have
* defined ArrayDimensions for the value if the ValueRank is -2 */
switch(valueRank) {
case -3: /* The value can be a scalar or a one dimensional array */
case UA_VALUERANK_SCALAR_OR_ONE_DIMENSION: /* The value can be a scalar or a one dimensional array */
return (arrayDims <= 1);
case -2: /* The value can be a scalar or an array with any number of dimensions */
case UA_VALUERANK_ANY: /* The value can be a scalar or an array with any number of dimensions */
return true;
case -1: /* The value is a scalar */
case UA_VALUERANK_SCALAR: /* The value is a scalar */
return (arrayDims == 0);
default:
break;
}
UA_assert(valueRank >= 0);
UA_assert(valueRank >= UA_VALUERANK_ONE_OR_MORE_DIMENSIONS);
/* case 0: the value is an array with one or more dimensions */
return (arrayDims == (UA_UInt32)valueRank);

View File

@ -1604,7 +1604,7 @@ UA_Server_addMethodNodeEx_finish(UA_Server *server, const UA_NodeId nodeId,
char *name = "InputArguments";
attr.displayName = UA_LOCALIZEDTEXT("", name);
attr.dataType = UA_TYPES[UA_TYPES_ARGUMENT].typeId;
attr.valueRank = 1;
attr.valueRank = UA_VALUERANK_ONE_DIMENSION;
UA_UInt32 inputArgsSize32 = (UA_UInt32)inputArgumentsSize;
attr.arrayDimensions = &inputArgsSize32;
attr.arrayDimensionsSize = 1;
@ -1623,7 +1623,7 @@ UA_Server_addMethodNodeEx_finish(UA_Server *server, const UA_NodeId nodeId,
char *name = "OutputArguments";
attr.displayName = UA_LOCALIZEDTEXT("", name);
attr.dataType = UA_TYPES[UA_TYPES_ARGUMENT].typeId;
attr.valueRank = 1;
attr.valueRank = UA_VALUERANK_ONE_DIMENSION;
UA_UInt32 outputArgsSize32 = (UA_UInt32)outputArgumentsSize;
attr.arrayDimensions = &outputArgsSize32;
attr.arrayDimensionsSize = 1;

View File

@ -130,7 +130,7 @@ START_TEST(Node_Add) {
{
UA_VariableTypeAttributes attr = UA_VariableTypeAttributes_default;
attr.dataType = UA_TYPES[UA_TYPES_INT32].typeId;
attr.valueRank = 1; /* array with one dimension */
attr.valueRank = UA_VALUERANK_ONE_DIMENSION;
UA_UInt32 arrayDims[1] = {2};
attr.arrayDimensions = arrayDims;
attr.arrayDimensionsSize = 1;
@ -167,7 +167,7 @@ START_TEST(Node_Add) {
UA_Int32 values[2] = {10, 20};
UA_Variant_setArray(&attr.value, values, 2, &UA_TYPES[UA_TYPES_INT32]);
attr.dataType = UA_TYPES[UA_TYPES_INT32].typeId;
attr.valueRank = 1; /* array with one dimension */
attr.valueRank = UA_VALUERANK_ONE_DIMENSION;
UA_UInt32 arrayDims[1] = {2};
attr.arrayDimensions = arrayDims;
attr.arrayDimensionsSize = 1;
@ -390,7 +390,7 @@ START_TEST(Node_AddReadWriteNodes) {
UA_Variant_setArray(&attr.value, values, 2, &UA_TYPES[UA_TYPES_INT32]);
attr.dataType = UA_TYPES[UA_TYPES_INT32].typeId;
attr.valueRank = 1; /* array with one dimension */
attr.valueRank = UA_VALUERANK_ONE_DIMENSION;
UA_UInt32 arrayDims[1] = {2};
attr.arrayDimensions = arrayDims;
attr.arrayDimensionsSize = 1;
@ -835,10 +835,10 @@ END_TEST
START_TEST(Node_ReadWrite_ValueRank) {
UA_Int32 valueRank = 0;
UA_Int32 valueRank = UA_VALUERANK_ONE_OR_MORE_DIMENSIONS;
UA_StatusCode retval = UA_Client_readValueRankAttribute(client, nodeReadWriteGeneric, &valueRank);
ck_assert_uint_eq(retval, UA_STATUSCODE_GOOD);
ck_assert_int_eq(valueRank, -2);
ck_assert_int_eq(valueRank, UA_VALUERANK_ANY);
// set the value to a scalar
UA_Double val = 0.0;
@ -848,7 +848,7 @@ START_TEST(Node_ReadWrite_ValueRank) {
ck_assert_uint_eq(retval, UA_STATUSCODE_GOOD);
// we want an array
UA_Int32 newValueRank = 1;
UA_Int32 newValueRank = UA_VALUERANK_ONE_DIMENSION;
// shall fail when the value is not compatible
retval = UA_Client_writeValueRankAttribute(client, nodeReadWriteGeneric, &newValueRank);

View File

@ -74,7 +74,7 @@ START_TEST(Nodes_createCustomStateType)
attr.minimumSamplingInterval = 0.000000;
attr.userAccessLevel = 1;
attr.accessLevel = 1;
attr.valueRank = -2;
attr.valueRank = UA_VALUERANK_ANY;
attr.dataType = UA_NODEID_NUMERIC(0, UA_NS0ID_UINT32);
UA_UInt32 val = 0;
UA_Variant_setScalar(&attr.value, &val, &UA_TYPES[UA_TYPES_UINT32]);

View File

@ -50,7 +50,7 @@ static void setup(void) {
UA_Variant_setScalar(&vattr.value, &myInteger, &UA_TYPES[UA_TYPES_INT32]);
vattr.description = UA_LOCALIZEDTEXT("locale","the answer");
vattr.displayName = UA_LOCALIZEDTEXT("locale","the answer");
vattr.valueRank = -2;
vattr.valueRank = UA_VALUERANK_ANY;
UA_QualifiedName myIntegerName = UA_QUALIFIEDNAME(1, "the answer");
UA_NodeId myIntegerNodeId = UA_NODEID_STRING(1, "the.answer");
UA_NodeId parentNodeId = UA_NODEID_NUMERIC(0, UA_NS0ID_OBJECTSFOLDER);
@ -81,7 +81,7 @@ static void setup(void) {
vattr = UA_VariableAttributes_default;
UA_Int32 myIntegerArray[9] = {1,2,3,4,5,6,7,8,9};
UA_Variant_setArray(&vattr.value, &myIntegerArray, 9, &UA_TYPES[UA_TYPES_INT32]);
vattr.valueRank = -2;
vattr.valueRank = UA_VALUERANK_ANY;
UA_UInt32 myIntegerDimensions[2] = {3,3};
vattr.value.arrayDimensions = myIntegerDimensions;
vattr.value.arrayDimensionsSize = 2;

View File

@ -61,7 +61,7 @@ START_TEST(AddVariableNode) {
START_TEST(InstantiateVariableTypeNode) {
UA_VariableTypeAttributes vtAttr = UA_VariableTypeAttributes_default;
vtAttr.dataType = UA_TYPES[UA_TYPES_DOUBLE].typeId;
vtAttr.valueRank = 1; /* array with one dimension */
vtAttr.valueRank = UA_VALUERANK_ONE_DIMENSION;
UA_UInt32 arrayDims[1] = {2};
vtAttr.arrayDimensions = arrayDims;
vtAttr.arrayDimensionsSize = 1;
@ -83,7 +83,7 @@ START_TEST(InstantiateVariableTypeNode) {
/* Prepare the node attributes */
UA_VariableAttributes vAttr = UA_VariableAttributes_default;
vAttr.dataType = UA_TYPES[UA_TYPES_DOUBLE].typeId;
vAttr.valueRank = 1; /* array with one dimension */
vAttr.valueRank = UA_VALUERANK_ONE_DIMENSION;
vAttr.arrayDimensions = arrayDims;
vAttr.arrayDimensionsSize = 1;
vAttr.displayName = UA_LOCALIZEDTEXT("en-US", "2DPoint Variable");
@ -365,7 +365,7 @@ START_TEST(InstantiateObjectType) {
UA_VariableAttributes statusAttr = UA_VariableAttributes_default;
statusAttr.displayName = UA_LOCALIZEDTEXT("en-US", "Status");
statusAttr.valueRank = -1;
statusAttr.valueRank = UA_VALUERANK_SCALAR;
UA_NodeId statusId;
retval = UA_Server_addVariableNode(server, UA_NODEID_NULL, pumpTypeId,
UA_NODEID_NUMERIC(0, UA_NS0ID_HASCOMPONENT),
@ -382,7 +382,7 @@ START_TEST(InstantiateObjectType) {
UA_VariableAttributes rpmAttr = UA_VariableAttributes_default;
rpmAttr.displayName = UA_LOCALIZEDTEXT("en-US", "MotorRPM");
rpmAttr.valueRank = -1;
rpmAttr.valueRank = UA_VALUERANK_SCALAR;
retval = UA_Server_addVariableNode(server, UA_NODEID_NULL, pumpTypeId,
UA_NODEID_NUMERIC(0, UA_NS0ID_HASCOMPONENT),
UA_QUALIFIEDNAME(1, "MotorRPMs"),