From 19f7066c38b8074d0f8dbaba93566094ed9687a4 Mon Sep 17 00:00:00 2001 From: Michael Zillgith Date: Tue, 12 Apr 2022 09:07:59 +0200 Subject: [PATCH] - fixed - SV publisher encoding problem when svID or datset length > 127 bytes (LIB61850-315)(#382) --- src/sampled_values/sv_publisher.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/sampled_values/sv_publisher.c b/src/sampled_values/sv_publisher.c index e15b2431..9b692bea 100644 --- a/src/sampled_values/sv_publisher.c +++ b/src/sampled_values/sv_publisher.c @@ -320,11 +320,14 @@ SVPublisher_ASDU_getEncodedSize(SVPublisher_ASDU self) int encodedSize = 0; /* svID */ - encodedSize += ( 2 + strlen(self->svID) ); + int svIdLen = strlen(self->svID); + encodedSize += (1 + BerEncoder_determineLengthSize(svIdLen) + svIdLen); /* datset */ - if (self->datset != NULL) - encodedSize += ( 2 + strlen(self->datset) ); + if (self->datset != NULL) { + int datSetLen = strlen(self->datset); + encodedSize += (1 + BerEncoder_determineLengthSize(datSetLen) + datSetLen); + } /* smpCnt */ encodedSize += 4;