diff --git a/examples/mms_utility/mms_utility.c b/examples/mms_utility/mms_utility.c index 8eec1c92..cb21460c 100644 --- a/examples/mms_utility/mms_utility.c +++ b/examples/mms_utility/mms_utility.c @@ -25,6 +25,7 @@ print_help() printf("-x delete file\n"); printf("-j read journal\n"); printf("-v read domain variable list\n"); + printf("-y array index for read access\n"); printf("-m print raw MMS messages\n"); } @@ -103,6 +104,7 @@ int main(int argc, char** argv) { char* hostname = StringUtils_copyString("localhost"); int tcpPort = 102; int maxPduSize = 65000; + int arrayIndex = -1; char* domainName = NULL; char* variableName = NULL; @@ -124,7 +126,7 @@ int main(int argc, char** argv) { int c; - while ((c = getopt(argc, argv, "mifdh:p:l:t:a:r:g:j:x:v:c:")) != -1) + while ((c = getopt(argc, argv, "mifdh:p:l:t:a:r:g:j:x:v:c:y:")) != -1) switch (c) { case 'm': printRawMmsMessages = 1; @@ -181,6 +183,10 @@ int main(int argc, char** argv) { journalName = StringUtils_copyString(optarg); break; + case 'y': + arrayIndex = atoi(optarg); + break; + default: print_help(); return 0; @@ -340,10 +346,23 @@ int main(int argc, char** argv) { MmsValue* result; - if (componentName == NULL) - result = MmsConnection_readVariable(con, &error, domainName, variableName); - else - result = MmsConnection_readVariableComponent(con, &error, domainName, variableName, componentName); + if (componentName == NULL) { + if (arrayIndex == -1) { + result = MmsConnection_readVariable(con, &error, domainName, variableName); + } + else { + result = MmsConnection_readSingleArrayElementWithComponent(con, &error, domainName, variableName, arrayIndex, NULL); + } + } + else { + if (arrayIndex == -1) { + result = MmsConnection_readVariableComponent(con, &error, domainName, variableName, componentName); + } + else { + result = MmsConnection_readSingleArrayElementWithComponent(con, &error, domainName, variableName, arrayIndex, componentName); + } + } + if (error != MMS_ERROR_NONE) { printf("Reading variable failed: (ERROR %i)\n", error);