diff --git a/examples/mms_utility/mms_utility.c b/examples/mms_utility/mms_utility.c index 56ca03bd..2feeee87 100644 --- a/examples/mms_utility/mms_utility.c +++ b/examples/mms_utility/mms_utility.c @@ -30,17 +30,17 @@ print_help() } static void -mmsFileDirectoryHandler (void* parameter, char* filename, uint32_t size, uint64_t lastModified) +mmsFileDirectoryHandler(void* parameter, char* filename, uint32_t size, uint64_t lastModified) { char* lastName = (char*) parameter; - strcpy (lastName, filename); + strcpy(lastName, filename); printf("%s\n", filename); } static void -mmsGetFileAttributeHandler (void* parameter, char* filename, uint32_t size, uint64_t lastModified) +mmsGetFileAttributeHandler(void* parameter, char* filename, uint32_t size, uint64_t lastModified) { char gtString[30]; Conversions_msTimeToGeneralizedTime(lastModified, (uint8_t*) gtString); @@ -99,142 +99,144 @@ printRawMmsMessage(void* parameter, uint8_t* message, int messageLength, bool re printf("\n"); } -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; - char* componentName = NULL; - char* filename = NULL; - char* journalName = NULL; - - int readDeviceList = 0; - int getDeviceDirectory = 0; - int identifyDevice = 0; - int readWriteHasDomain = 0; - int readVariable = 0; - int showFileList = 0; - int getFileAttributes = 0; - int readJournal = 0; - int printRawMmsMessages = 0; - int deleteFile = 0; - int readVariableList = 0; - - int c; - - while ((c = getopt(argc, argv, "mifdh:p:l:t:a:r:g:j:x:v:c:y:")) != -1) - switch (c) { - case 'm': - printRawMmsMessages = 1; - break; - - case 'h': - hostname = StringUtils_copyString(optarg); - break; - case 'p': - tcpPort = atoi(optarg); - break; - case 'l': - maxPduSize = atoi(optarg); - break; - case 'd': - readDeviceList = 1; - break; - case 'i': - identifyDevice = 1; - break; - case 't': - getDeviceDirectory = 1; - domainName = StringUtils_copyString(optarg); - break; - case 'a': - readWriteHasDomain = 1; - domainName = StringUtils_copyString(optarg); - break; - case 'r': - readVariable = 1; - variableName = StringUtils_copyString(optarg); - break; - case 'c': - componentName = StringUtils_copyString(optarg); - break; - case 'v': - readVariableList = 1; - variableName = StringUtils_copyString(optarg); +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; + char* componentName = NULL; + char* filename = NULL; + char* journalName = NULL; + + int readDeviceList = 0; + int getDeviceDirectory = 0; + int identifyDevice = 0; + int readWriteHasDomain = 0; + int readVariable = 0; + int showFileList = 0; + int getFileAttributes = 0; + int readJournal = 0; + int printRawMmsMessages = 0; + int deleteFile = 0; + int readVariableList = 0; + + int c; + + while ((c = getopt(argc, argv, "mifdh:p:l:t:a:r:g:j:x:v:c:y:")) != -1) + switch (c) { + case 'm': + printRawMmsMessages = 1; + break; + + case 'h': + free(hostname); + hostname = StringUtils_copyString(optarg); + break; + case 'p': + tcpPort = atoi(optarg); + break; + case 'l': + maxPduSize = atoi(optarg); + break; + case 'd': + readDeviceList = 1; + break; + case 'i': + identifyDevice = 1; + break; + case 't': + getDeviceDirectory = 1; + domainName = StringUtils_copyString(optarg); + break; + case 'a': + readWriteHasDomain = 1; + domainName = StringUtils_copyString(optarg); + break; + case 'r': + readVariable = 1; + variableName = StringUtils_copyString(optarg); + break; + case 'c': + componentName = StringUtils_copyString(optarg); + break; + case 'v': + readVariableList = 1; + variableName = StringUtils_copyString(optarg); + break; + case 'f': + showFileList = 1; + break; + case 'g': + getFileAttributes = 1; + filename = StringUtils_copyString(optarg); + break; + case 'x': + deleteFile = 1; + filename = StringUtils_copyString(optarg); + break; + + case 'j': + readJournal = 1; + journalName = StringUtils_copyString(optarg); break; - case 'f': - showFileList = 1; - break; - case 'g': - getFileAttributes = 1; - filename = StringUtils_copyString(optarg); - break; - case 'x': - deleteFile = 1; - filename = StringUtils_copyString(optarg); - break; - - case 'j': - readJournal = 1; - journalName = StringUtils_copyString(optarg); - break; - - case 'y': - arrayIndex = atoi(optarg); - break; - - default: - print_help(); - return 0; - } - - MmsConnection con = MmsConnection_create(); - - MmsError error; - - /* Set maximum MMS PDU size (local detail) to 2000 byte */ - MmsConnection_setLocalDetail(con, maxPduSize); - - if (printRawMmsMessages) - MmsConnection_setRawMessageHandler(con, (MmsRawMessageHandler) printRawMmsMessage, NULL); - - if (!MmsConnection_connect(con, &error, hostname, tcpPort)) { - printf("MMS connect failed!\n"); - goto exit; - } - else - printf("MMS connected.\n"); - - if (identifyDevice) { - MmsServerIdentity* identity = - MmsConnection_identify(con, &error); - - if (identity != NULL) { - printf("\nServer identity:\n----------------\n"); - printf(" vendor:\t%s\n", identity->vendorName); - printf(" model:\t%s\n", identity->modelName); - printf(" revision:\t%s\n", identity->revision); - } - else - printf("Reading server identity failed!\n"); - } - - if (readDeviceList) { - printf("\nDomains present on server:\n--------------------------\n"); - LinkedList nameList = MmsConnection_getDomainNames(con, &error); - LinkedList_printStringList(nameList); - LinkedList_destroy(nameList); - } - - if (getDeviceDirectory) { - LinkedList variableList = MmsConnection_getDomainVariableNames(con, &error, - domainName); - - if (variableList) { + + case 'y': + arrayIndex = atoi(optarg); + break; + + default: + print_help(); + return 0; + } + + MmsConnection con = MmsConnection_create(); + + MmsError error; + + /* Set maximum MMS PDU size (local detail) to 2000 byte */ + MmsConnection_setLocalDetail(con, maxPduSize); + + if (printRawMmsMessages) + MmsConnection_setRawMessageHandler(con, (MmsRawMessageHandler) printRawMmsMessage, NULL); + + if (!MmsConnection_connect(con, &error, hostname, tcpPort)) { + printf("MMS connect failed!\n"); + goto exit; + } + else + printf("MMS connected.\n"); + + if (identifyDevice) { + MmsServerIdentity* identity = + MmsConnection_identify(con, &error); + + if (identity != NULL) { + printf("\nServer identity:\n----------------\n"); + printf(" vendor:\t%s\n", identity->vendorName); + printf(" model:\t%s\n", identity->modelName); + printf(" revision:\t%s\n", identity->revision); + } + else + printf("Reading server identity failed!\n"); + } + + if (readDeviceList) { + printf("\nDomains present on server:\n--------------------------\n"); + LinkedList nameList = MmsConnection_getDomainNames(con, &error); + LinkedList_printStringList(nameList); + LinkedList_destroy(nameList); + } + + if (getDeviceDirectory) { + LinkedList variableList = MmsConnection_getDomainVariableNames(con, &error, + domainName); + + if (variableList) { LinkedList element = LinkedList_getNext(variableList); printf("\nMMS domain variables for domain %s\n", domainName); @@ -248,14 +250,14 @@ int main(int argc, char** argv) { } LinkedList_destroy(variableList); - } - else { - printf("\nFailed to read domain directory (error=%d)\n", error); - } + } + else { + printf("\nFailed to read domain directory (error=%d)\n", error); + } - variableList = MmsConnection_getDomainJournals(con, &error, domainName); + variableList = MmsConnection_getDomainJournals(con, &error, domainName); - if (variableList) { + if (variableList) { LinkedList element = variableList; @@ -268,21 +270,21 @@ int main(int argc, char** argv) { } LinkedList_destroy(variableList); - } + } else { printf("\nFailed to read domain journals (error=%d)\n", error); } - } + } - if (readJournal) { + if (readJournal) { - printf(" read journal %s...\n", journalName); + printf(" read journal %s...\n", journalName); - char* logDomain = journalName; - char* logName = strchr(journalName, '/'); + char* logDomain = journalName; + char* logName = strchr(journalName, '/'); - if (logName != NULL) { + if (logName != NULL) { logName[0] = 0; logName++; @@ -334,44 +336,43 @@ int main(int argc, char** argv) { readNext = true; } - } while ((moreFollows == true) || (readNext == true)); + } + while ((moreFollows == true) || (readNext == true)); + } + } + else + printf(" Invalid log name!\n"); + } + + if (readVariable) { + if (readWriteHasDomain) { + + MmsValue* result; + + 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); } - } - else - printf(" Invalid log name!\n"); - } - - if (readVariable) { - if (readWriteHasDomain) { - - MmsValue* result; - - 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); - } - else { - printf("Read SUCCESS\n"); - - - if (result != NULL) { + else { + printf("Read SUCCESS\n"); + + if (result != NULL) { char outbuf[1024]; MmsValue_printToBuffer(result, outbuf, 1024); @@ -379,17 +380,17 @@ int main(int argc, char** argv) { printf("%s\n", outbuf); MmsValue_delete(result); - } - else - printf("result: NULL\n"); - } + } + else + printf("result: NULL\n"); + } - } - else - printf("Reading VMD scope variable not yet supported!\n"); - } + } + else + printf("Reading VMD scope variable not yet supported!\n"); + } - if (readVariableList) { + if (readVariableList) { if (readWriteHasDomain) { MmsValue* variables = MmsConnection_readNamedVariableListValues(con, &error, domainName, variableName, true); @@ -402,25 +403,25 @@ int main(int argc, char** argv) { } else printf("Reading VMD scope variable list not yet supported!\n"); - } + } - if (showFileList) { - char lastName[300]; - lastName[0] = 0; + if (showFileList) { + char lastName[300]; + lastName[0] = 0; - char* continueAfter = NULL; + char* continueAfter = NULL; - while (MmsConnection_getFileDirectory(con, &error, "", continueAfter, mmsFileDirectoryHandler, lastName)) { - continueAfter = lastName; - } - } + while (MmsConnection_getFileDirectory(con, &error, "", continueAfter, mmsFileDirectoryHandler, lastName)) { + continueAfter = lastName; + } + } - if (getFileAttributes) { - MmsConnection_getFileDirectory(con, &error, filename, NULL, mmsGetFileAttributeHandler, NULL); - } + if (getFileAttributes) { + MmsConnection_getFileDirectory(con, &error, filename, NULL, mmsGetFileAttributeHandler, NULL); + } - if (deleteFile) { - MmsConnection_fileDelete(con, &error, filename); + if (deleteFile) { + MmsConnection_fileDelete(con, &error, filename); if (error != MMS_ERROR_NONE) { printf("Delete file failed: (ERROR %i)\n", error); @@ -428,15 +429,15 @@ int main(int argc, char** argv) { else { printf("File deleted\n"); } - } + } -exit: - free(hostname); - free(domainName); - free(variableName); - free(journalName); - free(componentName); + exit: + free(hostname); + free(domainName); + free(variableName); + free(journalName); + free(componentName); - MmsConnection_destroy(con); + MmsConnection_destroy(con); }