mirror of
https://github.com/open62541/open62541.git
synced 2025-06-03 04:00:21 +00:00
Replace ValueRanks by defines (#2124)
* Replace ValueRanks by defines * Update tests/client/check_client_highlevel.c
This commit is contained in:
parent
271c944049
commit
4b9cb3c034
@ -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"),
|
||||
|
@ -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),
|
||||
|
@ -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;
|
||||
|
@ -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"),
|
||||
|
@ -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));
|
||||
|
@ -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_ */
|
||||
|
@ -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"),
|
||||
|
@ -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 */
|
||||
};
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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]);
|
||||
|
@ -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;
|
||||
|
@ -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"),
|
||||
|
Loading…
Reference in New Issue
Block a user