diff --git a/examples/mms_utility/mms_utility.c b/examples/mms_utility/mms_utility.c index ee658622..8b43d9d7 100644 --- a/examples/mms_utility/mms_utility.c +++ b/examples/mms_utility/mms_utility.c @@ -24,6 +24,7 @@ print_help() printf("-x delete file\n"); printf("-j read journal\n"); printf("-v read domain variable list\n"); + printf("-z get domain variable list directory\n"); printf("-y array index for read access\n"); printf("-m print raw MMS messages\n"); } @@ -123,10 +124,11 @@ int main(int argc, char** argv) int printRawMmsMessages = 0; int deleteFile = 0; int readVariableList = 0; + int readDataSetDirectory = 0; int c; - while ((c = getopt(argc, argv, "mifdh:p:l:t:a:r:g:j:x:v:c:y:")) != -1) + while ((c = getopt(argc, argv, "mifdh:p:l:t:a:r:g:j:x:v:c:y:z:")) != -1) { switch (c) { case 'm': printRawMmsMessages = 1; @@ -167,6 +169,11 @@ int main(int argc, char** argv) readVariableList = 1; variableName = StringUtils_copyString(optarg); break; + case 'z': + readDataSetDirectory = 1; + variableName = StringUtils_copyString(optarg); + break; + case 'f': showFileList = 1; break; @@ -192,12 +199,13 @@ int main(int argc, char** argv) print_help(); return 0; } + } MmsConnection con = MmsConnection_create(); MmsError error; - /* Set maximum MMS PDU size (local detail) to 2000 byte */ + /* Set maximum MMS PDU size (local detail) */ MmsConnection_setLocalDetail(con, maxPduSize); if (printRawMmsMessages) @@ -404,6 +412,41 @@ int main(int argc, char** argv) printf("Reading VMD scope variable list not yet supported!\n"); } + if (readDataSetDirectory) { + if (readWriteHasDomain) { + + bool deletable = false; + + LinkedList varListDir = MmsConnection_readNamedVariableListDirectory(con, &error, domainName, variableName, &deletable); + + if (error != MMS_ERROR_NONE) { + printf("Reading variable list directory failed: (ERROR %i)\n", error); + } + else { + LinkedList varListElem = LinkedList_getNext(varListDir); + + int listIdx = 0; + + while (varListElem) { + MmsVariableAccessSpecification* varAccessSpec = (MmsVariableAccessSpecification*)LinkedList_getData(varListElem); + + if (varAccessSpec->arrayIndex) + printf("[%i] %s/%s(%i)%s\n", listIdx, varAccessSpec->domainId, varAccessSpec->itemId, varAccessSpec->arrayIndex, varAccessSpec->componentName == NULL ? "" : varAccessSpec->componentName); + else + printf("[%i] %s/%s\n", listIdx, varAccessSpec->domainId, varAccessSpec->itemId); + + listIdx++; + + varListElem = LinkedList_getNext(varListElem); + } + + printf("Read SUCCESS\n"); + } + } + else + printf("Reading VMD scope variable list not yet supported!\n"); + } + if (showFileList) { char lastName[300]; lastName[0] = 0;