diff --git a/src/sampled_values/sv_subscriber.c b/src/sampled_values/sv_subscriber.c index 3e3fe093..9c8fe083 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 @@ -454,7 +454,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; @@ -517,13 +517,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; @@ -545,7 +545,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 7b427d90..44ee9066 100644 --- a/src/sampled_values/sv_subscriber.h +++ b/src/sampled_values/sv_subscriber.h @@ -247,7 +247,12 @@ LIB61850_API 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 */ LIB61850_API SVSubscriber @@ -263,7 +268,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 - * */ LIB61850_API void SVSubscriber_setListener(SVSubscriber self, SVUpdateListener listener, void* parameter);