From 10f0d843497b5e4fbd51e07e9dde9f9720d8542d Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Wed, 6 Dec 2017 15:42:23 +0800 Subject: [PATCH] sv: smpRate is an optional ASDU attribute. We shall only encode it if it was set before --- src/sampled_values/sv_publisher.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/sampled_values/sv_publisher.c b/src/sampled_values/sv_publisher.c index 4bb663e7..ed2c904d 100644 --- a/src/sampled_values/sv_publisher.c +++ b/src/sampled_values/sv_publisher.c @@ -398,8 +398,10 @@ SVPublisher_ASDU_encodeToBuffer(SVPublisher_ASDU self, uint8_t* buffer, int bufP buffer[bufPos++] = self->smpSynch; /* SmpRate */ - bufPos = BerEncoder_encodeTL(0x86, 2, buffer, bufPos); - bufPos = encodeUInt16FixedSize(self->smpRate, buffer, bufPos); + if (self->hasSmpRate) { + bufPos = BerEncoder_encodeTL(0x86, 2, buffer, bufPos); + bufPos = encodeUInt16FixedSize(self->smpRate, buffer, bufPos); + } /* Sample */ bufPos = BerEncoder_encodeTL(0x87, self->dataSize, buffer, bufPos);