From 472514cc63a0c2373680914a9ca07f67f3dce504 Mon Sep 17 00:00:00 2001 From: Michael Zillgith Date: Wed, 20 Mar 2019 11:48:42 +0100 Subject: [PATCH] - SV subscriber: fixed bug in function SVReceiver_enableDestAddrCheck --- src/sampled_values/sv_subscriber.c | 10 +++++----- src/sampled_values/sv_subscriber.h | 9 ++++++--- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/sampled_values/sv_subscriber.c b/src/sampled_values/sv_subscriber.c index 9e03607c..838fb855 100644 --- a/src/sampled_values/sv_subscriber.c +++ b/src/sampled_values/sv_subscriber.c @@ -121,7 +121,7 @@ SVReceiver_disableDestAddrCheck(SVReceiver self) void SVReceiver_enableDestAddrCheck(SVReceiver self) { - self->checkDestAddr = false; + self->checkDestAddr = true; } void @@ -446,7 +446,7 @@ parseSVMessage(SVReceiver self, int numbytes) if (numbytes < 22) return; /* Ethernet source address */ - uint8_t* srcAddr = buffer; + uint8_t* dstAddr = buffer; /* skip ethernet addresses */ bufPos = 12; @@ -509,13 +509,13 @@ parseSVMessage(SVReceiver self, int numbytes) if (subscriber->appId == appId) { if (self->checkDestAddr) { - if (memcmp(srcAddr, subscriber->ethAddr, 6) == 0) { + if (memcmp(dstAddr, subscriber->ethAddr, 6) == 0) { subscriberFound = true; break; } else if (DEBUG_SV_SUBSCRIBER) - printf("SV_SUBSCRIBER: Checking ethernet src address failed!\n"); + printf("SV_SUBSCRIBER: Checking ethernet dest address failed!\n"); } else { subscriberFound = true; @@ -537,7 +537,7 @@ parseSVMessage(SVReceiver self, int numbytes) parseSVPayload(self, subscriber, buffer + bufPos, apduLength); else { if (DEBUG_SV_SUBSCRIBER) - printf("SV_SUBSCRIBER: SV message ignored due to unknown APPID value\n"); + printf("SV_SUBSCRIBER: SV message ignored due to unknown APPID value or dest address mismatch\n"); } } diff --git a/src/sampled_values/sv_subscriber.h b/src/sampled_values/sv_subscriber.h index 7379ac0b..2388527e 100644 --- a/src/sampled_values/sv_subscriber.h +++ b/src/sampled_values/sv_subscriber.h @@ -247,9 +247,13 @@ bool SVReceiver_tick(SVReceiver self); /* - * Subscriber + * \brief Create a new SV subscriber instance + * + * \param ethAddr optional destination address (NULL to not specify the destination address) + * \param appID the APP-ID to identify matching SV messages + * + * \return the new subscriber instance */ - SVSubscriber SVSubscriber_create(const uint8_t* ethAddr, uint16_t appID); @@ -263,7 +267,6 @@ SVSubscriber_create(const uint8_t* ethAddr, uint16_t appID); * \param self The subscriber object * \param listener the callback function to install * \param a user provided parameter that is provided to the callback function - * */ void SVSubscriber_setListener(SVSubscriber self, SVUpdateListener listener, void* parameter);