From 66e79dc9a97bf82cdad11c93e94e10cfbeb33bd3 Mon Sep 17 00:00:00 2001 From: Erik Frojdh Date: Tue, 16 Oct 2018 15:08:59 +0200 Subject: [PATCH] refactoring startReadout --- .../src/slsReceiverImplementation.cpp | 40 ++++++++----------- 1 file changed, 16 insertions(+), 24 deletions(-) diff --git a/slsReceiverSoftware/src/slsReceiverImplementation.cpp b/slsReceiverSoftware/src/slsReceiverImplementation.cpp index c4779c99c..cc89be390 100644 --- a/slsReceiverSoftware/src/slsReceiverImplementation.cpp +++ b/slsReceiverSoftware/src/slsReceiverImplementation.cpp @@ -1144,43 +1144,35 @@ void slsReceiverImplementation::stopReceiver(){ void slsReceiverImplementation::startReadout(){ if(status == RUNNING){ - // wait for incoming delayed packets - //current packets caught - volatile int totalP = 0,prev=-1; - for (std::vector::const_iterator it = listener.begin(); it != listener.end(); ++it) - totalP += (*it)->GetPacketsCaught(); + int totalPacketsReceived = 0; + int previousValue=-1; + for(const auto& it : listener) + totalPacketsReceived += it->GetPacketsCaught(); //wait for all packets - if((unsigned long long int)totalP!=numberOfFrames*generalData->packetsPerFrame*listener.size()){ - - //wait as long as there is change from prev totalP, - while(prev != totalP){ + const auto numPacketsToReceive = numberOfFrames*generalData->packetsPerFrame*listener.size(); + if(totalPacketsReceived != numPacketsToReceive){ + while(totalPacketsReceived != previousValue){ #ifdef VERY_VERBOSE - cprintf(MAGENTA,"waiting for all packets prevP:%d totalP:%d\n", - prev,totalP); - + cprintf(MAGENTA,"waiting for all packets previousValue:%d totalPacketsReceived:%d\n", + previousValue,totalPacketsReceived); #endif - //usleep(1*1000*1000);usleep(1*1000*1000);usleep(1*1000*1000);usleep(1*1000*1000); - usleep(5*1000);/* Need to find optimal time **/ + usleep(5*1000);/* TODO! Need to find optimal time **/ + previousValue = totalPacketsReceived; + totalPacketsReceived = 0; + for(const auto& it : listener) + totalPacketsReceived += it->GetPacketsCaught(); - prev = totalP; - totalP = 0; - - for (std::vector::const_iterator it = listener.begin(); it != listener.end(); ++it) - totalP += (*it)->GetPacketsCaught(); #ifdef VERY_VERBOSE - cprintf(MAGENTA,"\tupdated: totalP:%d\n",totalP); + cprintf(MAGENTA,"\tupdated: totalP:%d\n",totalPacketsReceived); #endif } } - - - //set status status = TRANSMITTING; FILE_LOG(logINFO) << "Status: Transmitting"; } - //shut down udp sockets so as to make listeners push dummy (end) packets for processors + //shut down udp sockets to make listeners push dummy (end) packets for processors shutDownUDPSockets(); }