diff --git a/src/sampled_values/sv_subscriber.c b/src/sampled_values/sv_subscriber.c index 1a0e2583..48b0a697 100644 --- a/src/sampled_values/sv_subscriber.c +++ b/src/sampled_values/sv_subscriber.c @@ -229,6 +229,11 @@ SVReceiver_stopThreadless(SVReceiver self) self->running = false; } +void +SVReceiver_addHandleSet(SVReceiver self, EthernetHandleSet handles) +{ + return EthernetHandleSet_addSocket(handles, self->ethSocket); +} static void parseASDU(SVReceiver self, SVSubscriber subscriber, uint8_t* buffer, int length) diff --git a/src/sampled_values/sv_subscriber.h b/src/sampled_values/sv_subscriber.h index 16ae7443..d3390c20 100644 --- a/src/sampled_values/sv_subscriber.h +++ b/src/sampled_values/sv_subscriber.h @@ -213,6 +213,20 @@ SVReceiver_stopThreadless(SVReceiver self); bool SVReceiver_tick(SVReceiver self); +/* Forward declaration */ +typedef struct sEthernetHandleSet* EthernetHandleSet; + +/** + * \brief Add the receiver to a handleset for multiplexed asynchronous IO. + * + * Note: This function must only be called after SVReceiver_startThreadless(). + * + * \param[in] self The SVReceiver instance. + * \param[inout] handles The EthernetHandleSet to which the EthernetSocket of this receiver should be added. + */ +void +SVReceiver_addHandleSet(SVReceiver self, EthernetHandleSet handles); + /* * Subscriber */