diff --git a/src/sampled_values/sv_subscriber.c b/src/sampled_values/sv_subscriber.c index 78865653..568a6a14 100644 --- a/src/sampled_values/sv_subscriber.c +++ b/src/sampled_values/sv_subscriber.c @@ -156,17 +156,30 @@ static void* svReceiverLoop(void* threadParameter) { SVReceiver self = (SVReceiver) threadParameter; + EthernetHandleSet handleSet = EthernetHandleSet_new(); + EthernetHandleSet_addSocket(handleSet, self->ethSocket); self->stopped = false; while (self->running) { + switch (EthernetHandleSet_waitReady(handleSet, 100)) + { + case -1: + if (DEBUG_SV_SUBSCRIBER) + printf("SV_SUBSCRIBER: EhtnernetHandleSet_waitReady() failure\n"); + break; + case 0: + break; + default: + SVReceiver_tick(self); + } - if (SVReceiver_tick(self) == false) - Thread_sleep(1); } self->stopped = true; + EthernetHandleSet_destroy(handleSet); + return NULL; }