- MMS server: read service - return data access error for component access to simple variable

pull/147/head
Michael Zillgith 7 years ago
parent 9973ea165f
commit 445dfe2667

@ -337,22 +337,23 @@ static void
addNamedVariableToResultList(MmsVariableSpecification* namedVariable, MmsDomain* domain, char* nameIdStr, addNamedVariableToResultList(MmsVariableSpecification* namedVariable, MmsDomain* domain, char* nameIdStr,
LinkedList /*<MmsValue>*/ values, MmsServerConnection connection, AlternateAccess_t* alternateAccess) LinkedList /*<MmsValue>*/ values, MmsServerConnection connection, AlternateAccess_t* alternateAccess)
{ {
if (namedVariable != NULL) { if (namedVariable != NULL) {
if (DEBUG_MMS_SERVER) printf("MMS read: found named variable %s with search string %s\n", if (DEBUG_MMS_SERVER)
namedVariable->name, nameIdStr); printf("MMS read: found named variable %s with search string %s\n",
namedVariable->name, nameIdStr);
if (namedVariable->type == MMS_STRUCTURE) { if (namedVariable->type == MMS_STRUCTURE) {
MmsValue* value = mmsServer_getValue(connection->server, domain, nameIdStr, connection); MmsValue* value = mmsServer_getValue(connection->server, domain, nameIdStr, connection);
if (alternateAccess != NULL) { if (alternateAccess != NULL) {
char variableName[200]; char variableName[200];
variableName[0] = 0; variableName[0] = 0;
strcat(variableName, nameIdStr); strcat(variableName, nameIdStr);
value = getComponent(connection, domain, alternateAccess, namedVariable, variableName); value = getComponent(connection, domain, alternateAccess, namedVariable, variableName);
if (value != NULL) { if (value != NULL) {
appendValueToResultList(value, values); appendValueToResultList(value, values);
@ -360,44 +361,49 @@ addNamedVariableToResultList(MmsVariableSpecification* namedVariable, MmsDomain*
else { else {
appendErrorToResultList(values, DATA_ACCESS_ERROR_OBJECT_NONE_EXISTENT); appendErrorToResultList(values, DATA_ACCESS_ERROR_OBJECT_NONE_EXISTENT);
} }
} }
else { else {
if (value != NULL) { if (value != NULL) {
appendValueToResultList(value, values); appendValueToResultList(value, values);
} }
else { else {
addComplexValueToResultList(namedVariable, addComplexValueToResultList(namedVariable,
values, connection, domain, nameIdStr); values, connection, domain, nameIdStr);
} }
} }
} }
else if (namedVariable->type == MMS_ARRAY) { else if (namedVariable->type == MMS_ARRAY) {
if (alternateAccess != NULL) { if (alternateAccess != NULL) {
alternateArrayAccess(connection, alternateAccess, domain, alternateArrayAccess(connection, alternateAccess, domain,
nameIdStr, values, namedVariable); nameIdStr, values, namedVariable);
} }
else { /* return complete array */ else { /* return complete array */
MmsValue* value = mmsServer_getValue(connection->server, domain, nameIdStr, connection); MmsValue* value = mmsServer_getValue(connection->server, domain, nameIdStr, connection);
appendValueToResultList(value, values); appendValueToResultList(value, values);
} }
} }
else { else {
MmsValue* value = mmsServer_getValue(connection->server, domain, nameIdStr, connection);
if (value == NULL) { if (alternateAccess != NULL) {
if (DEBUG_MMS_SERVER) appendErrorToResultList(values, DATA_ACCESS_ERROR_OBJECT_NONE_EXISTENT);
printf("MMS read: value of known variable is not found. Maybe illegal access to array element!\n"); }
else {
MmsValue* value = mmsServer_getValue(connection->server, domain, nameIdStr, connection);
appendErrorToResultList(values, DATA_ACCESS_ERROR_OBJECT_NONE_EXISTENT); if (value == NULL) {
} if (DEBUG_MMS_SERVER)
else printf("MMS read: value of known variable is not found. Maybe illegal access to array element!\n");
appendValueToResultList(value, values);
}
} appendErrorToResultList(values, DATA_ACCESS_ERROR_OBJECT_NONE_EXISTENT);
else }
appendErrorToResultList(values, DATA_ACCESS_ERROR_OBJECT_NONE_EXISTENT); else
appendValueToResultList(value, values);
}
}
}
else
appendErrorToResultList(values, DATA_ACCESS_ERROR_OBJECT_NONE_EXISTENT);
} }

Loading…
Cancel
Save