diff --git a/src/goose/goose_receiver.c b/src/goose/goose_receiver.c index c99e0426..2a59231a 100644 --- a/src/goose/goose_receiver.c +++ b/src/goose/goose_receiver.c @@ -774,7 +774,7 @@ GooseReceiver_destroy(GooseReceiver self) /*************************************** * Functions for non-threaded operation ***************************************/ -void +EthernetSocket GooseReceiver_startThreadless(GooseReceiver self) { if (self->interfaceId == NULL) @@ -788,6 +788,8 @@ GooseReceiver_startThreadless(GooseReceiver self) } else self->running = false; + + return self->ethSocket; } void @@ -811,10 +813,3 @@ GooseReceiver_tick(GooseReceiver self) else return false; } - -void -GooseReceiver_addHandleSet(GooseReceiver self, EthernetHandleSet handles) -{ - return EthernetHandleSet_addSocket(handles, self->ethSocket); -} - diff --git a/src/goose/goose_receiver.h b/src/goose/goose_receiver.h index 7d854ae0..4995daea 100644 --- a/src/goose/goose_receiver.h +++ b/src/goose/goose_receiver.h @@ -30,6 +30,7 @@ extern "C" { #include +typedef struct sEthernetSocket* EthernetSocket; /** * \addtogroup goose_api_group @@ -116,7 +117,7 @@ GooseReceiver_destroy(GooseReceiver self); /*************************************** * Functions for non-threaded operation ***************************************/ -void +EthernetSocket GooseReceiver_startThreadless(GooseReceiver self); void @@ -134,20 +135,6 @@ GooseReceiver_stopThreadless(GooseReceiver self); bool GooseReceiver_tick(GooseReceiver 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 GooseReceiver_startThreadless(). - * - * \param[in] self The SVReceiver instance. - * \param[inout] handles The EthernetHandleSet to which the EthernetSocket of this receiver should be added. - */ -void -GooseReceiver_addHandleSet(GooseReceiver self, EthernetHandleSet handles); - /**@}*/ #ifdef __cplusplus diff --git a/src/sampled_values/sv_subscriber.c b/src/sampled_values/sv_subscriber.c index c17d05b8..061ca493 100644 --- a/src/sampled_values/sv_subscriber.c +++ b/src/sampled_values/sv_subscriber.c @@ -208,7 +208,7 @@ SVReceiver_destroy(SVReceiver self) GLOBAL_FREEMEM(self); } -void +EthernetSocket SVReceiver_startThreadless(SVReceiver self) { if (self->interfaceId == NULL) @@ -219,6 +219,8 @@ SVReceiver_startThreadless(SVReceiver self) Ethernet_setProtocolFilter(self->ethSocket, ETH_P_SV); self->running = true; + + return self->ethSocket; } void @@ -229,12 +231,6 @@ 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 6313aa9c..fd4093e0 100644 --- a/src/sampled_values/sv_subscriber.h +++ b/src/sampled_values/sv_subscriber.h @@ -30,6 +30,8 @@ extern "C" { #endif +typedef struct sEthernetSocket* EthernetSocket; + /** * \defgroup sv_subscriber_api_group IEC 61850 Sampled Values (SV) subscriber API * @@ -204,7 +206,7 @@ SVReceiver_destroy(SVReceiver self); * Functions for non-threaded operation ***************************************/ -void +EthernetSocket SVReceiver_startThreadless(SVReceiver self); void @@ -222,20 +224,6 @@ 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 */