From 068b4eae99f30fef77ca4d83f4758cedef201552 Mon Sep 17 00:00:00 2001 From: Cedric Boudinet Date: Mon, 26 Oct 2020 17:44:53 +0100 Subject: [PATCH 1/2] adding getSmpSynch in sv subscriber --- src/sampled_values/sv_subscriber.c | 18 ++++++++++++++++++ src/sampled_values/sv_subscriber.h | 10 ++++++++++ 2 files changed, 28 insertions(+) diff --git a/src/sampled_values/sv_subscriber.c b/src/sampled_values/sv_subscriber.c index 838fb855..5dbe4283 100644 --- a/src/sampled_values/sv_subscriber.c +++ b/src/sampled_values/sv_subscriber.c @@ -878,6 +878,24 @@ SVSubscriber_ASDU_getDataSize(SVSubscriber_ASDU self) return self->dataBufferLength; } +uint16_t +SVSubscriber_ASDU_getSmpSynch(SVSubscriber_ASDU self) +{ + uint16_t retVal; + uint8_t* valBytes = (uint8_t*) &retVal; + +#if (ORDER_LITTLE_ENDIAN == 1) + valBytes[0] = self->smpSynch[1]; + valBytes[1] = self->smpSynch[0]; +#else + valBytes[0] = self->smpSynch[0]; + valBytes[1] = self->smpSynch[1]; +#endif + + return retVal; + +} + uint16_t SVClientASDU_getSmpCnt(SVSubscriber_ASDU self) { diff --git a/src/sampled_values/sv_subscriber.h b/src/sampled_values/sv_subscriber.h index 2388527e..1ff40d8e 100644 --- a/src/sampled_values/sv_subscriber.h +++ b/src/sampled_values/sv_subscriber.h @@ -528,6 +528,16 @@ SVSubscriber_ASDU_getQuality(SVSubscriber_ASDU self, int index); int SVSubscriber_ASDU_getDataSize(SVSubscriber_ASDU self); +/** + * \brief return the SmpSynch value included in the SV ASDU + * + * The SmpSynch gives information about the clock synchronization. + * + * \param self ASDU object instance + */ +uint16_t +SVSubscriber_ASDU_getSmpSynch(SVSubscriber_ASDU self); + #ifndef DEPRECATED #if defined(__GNUC__) || defined(__clang__) #define DEPRECATED __attribute__((deprecated)) From c7334668fa85f54c997d6787885071b979497b93 Mon Sep 17 00:00:00 2001 From: Cedric Boudinet Date: Mon, 26 Oct 2020 21:33:41 +0100 Subject: [PATCH 2/2] hanlding smpSynch in sv subsciber --- examples/sv_publisher/sv_publisher_example.c | 2 ++ examples/sv_subscriber/sv_subscriber_example.c | 1 + src/sampled_values/sv_subscriber.c | 16 ++-------------- src/sampled_values/sv_subscriber.h | 2 +- 4 files changed, 6 insertions(+), 15 deletions(-) diff --git a/examples/sv_publisher/sv_publisher_example.c b/examples/sv_publisher/sv_publisher_example.c index 311b6ff6..e87e5966 100644 --- a/examples/sv_publisher/sv_publisher_example.c +++ b/examples/sv_publisher/sv_publisher_example.c @@ -44,6 +44,8 @@ main(int argc, char** argv) int ts2 = SVPublisher_ASDU_addTimestamp(asdu2); SVPublisher_setupComplete(svPublisher); + SVPublisher_ASDU_setSmpSynch(asdu1, 2); + SVPublisher_ASDU_setSmpSynch(asdu2, 1); float fVal1 = 1234.5678f; float fVal2 = 0.12345f; diff --git a/examples/sv_subscriber/sv_subscriber_example.c b/examples/sv_subscriber/sv_subscriber_example.c index 1a1f1deb..11d2e532 100644 --- a/examples/sv_subscriber/sv_subscriber_example.c +++ b/examples/sv_subscriber/sv_subscriber_example.c @@ -32,6 +32,7 @@ svUpdateListener (SVSubscriber subscriber, void* parameter, SVSubscriber_ASDU as printf(" smpCnt: %i\n", SVSubscriber_ASDU_getSmpCnt(asdu)); printf(" confRev: %u\n", SVSubscriber_ASDU_getConfRev(asdu)); + printf(" smpSynch: %u\n", SVSubscriber_ASDU_getSmpSynch(asdu)); /* * Access to the data requires a priori knowledge of the data set. diff --git a/src/sampled_values/sv_subscriber.c b/src/sampled_values/sv_subscriber.c index 5dbe4283..ed56e4c9 100644 --- a/src/sampled_values/sv_subscriber.c +++ b/src/sampled_values/sv_subscriber.c @@ -878,22 +878,10 @@ SVSubscriber_ASDU_getDataSize(SVSubscriber_ASDU self) return self->dataBufferLength; } -uint16_t +uint8_t SVSubscriber_ASDU_getSmpSynch(SVSubscriber_ASDU self) { - uint16_t retVal; - uint8_t* valBytes = (uint8_t*) &retVal; - -#if (ORDER_LITTLE_ENDIAN == 1) - valBytes[0] = self->smpSynch[1]; - valBytes[1] = self->smpSynch[0]; -#else - valBytes[0] = self->smpSynch[0]; - valBytes[1] = self->smpSynch[1]; -#endif - - return retVal; - + return self->smpSynch[0]; } uint16_t diff --git a/src/sampled_values/sv_subscriber.h b/src/sampled_values/sv_subscriber.h index 1ff40d8e..870cd692 100644 --- a/src/sampled_values/sv_subscriber.h +++ b/src/sampled_values/sv_subscriber.h @@ -535,7 +535,7 @@ SVSubscriber_ASDU_getDataSize(SVSubscriber_ASDU self); * * \param self ASDU object instance */ -uint16_t +uint8_t SVSubscriber_ASDU_getSmpSynch(SVSubscriber_ASDU self); #ifndef DEPRECATED