diff --git a/slsReceiverSoftware/src/slsReceiverTCPIPInterface.cpp b/slsReceiverSoftware/src/slsReceiverTCPIPInterface.cpp index c12e82ff2..720784b14 100644 --- a/slsReceiverSoftware/src/slsReceiverTCPIPInterface.cpp +++ b/slsReceiverSoftware/src/slsReceiverTCPIPInterface.cpp @@ -421,6 +421,10 @@ int slsReceiverTCPIPInterface::set_file_name() { if (lockStatus==1 && socket->differentClients==1){ sprintf(mess,"Receiver locked by %s\n", socket->lastClientIP); ret=FAIL; + } + else if (receiverBase == NULL){ + strcpy(mess,"Receiver not set up\n"); + ret=FAIL; } else strcpy(retval,receiverBase->setFileName(fName)); @@ -476,6 +480,10 @@ int slsReceiverTCPIPInterface::set_file_dir() { strcpy(mess,"Can not set file path while receiver running\n"); ret = FAIL; }*/ + else if (receiverBase == NULL){ + strcpy(mess,"Receiver not set up\n"); + ret=FAIL; + } else{ strcpy(retval,receiverBase->setFilePath(fPath)); // if file path doesnt exist @@ -535,6 +543,10 @@ int slsReceiverTCPIPInterface::set_file_index() { sprintf(mess,"Receiver locked by %s\n", socket->lastClientIP); ret=FAIL; } + else if (receiverBase == NULL){ + strcpy(mess,"Receiver not set up\n"); + ret=FAIL; + } else retval=receiverBase->setFileIndex(index); } @@ -588,6 +600,10 @@ int slsReceiverTCPIPInterface::set_frame_index() { sprintf(mess,"Receiver locked by %s\n", socket->lastClientIP); ret=FAIL; } + else if (receiverBase == NULL){ + strcpy(mess,"Receiver not set up\n"); + ret=FAIL; + } else retval=receiverBase->setFrameIndexNeeded(index); } @@ -645,6 +661,10 @@ int slsReceiverTCPIPInterface::setup_udp(){ sprintf(mess,"Receiver locked by %s\n", socket->lastClientIP); ret=FAIL; } + else if (receiverBase == NULL){ + strcpy(mess,"Receiver not set up\n"); + ret=FAIL; + } else if(receiverBase->getStatus()==RUNNING){ ret = FAIL; strcpy(mess,"cannot set up udp when receiver is running\n"); @@ -732,6 +752,10 @@ int slsReceiverTCPIPInterface::start_receiver(){ ret = FAIL; } */ + else if (receiverBase == NULL){ + strcpy(mess,"Receiver not set up\n"); + ret=FAIL; + } else { s = receiverBase->getStatus(); switch (s) { @@ -780,6 +804,10 @@ int slsReceiverTCPIPInterface::stop_receiver(){ sprintf(mess,"Receiver locked by %s\n", socket->lastClientIP); ret=FAIL; } + else if (receiverBase == NULL){ + strcpy(mess,"Receiver not set up\n"); + ret=FAIL; + } else if(receiverBase->getStatus()!=IDLE) ret=receiverBase->stopReceiver(); #endif @@ -802,20 +830,25 @@ int slsReceiverTCPIPInterface::stop_receiver(){ int slsReceiverTCPIPInterface::get_status(){ ret=OK; - enum runStatus retval; + enum runStatus retval = ERROR; // execute action if the arguments correctly arrived #ifdef SLS_RECEIVER_UDP_FUNCTIONS - retval=receiverBase->getStatus(); + if (receiverBase == NULL){ + strcpy(mess,"Receiver not set up\n"); + ret=FAIL; + }else retval=receiverBase->getStatus(); #endif - if(socket->differentClients){ + if(ret==OK && socket->differentClients){ cout << "Force update" << endl; ret=FORCE_UPDATE; } // send answer socket->SendDataOnly(&ret,sizeof(ret)); + if(ret==FAIL) + socket->SendDataOnly(mess,sizeof(mess)); socket->SendDataOnly(&retval,sizeof(retval)); //return ok/fail return ret; @@ -830,15 +863,20 @@ int slsReceiverTCPIPInterface::get_frames_caught(){ // execute action if the arguments correctly arrived #ifdef SLS_RECEIVER_UDP_FUNCTIONS - retval=receiverBase->getTotalFramesCaught(); + if (receiverBase == NULL){ + strcpy(mess,"Receiver not set up\n"); + ret=FAIL; + }else retval=receiverBase->getTotalFramesCaught(); #endif - if(socket->differentClients){ + if(ret==OK && socket->differentClients){ cout << "Force update" << endl; ret=FORCE_UPDATE; } // send answer socket->SendDataOnly(&ret,sizeof(ret)); + if(ret==FAIL) + socket->SendDataOnly(mess,sizeof(mess)); socket->SendDataOnly(&retval,sizeof(retval)); //return ok/fail return ret; @@ -853,16 +891,22 @@ int slsReceiverTCPIPInterface::get_frame_index(){ // execute action if the arguments correctly arrived #ifdef SLS_RECEIVER_UDP_FUNCTIONS - retval=receiverBase->getAcquisitionIndex(); + if (receiverBase == NULL){ + strcpy(mess,"Receiver not set up\n"); + ret=FAIL; + }else + retval=receiverBase->getAcquisitionIndex(); #endif - if(socket->differentClients){ + if(ret==OK && socket->differentClients){ cout << "Force update" << endl; ret=FORCE_UPDATE; } // send answer socket->SendDataOnly(&ret,sizeof(ret)); + if(ret==FAIL) + socket->SendDataOnly(mess,sizeof(mess)); socket->SendDataOnly(&retval,sizeof(retval)); //return ok/fail return ret; @@ -884,6 +928,10 @@ int slsReceiverTCPIPInterface::reset_frames_caught(){ sprintf(mess,"Receiver locked by %s\n", socket->lastClientIP); ret=FAIL; } + else if (receiverBase == NULL){ + strcpy(mess,"Receiver not set up\n"); + ret=FAIL; + } else receiverBase->resetTotalFramesCaught(); } @@ -936,6 +984,10 @@ int slsReceiverTCPIPInterface::set_short_frame() { sprintf(mess,"Receiver locked by %s\n", socket->lastClientIP); ret=FAIL; } + else if (receiverBase == NULL){ + strcpy(mess,"Receiver not set up\n"); + ret=FAIL; + } else if(receiverBase->getStatus()==RUNNING){ strcpy(mess,"Cannot set short frame while status is running\n"); ret=FAIL; @@ -1009,9 +1061,12 @@ int slsReceiverTCPIPInterface::moench_read_frame(){ // execute action if the arguments correctly arrived #ifdef SLS_RECEIVER_UDP_FUNCTIONS - + if (receiverBase == NULL){ + strcpy(mess,"Receiver not set up\n"); + ret=FAIL; + } /**send garbage with -1 index to try again*/ - if(!receiverBase->getFramesCaught()){ + else if(!receiverBase->getFramesCaught()){ startAcquisitionIndex = -1; cout<<"haven't caught any frame yet"<getFramesCaught()){ + else if(!receiverBase->getFramesCaught()){ startAcquisitionIndex=-1; cout<<"haven't caught any frame yet"<getFramesCaught()){ + else if(!receiverBase->getFramesCaught()){ startAcquisitionIndex=-1; #ifdef VERBOSE cout<<"haven't caught any frame yet"<differentClients==1){ sprintf(mess,"Receiver locked by %s\n", socket->lastClientIP); ret=FAIL; - }/* + } + else if (receiverBase == NULL){ + strcpy(mess,"Receiver not set up\n"); + ret=FAIL; + } + /* else if((receiverBase->getStatus()==RUNNING) && (index >= 0)){ ret = FAIL; strcpy(mess,"cannot set up receiver mode when receiver is running\n"); @@ -1667,6 +1733,10 @@ int slsReceiverTCPIPInterface::enable_file_write(){ sprintf(mess,"Receiver locked by %s\n", socket->lastClientIP); ret=FAIL; } + else if (receiverBase == NULL){ + strcpy(mess,"Receiver not set up\n"); + ret=FAIL; + } else{ if(enable >= 0) receiverBase->setEnableFileWrite(enable); @@ -1733,21 +1803,28 @@ int slsReceiverTCPIPInterface::start_readout(){ // execute action if the arguments correctly arrived #ifdef SLS_RECEIVER_UDP_FUNCTIONS - receiverBase->startReadout(); - retval = receiverBase->getStatus(); - if((retval == TRANSMITTING) || (retval == RUN_FINISHED) || (retval == IDLE)) - ret = OK; - else - ret = FAIL; + if (receiverBase == NULL){ + strcpy(mess,"Receiver not set up\n"); + ret=FAIL; + }else{ + receiverBase->startReadout(); + retval = receiverBase->getStatus(); + if((retval == TRANSMITTING) || (retval == RUN_FINISHED) || (retval == IDLE)) + ret = OK; + else + ret = FAIL; + } #endif - if(socket->differentClients){ + if(ret==OK && socket->differentClients){ cout << "Force update" << endl; ret=FORCE_UPDATE; } // send answer socket->SendDataOnly(&ret,sizeof(ret)); + if(ret==FAIL) + socket->SendDataOnly(mess,sizeof(mess)); socket->SendDataOnly(&retval,sizeof(retval)); //return ok/fail return ret; @@ -1779,6 +1856,10 @@ int slsReceiverTCPIPInterface::set_timer() { sprintf(mess,"Receiver locked by %s\n", socket->lastClientIP); ret=FAIL; } + else if (receiverBase == NULL){ + strcpy(mess,"Receiver not set up\n"); + ret=FAIL; + } else{ if(index[0] == slsReceiverDefs::FRAME_PERIOD) retval=receiverBase->setAcquisitionPeriod(index[1]); @@ -1838,6 +1919,10 @@ int slsReceiverTCPIPInterface::enable_compression() { sprintf(mess,"Receiver locked by %s\n", socket->lastClientIP); ret=FAIL; } + else if (receiverBase == NULL){ + strcpy(mess,"Receiver not set up\n"); + ret=FAIL; + } else if(receiverBase->getStatus()==RUNNING){ strcpy(mess,"Cannot enable/disable compression while status is running\n"); ret=FAIL; @@ -1846,7 +1931,11 @@ int slsReceiverTCPIPInterface::enable_compression() { ret = receiverBase->enableDataCompression(enable); } - retval=receiverBase->getDataCompression(); + if (receiverBase == NULL){ + strcpy(mess,"Receiver not set up\n"); + ret=FAIL; + }else + retval=receiverBase->getDataCompression(); } #endif @@ -1887,6 +1976,10 @@ int slsReceiverTCPIPInterface::set_detector_hostname() { if (lockStatus==1 && socket->differentClients==1){ sprintf(mess,"Receiver locked by %s\n", socket->lastClientIP); ret=FAIL; + } + else if (receiverBase == NULL){ + strcpy(mess,"Receiver not set up\n"); + ret=FAIL; } else{ receiverBase->initialize(hostname); @@ -1955,14 +2048,19 @@ int slsReceiverTCPIPInterface::set_dynamic_range() { } } if(ret!=FAIL){ - retval=receiverBase->setDynamicRange(dr); - dynamicrange = dr; - if(myDetectorType == EIGER){ - if(!tenGigaEnable) - packetsPerFrame = EIGER_ONE_GIGA_CONSTANT * dynamicrange * EIGER_MAX_PORTS; - else - packetsPerFrame = EIGER_TEN_GIGA_CONSTANT * dynamicrange * EIGER_MAX_PORTS; - } + if (receiverBase == NULL){ + strcpy(mess,"Receiver not set up\n"); + ret=FAIL; + }else{ + retval=receiverBase->setDynamicRange(dr); + dynamicrange = dr; + if(myDetectorType == EIGER){ + if(!tenGigaEnable) + packetsPerFrame = EIGER_ONE_GIGA_CONSTANT * dynamicrange * EIGER_MAX_PORTS; + else + packetsPerFrame = EIGER_TEN_GIGA_CONSTANT * dynamicrange * EIGER_MAX_PORTS; + } + } } } #ifdef VERBOSE @@ -2014,6 +2112,10 @@ int slsReceiverTCPIPInterface::enable_overwrite() { sprintf(mess,"Receiver locked by %s\n", socket->lastClientIP); ret=FAIL; } + else if (receiverBase == NULL){ + strcpy(mess,"Receiver not set up\n"); + ret=FAIL; + } else{ if(index >= 0) receiverBase->setEnableOverwrite(index); @@ -2069,6 +2171,10 @@ int slsReceiverTCPIPInterface::enable_tengiga() { sprintf(mess,"Receiver locked by %s\n", socket->lastClientIP); ret=FAIL; } + else if (receiverBase == NULL){ + strcpy(mess,"Receiver not set up\n"); + ret=FAIL; + } else{ retval=receiverBase->enableTenGiga(val); if((val!=-1) && (val != retval)) @@ -2313,7 +2419,15 @@ int slsReceiverTCPIPInterface::send_update() { int slsReceiverTCPIPInterface::update_client() { ret=OK; + if (receiverBase == NULL){ + strcpy(mess,"Receiver not set up\n"); + ret=FAIL; + } socket->SendDataOnly(&ret,sizeof(ret)); + if(ret == FAIL){ + socket->SendDataOnly(mess,sizeof(mess)); + return ret; + } return send_update(); }