diff --git a/examples/server_example3/simpleIO_direct_control.icd b/examples/server_example3/simpleIO_direct_control.icd index aeb779a..df5636b 100644 --- a/examples/server_example3/simpleIO_direct_control.icd +++ b/examples/server_example3/simpleIO_direct_control.icd @@ -65,7 +65,7 @@ - + diff --git a/examples/server_example3/static_model.c b/examples/server_example3/static_model.c index d302aeb..9208a9f 100644 --- a/examples/server_example3/static_model.c +++ b/examples/server_example3/static_model.c @@ -1944,7 +1944,7 @@ extern ReportControlBlock iedModel_GenericIO_LLN0_report4; extern ReportControlBlock iedModel_GenericIO_LLN0_report5; extern ReportControlBlock iedModel_GenericIO_LLN0_report6; -ReportControlBlock iedModel_GenericIO_LLN0_report0 = {&iedModel_GenericIO_LLN0, "EventsRCB01", "Events1", false, "Events", 1, 8, 111, 50, 1000, &iedModel_GenericIO_LLN0_report1}; +ReportControlBlock iedModel_GenericIO_LLN0_report0 = {&iedModel_GenericIO_LLN0, "EventsRCB01", "Events1", false, "Events", 4294967295, 8, 111, 50, 1000, &iedModel_GenericIO_LLN0_report1}; ReportControlBlock iedModel_GenericIO_LLN0_report1 = {&iedModel_GenericIO_LLN0, "EventsIndexed01", "Events2", false, "Events", 1, 8, 111, 50, 1000, &iedModel_GenericIO_LLN0_report2}; ReportControlBlock iedModel_GenericIO_LLN0_report2 = {&iedModel_GenericIO_LLN0, "EventsIndexed02", "Events2", false, "Events", 1, 8, 111, 50, 1000, &iedModel_GenericIO_LLN0_report3}; ReportControlBlock iedModel_GenericIO_LLN0_report3 = {&iedModel_GenericIO_LLN0, "EventsIndexed03", "Events2", false, "Events", 1, 8, 111, 50, 1000, &iedModel_GenericIO_LLN0_report4}; diff --git a/src/mms/asn1/ber_encoder.c b/src/mms/asn1/ber_encoder.c index db09322..35953c6 100644 --- a/src/mms/asn1/ber_encoder.c +++ b/src/mms/asn1/ber_encoder.c @@ -187,6 +187,7 @@ BerEncoder_revertByteOrder(uint8_t* octets, const int size) int BerEncoder_compressInteger(uint8_t* integer, int originalSize) { + uint8_t* integerEnd = integer + originalSize - 1; uint8_t* bytePosition; diff --git a/src/mms/asn1/ber_integer.c b/src/mms/asn1/ber_integer.c index 0ec626a..2d060ce 100644 --- a/src/mms/asn1/ber_integer.c +++ b/src/mms/asn1/ber_integer.c @@ -46,7 +46,7 @@ setIntegerValue(Asn1PrimitiveValue* self, uint8_t* valueBuffer, int bufferSize) Asn1PrimitiveValue* BerInteger_createInt32() { - return Asn1PrimitiveValue_create(4); + return Asn1PrimitiveValue_create(5); } Asn1PrimitiveValue* @@ -124,7 +124,16 @@ BerInteger_setUint32(Asn1PrimitiveValue* self, uint32_t value) uint32_t valueCopy = value; uint8_t* valueBuffer = (uint8_t*) &valueCopy; - return setIntegerValue(self, valueBuffer, sizeof(value)); + uint8_t byteBuffer[5]; + byteBuffer[4] = 0; + + + int i; + for (i = 0; i < 4; i++) { + byteBuffer[i] = valueBuffer[i]; + } + + return setIntegerValue(self, byteBuffer, 5); } Asn1PrimitiveValue* @@ -139,7 +148,7 @@ BerInteger_createFromUint32(uint32_t value) Asn1PrimitiveValue* BerInteger_createInt64() { - return Asn1PrimitiveValue_create(64); + return Asn1PrimitiveValue_create(9); } int @@ -184,7 +193,7 @@ BerInteger_toInt32(Asn1PrimitiveValue* self, int32_t* nativeValue) int /* 1 - if conversion is possible, 0 - out of range */ BerInteger_toUint32(Asn1PrimitiveValue* self, uint32_t* nativeValue) { - if (self->size < 5) { + if (self->size < 6) { uint8_t* buf = self->octets; int i;