diff --git a/slsReceiverSoftware/include/UDPBaseImplementation.h b/slsReceiverSoftware/include/UDPBaseImplementation.h index 4b9766307..ce8a3ddb7 100644 --- a/slsReceiverSoftware/include/UDPBaseImplementation.h +++ b/slsReceiverSoftware/include/UDPBaseImplementation.h @@ -539,7 +539,7 @@ class UDPBaseImplementation : protected virtual slsReceiverDefs, public UDPInter /** Fifo Depth */ uint32_t fifoDepth; /** enable for flipping data across both axes */ - bool flippedData[2]; + int flippedData[2]; //***receiver parameters*** /** Maximum Number of Listening Threads/ UDP Ports */ diff --git a/slsReceiverSoftware/src/UDPBaseImplementation.cpp b/slsReceiverSoftware/src/UDPBaseImplementation.cpp index 80e98e226..e0bf65f6d 100644 --- a/slsReceiverSoftware/src/UDPBaseImplementation.cpp +++ b/slsReceiverSoftware/src/UDPBaseImplementation.cpp @@ -46,8 +46,8 @@ void UDPBaseImplementation::initializeMembers(){ dynamicRange = 16; tengigaEnable = false; fifoDepth = 0; - flippedData[0] = false; - flippedData[1] = false; + flippedData[0] = 0; + flippedData[1] = 0; //***receiver parameters*** status = IDLE; @@ -221,7 +221,7 @@ void UDPBaseImplementation::configure(map config_map){ void UDPBaseImplementation::setFlippedData(int axis, int enable){ FILE_LOG(logDEBUG) << __AT__ << " starting"; if(axis<0 || axis>1) return; - flippedData[axis] = enable; + flippedData[axis] = enable==0?0:1; FILE_LOG(logINFO) << "Flipped Data: " << flippedData[0] << " , " << flippedData[1]; } diff --git a/slsReceiverSoftware/src/UDPStandardImplementation.cpp b/slsReceiverSoftware/src/UDPStandardImplementation.cpp index 0b8b58ce3..79d8e0520 100644 --- a/slsReceiverSoftware/src/UDPStandardImplementation.cpp +++ b/slsReceiverSoftware/src/UDPStandardImplementation.cpp @@ -89,7 +89,7 @@ void UDPStandardImplementation::deleteMembers(){ if(fifoFree[i]) {delete fifoFree[i]; fifoFree[i] = 0;} } for(int i=0; i 1 numberofJobsPerBuffer - if(fifoSize % numberofJobsPerBuffer) - fifoSize = (fifoSize/numberofJobsPerBuffer)+1; + if(fifoDepth % numberofJobsPerBuffer) + fifoSize = (fifoDepth/numberofJobsPerBuffer)+1; else - fifoSize = fifoSize/numberofJobsPerBuffer; + fifoSize = fifoDepth/numberofJobsPerBuffer; //do not rebuild fifo structure if it is the same (oldfifosize differs only for different packetsperframe) if((oldNumberofJobsPerBuffer == numberofJobsPerBuffer) && (oldFifoSize == fifoSize)) @@ -343,7 +342,7 @@ int UDPStandardImplementation::setupFifoStructure(){ //set up fifo structure - for(int i=0;i(fifoSize); fifo[i] = new CircularFifo(fifoSize); @@ -382,7 +385,7 @@ int UDPStandardImplementation::setupFifoStructure(){ buffer[i]=mem0[i]; while (buffer[i] < (mem0[i]+(bufferSize * numberofJobsPerBuffer + fifoBufferHeaderSize) * (fifoSize-1))) { //cprintf(BLUE,"fifofree %d: push 0x%p\n",i,(void*)buffer[i]); - /*for(int k=0;kpop(wbuf); uint32_t numPackets = (uint32_t)(*((uint32_t*)wbuf)); + #ifdef DEBUG4 cprintf(GREEN,"Writing_Thread %d: Number of Packets: %d for FIFO %d\n", ithread, numPackets, dataCompressionEnable?0:ithread); #endif @@ -2880,7 +2884,7 @@ void UDPStandardImplementation::handleCompleteFramesOnly(int ithread, char* wbuf if((fileWriteEnable) && (sfilefd[ithread])){ if(tempframenumber && (tempframenumber%maxFramesPerFile) == 0) createNewFile(ithread); - fwrite(wbuffer + HEADER_SIZE_NUM_TOT_PACKETS, 1, bufferSize + FILE_FRAME_HEADER_LENGTH, sfilefd[ithread]); + fwrite(wbuffer + HEADER_SIZE_NUM_TOT_PACKETS, 1, (bufferSize + FILE_FRAME_HEADER_LENGTH), sfilefd[ithread]); } @@ -3140,6 +3144,7 @@ void UDPStandardImplementation::copyFrameToGui(int ithread, char* buffer, uint32 //copy date guiNumPackets[ithread] = numpackets; strcpy(guiFileName[ithread],completeFileName[ithread]); + if(excludeMissingPackets) //copy also the header memcpy(latestData[ithread],buffer+HEADER_SIZE_NUM_TOT_PACKETS, bufferSize + FILE_FRAME_HEADER_LENGTH); else //copy only the data diff --git a/slsReceiverSoftware/src/slsReceiverTCPIPInterface.cpp b/slsReceiverSoftware/src/slsReceiverTCPIPInterface.cpp index 99948460b..e477c6655 100644 --- a/slsReceiverSoftware/src/slsReceiverTCPIPInterface.cpp +++ b/slsReceiverSoftware/src/slsReceiverTCPIPInterface.cpp @@ -355,8 +355,9 @@ int slsReceiverTCPIPInterface::set_detector_type(){ sprintf(mess,"Receiver locked by %s\n", mySock->lastClientIP); ret=FAIL; } - else if((receiverBase)&&(receiverBase->getStatus()==RUNNING || receiverBase->getStatus()==TRANSMITTING)){ + else if((receiverBase)&&(receiverBase->getStatus()!= IDLE)){ strcpy(mess,"Can not set detector type while receiver not idle\n"); + cprintf(RED,"%s",mess); ret = FAIL; } else{ @@ -447,8 +448,9 @@ int slsReceiverTCPIPInterface::set_file_name() { strcpy(mess,SET_RECEIVER_ERR_MESSAGE); ret=FAIL; } - else if(receiverBase->getStatus()==RUNNING || receiverBase->getStatus()==TRANSMITTING){ + else if(receiverBase->getStatus()!= IDLE){ strcpy(mess,"Can not set file name while receiver not idle\n"); + cprintf(RED,"%s",mess); ret = FAIL; } else{ @@ -519,8 +521,9 @@ int slsReceiverTCPIPInterface::set_file_dir() { strcpy(mess,SET_RECEIVER_ERR_MESSAGE); ret=FAIL; } - else if(receiverBase->getStatus()==RUNNING || receiverBase->getStatus()==TRANSMITTING){ + else if(receiverBase->getStatus()!= IDLE){ strcpy(mess,"Can not set file path while receiver not idle\n"); + cprintf(RED,"%s",mess); ret = FAIL; } else{ @@ -592,8 +595,9 @@ int slsReceiverTCPIPInterface::set_file_index() { strcpy(mess,SET_RECEIVER_ERR_MESSAGE); ret=FAIL; } - else if(receiverBase->getStatus()==RUNNING || receiverBase->getStatus()==TRANSMITTING){ + else if(receiverBase->getStatus()!= IDLE){ strcpy(mess,"Can not set file index while receiver not idle\n"); + cprintf(RED,"%s",mess); ret = FAIL; } else{ @@ -660,8 +664,9 @@ int slsReceiverTCPIPInterface::set_frame_index() { strcpy(mess,SET_RECEIVER_ERR_MESSAGE); ret=FAIL; } - else if(receiverBase->getStatus()==RUNNING || receiverBase->getStatus()==TRANSMITTING){ + else if(receiverBase->getStatus()!= IDLE){ strcpy(mess,"Can not set frame index while receiver not idle\n"); + cprintf(RED,"%s",mess); ret = FAIL; } else{ @@ -741,8 +746,9 @@ int slsReceiverTCPIPInterface::setup_udp(){ strcpy(mess,SET_RECEIVER_ERR_MESSAGE); ret=FAIL; } - else if(receiverBase->getStatus()==RUNNING || receiverBase->getStatus()==TRANSMITTING){ + else if(receiverBase->getStatus()!= IDLE){ strcpy(mess,"Can not set up udp while receiver not idle\n"); + cprintf(RED,"%s",mess); ret = FAIL; } else{ @@ -836,6 +842,7 @@ int slsReceiverTCPIPInterface::start_receiver(){ ret=receiverBase->startReceiver(mess); else{ sprintf(mess,"Cannot start Receiver as it is in %s state\n",runStatusType(s).c_str()); + cprintf(RED,"%s",mess); ret=FAIL; } } @@ -875,7 +882,7 @@ int slsReceiverTCPIPInterface::stop_receiver(){ ret=FAIL; } else{ - if(receiverBase->getStatus()==RUNNING || receiverBase->getStatus()==TRANSMITTING || receiverBase->getStatus()==RUN_FINISHED){ + if(receiverBase->getStatus()!= IDLE){ receiverBase->stopReceiver(); } s = receiverBase->getStatus(); @@ -883,6 +890,7 @@ int slsReceiverTCPIPInterface::stop_receiver(){ ret = OK; else{ sprintf(mess,"Could not stop receiver. It is in %s state\n",runStatusType(s).c_str()); + cprintf(RED,"%s",mess); ret = FAIL; } } @@ -1079,8 +1087,9 @@ int slsReceiverTCPIPInterface::set_short_frame() { strcpy(mess,SET_RECEIVER_ERR_MESSAGE); ret=FAIL; } - else if(receiverBase->getStatus()==RUNNING || receiverBase->getStatus()==TRANSMITTING){ + else if(receiverBase->getStatus()!= IDLE){ strcpy(mess,"Cannot set short frame while status is running\n"); + cprintf(RED,"%s",mess); ret=FAIL; } else{ @@ -2096,7 +2105,7 @@ int slsReceiverTCPIPInterface::set_read_frequency(){ strcpy(mess,SET_RECEIVER_ERR_MESSAGE); ret=FAIL; } - else if(receiverBase->getStatus()==RUNNING || receiverBase->getStatus()==TRANSMITTING){ + else if(receiverBase->getStatus()!= IDLE){ strcpy(mess,"Can not set receiver frequency mode while receiver not idle\n"); cprintf(RED,"%s\n",mess); ret = FAIL; @@ -2166,7 +2175,7 @@ int slsReceiverTCPIPInterface::set_read_receiver_timer(){ strcpy(mess,SET_RECEIVER_ERR_MESSAGE); ret=FAIL; } - else if(receiverBase->getStatus()==RUNNING || receiverBase->getStatus()==TRANSMITTING){ + else if(receiverBase->getStatus()!= IDLE){ strcpy(mess,"Can not set receiver frequency mode while receiver not idle\n"); cprintf(RED,"%s\n",mess); ret = FAIL; @@ -2230,7 +2239,7 @@ int slsReceiverTCPIPInterface::set_data_stream_enable(){ strcpy(mess,SET_RECEIVER_ERR_MESSAGE); ret=FAIL; } - else if((index >= 0) && (receiverBase->getStatus()==RUNNING || receiverBase->getStatus()==TRANSMITTING)){ + else if((index >= 0) && (receiverBase->getStatus()!= IDLE)){ strcpy(mess,"Can not set data stream enable while receiver not idle\n"); cprintf(RED,"%s\n",mess); ret = FAIL; @@ -2294,8 +2303,9 @@ int slsReceiverTCPIPInterface::enable_file_write(){ strcpy(mess,SET_RECEIVER_ERR_MESSAGE); ret=FAIL; } - else if(receiverBase->getStatus()==RUNNING || receiverBase->getStatus()==TRANSMITTING){ + else if(receiverBase->getStatus()!= IDLE){ strcpy(mess,"Can not set file write mode while receiver not idle\n"); + cprintf(RED,"%s",mess); ret = FAIL; } else{ @@ -2370,7 +2380,7 @@ int slsReceiverTCPIPInterface::start_readout(){cprintf(BLUE,"In start readout!\n strcpy(mess,SET_RECEIVER_ERR_MESSAGE); ret=FAIL; } - /*else if(receiverBase->getStatus()==RUNNING || receiverBase->getStatus()==TRANSMITTING){ + /*else if(receiverBase->getStatus()!= IDLE){ strcpy(mess,"Can not start receiver readout while receiver not idle\n"); ret = FAIL; }*/ @@ -2430,8 +2440,9 @@ int slsReceiverTCPIPInterface::set_timer() { strcpy(mess,SET_RECEIVER_ERR_MESSAGE); ret=FAIL; } - else if(receiverBase->getStatus()==RUNNING || receiverBase->getStatus()==TRANSMITTING){ + else if(receiverBase->getStatus()!= IDLE){ strcpy(mess,"Can not set timer while receiver not idle\n"); + cprintf(RED,"%s",mess); ret = FAIL; } else{ @@ -2518,8 +2529,9 @@ int slsReceiverTCPIPInterface::enable_compression() { strcpy(mess,SET_RECEIVER_ERR_MESSAGE); ret=FAIL; } - else if(receiverBase->getStatus()==RUNNING || receiverBase->getStatus()==TRANSMITTING){ + else if(receiverBase->getStatus()!= IDLE){ strcpy(mess,"Cannot enable/disable compression while status is running\n"); + cprintf(RED,"%s",mess); ret=FAIL; } else{ @@ -2587,8 +2599,9 @@ int slsReceiverTCPIPInterface::set_detector_hostname() { strcpy(mess,SET_RECEIVER_ERR_MESSAGE); ret=FAIL; } - else if(receiverBase->getStatus()==RUNNING || receiverBase->getStatus()==TRANSMITTING){ + else if(receiverBase->getStatus()!= IDLE){ strcpy(mess,"Can not set detector hostname while receiver not idle\n"); + cprintf(RED,"%s",mess); ret = FAIL; } else{ @@ -2673,8 +2686,9 @@ int slsReceiverTCPIPInterface::set_dynamic_range() { strcpy(mess,SET_RECEIVER_ERR_MESSAGE); ret=FAIL; } - else if(receiverBase->getStatus()==RUNNING || receiverBase->getStatus()==TRANSMITTING){ + else if(receiverBase->getStatus()!= IDLE){ strcpy(mess,"Can not set dynamic range while receiver not idle\n"); + cprintf(RED,"%s",mess); ret = FAIL; } else{ @@ -2754,8 +2768,9 @@ int slsReceiverTCPIPInterface::enable_overwrite() { strcpy(mess,SET_RECEIVER_ERR_MESSAGE); ret=FAIL; } - else if(receiverBase->getStatus()==RUNNING || receiverBase->getStatus()==TRANSMITTING){ + else if(receiverBase->getStatus()!= IDLE){ strcpy(mess,"Can not set overwrite mode while receiver not idle\n"); + cprintf(RED,"%s",mess); ret = FAIL; } else{ @@ -2821,8 +2836,9 @@ int slsReceiverTCPIPInterface::enable_tengiga() { strcpy(mess,SET_RECEIVER_ERR_MESSAGE); ret=FAIL; } - else if(receiverBase->getStatus()==RUNNING || receiverBase->getStatus()==TRANSMITTING){ + else if(receiverBase->getStatus()!= IDLE){ strcpy(mess,"Can not set up 1Giga/10Giga mode while receiver not idle\n"); + cprintf(RED,"%s",mess); ret = FAIL; } else{ @@ -2890,8 +2906,9 @@ int slsReceiverTCPIPInterface::set_fifo_depth() { strcpy(mess,SET_RECEIVER_ERR_MESSAGE); ret=FAIL; } - else if(receiverBase->getStatus()==RUNNING || receiverBase->getStatus()==TRANSMITTING){ + else if(receiverBase->getStatus()!= IDLE){ strcpy(mess,"Cannot set/get fifo depth while status is running\n"); + cprintf(RED,"%s",mess); ret=FAIL; } else{ @@ -3033,8 +3050,9 @@ int slsReceiverTCPIPInterface::set_flipped_data(){ strcpy(mess,SET_RECEIVER_ERR_MESSAGE); ret=FAIL; } - else if(receiverBase->getStatus()==RUNNING || receiverBase->getStatus()==TRANSMITTING){ + else if(receiverBase->getStatus()!= IDLE){ strcpy(mess,"Can not set flipped data while receiver not idle\n"); + cprintf(RED,"%s",mess); ret = FAIL; } else{