diff --git a/config/stack_config.h b/config/stack_config.h index c11d32f..770353c 100644 --- a/config/stack_config.h +++ b/config/stack_config.h @@ -28,7 +28,7 @@ #define DEBUG_HAL_ETHERNET 0 /* Maximum MMS PDU SIZE - default is 65000 */ -#define CONFIG_MMS_MAXIMUM_PDU_SIZE 65000 +#define CONFIG_MMS_MAXIMUM_PDU_SIZE 120000 /* * Enable single threaded mode diff --git a/examples/mms_utility/mms_utility.c b/examples/mms_utility/mms_utility.c index e2511c6..d6c537b 100644 --- a/examples/mms_utility/mms_utility.c +++ b/examples/mms_utility/mms_utility.c @@ -23,6 +23,7 @@ print_help() printf("-g get file attributes\n"); printf("-x delete file\n"); printf("-j read journal\n"); + printf("-v read domain variable list\n"); printf("-m print raw MMS messages\n"); } @@ -117,10 +118,11 @@ int main(int argc, char** argv) { 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:")) != -1) + while ((c = getopt(argc, argv, "mifdh:p:l:t:a:r:g:j:x:v:")) != -1) switch (c) { case 'm': printRawMmsMessages = 1; @@ -153,6 +155,10 @@ int main(int argc, char** argv) { readVariable = 1; variableName = StringUtils_copyString(optarg); break; + case 'v': + readVariableList = 1; + variableName = StringUtils_copyString(optarg); + break; case 'f': showFileList = 1; break; @@ -342,6 +348,21 @@ int main(int argc, char** argv) { printf("Reading VMD scope variable not yet supported!\n"); } + if (readVariableList) { + if (readWriteHasDomain) { + MmsValue* variables = MmsConnection_readNamedVariableListValues(con, &error, domainName, variableName, true); + + if (error != MMS_ERROR_NONE) { + printf("Reading variable failed: (ERROR %i)\n", error); + } + else { + printf("Read SUCCESS\n"); + } + } + else + printf("Reading VMD scope variable list not yet supported!\n"); + } + if (showFileList) { char lastName[300]; lastName[0] = 0; diff --git a/src/mms/asn1/ber_encoder.c b/src/mms/asn1/ber_encoder.c index 49c9b67..2417c1f 100644 --- a/src/mms/asn1/ber_encoder.c +++ b/src/mms/asn1/ber_encoder.c @@ -34,12 +34,19 @@ BerEncoder_encodeLength(uint32_t length, uint8_t* buffer, int bufPos) buffer[bufPos++] = 0x81; buffer[bufPos++] = (uint8_t) length; } - else { + else if (length < 65535) { buffer[bufPos++] = 0x82; buffer[bufPos++] = length / 256; buffer[bufPos++] = length % 256; } + else { + buffer[bufPos++] = 0x83; + + buffer[bufPos++] = length / 0x10000; + buffer[bufPos++] = (length & 0xffff) / 0x100; + buffer[bufPos++] = length % 256; + } return bufPos; } @@ -362,8 +369,10 @@ BerEncoder_determineLengthSize(uint32_t length) return 1; if (length < 256) return 2; - else + if (length < 65536) return 3; + else + return 4; } int diff --git a/src/mms/iso_mms/server/mms_server_connection.c b/src/mms/iso_mms/server/mms_server_connection.c index 494a606..fabc621 100644 --- a/src/mms/iso_mms/server/mms_server_connection.c +++ b/src/mms/iso_mms/server/mms_server_connection.c @@ -252,8 +252,6 @@ handleConfirmedErrorPdu( uint32_t invokeId; MmsServiceError serviceError; - - if (mmsMsg_parseConfirmedErrorPDU(buffer, bufPos, maxBufPos, &invokeId, &serviceError)) { if (DEBUG_MMS_SERVER) diff --git a/tools/model_generator/modelviewer.jar b/tools/model_generator/modelviewer.jar index 9beb17f..4c6360d 100644 Binary files a/tools/model_generator/modelviewer.jar and b/tools/model_generator/modelviewer.jar differ