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;