diff --git a/slsReceiverSoftware/includes/receiver_defs.h b/slsReceiverSoftware/includes/receiver_defs.h index 8dfbf7c99..42ee131a1 100755 --- a/slsReceiverSoftware/includes/receiver_defs.h +++ b/slsReceiverSoftware/includes/receiver_defs.h @@ -19,16 +19,24 @@ #define HEADER_SIZE_NUM_PACKETS 1 -//all max frames defined in sls_receiver_defs.h. 20000 gotthard, 100000 for short gotthard, 1000 for moench +//all max frames defined in sls_receiver_defs.h. 20000 gotthard, 100000 for short gotthard, 1000 for moench, eiger 20000 #define GOTTHARD_FIFO_SIZE 25000 //cannot be less than max jobs per thread = 1000 -/*#define GOTTHARD_ALIGNED_FRAME_SIZE 4096*/ +/*#define GOTTHARD_ALIGNED_FRAME_SIZE 4096*/ #define GOTTHARD_PACKETS_PER_FRAME 2 #define GOTTHARD_ONE_PACKET_SIZE 1286 #define GOTTHARD_BUFFER_SIZE (GOTTHARD_ONE_PACKET_SIZE*GOTTHARD_PACKETS_PER_FRAME) //1286*2 #define GOTTHARD_DATA_BYTES (1280*GOTTHARD_PACKETS_PER_FRAME) //1280*2 +#define GOTTHARD_FRAME_INDEX_MASK 0xFFFFFFFE +#define GOTTHARD_FRAME_INDEX_OFFSET 1 +#define GOTTHARD_PACKET_INDEX_MASK 0x1 + +#define GOTTHARD_PIXELS_IN_ROW 1280 +#define GOTTHARD_PIXELS_IN_COL 1 + + #define GOTTHARD_SHORT_PACKETS_PER_FRAME 1 #define GOTTHARD_SHORT_BUFFER_SIZE 518 #define GOTTHARD_SHORT_DATABYTES 512 @@ -39,13 +47,6 @@ #define GOTTHARD_SHORT_PIXELS_IN_COL 1 -#define GOTTHARD_FRAME_INDEX_MASK 0xFFFFFFFE -#define GOTTHARD_FRAME_INDEX_OFFSET 1 -#define GOTTHARD_PACKET_INDEX_MASK 0x1 - -#define GOTTHARD_PIXELS_IN_ROW 1280 -#define GOTTHARD_PIXELS_IN_COL 1 - #define MOENCH_FIFO_SIZE 2500 //cannot be less than max jobs per thread = 1000 @@ -55,18 +56,29 @@ #define MOENCH_BUFFER_SIZE (MOENCH_ONE_PACKET_SIZE*MOENCH_PACKETS_PER_FRAME) //1286*40 #define MOENCH_DATA_BYTES (1280*MOENCH_PACKETS_PER_FRAME) //1280*40 +#define MOENCH_FRAME_INDEX_MASK 0xFFFFFF00 +#define MOENCH_FRAME_INDEX_OFFSET 8 +#define MOENCH_PACKET_INDEX_MASK 0xFF + #define MOENCH_BYTES_PER_ADC (40*2) #define MOENCH_PIXELS_IN_ONE_ROW 160 #define MOENCH_BYTES_IN_ONE_ROW (MOENCH_PIXELS_IN_ONE_ROW*2) -#define MOENCH_FRAME_INDEX_MASK 0xFFFFFF00 -#define MOENCH_FRAME_INDEX_OFFSET 8 -#define MOENCH_PACKET_INDEX_MASK 0xFF +#define EIGER_FIFO_SIZE 2500 //cannot be less than max jobs per thread = 1000 +/*#define EIGER_ALIGNED_FRAME_SIZE 65536*/ +#define EIGER_PACKETS_PER_FRAME 1 //default for 16B +#define EIGER_ONE_PACKET_SIZE 1040 //default for 16B +#define EIGER_BUFFER_SIZE (EIGER_ONE_PACKET_SIZE*EIGER_PACKETS_PER_FRAME) //1040*1 //default for 16B +#define EIGER_DATA_BYTES (1032*EIGER_PACKETS_PER_FRAME) //1280*40 //default for 16B + +#define EIGER_FRAME_INDEX_MASK 0xFFFFFF00 +#define EIGER_FRAME_INDEX_OFFSET 8 +#define EIGER_PACKET_INDEX_MASK 0xFF + -//#define THIS_SOFTWARE_VERSION 0x20120919 #endif diff --git a/slsReceiverSoftware/includes/sls_receiver_defs.h b/slsReceiverSoftware/includes/sls_receiver_defs.h index c4c1fc63e..70fc6ece8 100755 --- a/slsReceiverSoftware/includes/sls_receiver_defs.h +++ b/slsReceiverSoftware/includes/sls_receiver_defs.h @@ -19,6 +19,7 @@ typedef int int32_t; #define MAX_FRAMES_PER_FILE 20000 #define SHORT_MAX_FRAMES_PER_FILE 100000 #define MOENCH_MAX_FRAMES_PER_FILE 1000 +#define EIGER_MAX_FRAMES_PER_FILE 20000 /** diff --git a/slsReceiverSoftware/slsReceiver/Makefile b/slsReceiverSoftware/slsReceiver/Makefile index 0fd416ca0..92428c957 100644 --- a/slsReceiverSoftware/slsReceiver/Makefile +++ b/slsReceiverSoftware/slsReceiver/Makefile @@ -40,7 +40,7 @@ $(DESTDIR)/sslsReceiver: lib $(DESTDIR)/slsReceiver: eigerReceiver lib - $(CXX) -o $@ $(SRC_CLNT) $(FLAGS) $(INCLUDES) $(CLAGS) $(LIBS) $(LDFLAGRXR) -fPIC + $(CXX) -o $@ $(SRC_CLNT) $(FLAGS) $(INCLUDES) $(CLAGS) $(LIBS) $(LDFLAGRXR) -fPIC #$(EIGERFLAGS) diff --git a/slsReceiverSoftware/slsReceiver/slsReceiverTCPIPInterface.cpp b/slsReceiverSoftware/slsReceiver/slsReceiverTCPIPInterface.cpp index 244c685b1..74c12dbca 100644 --- a/slsReceiverSoftware/slsReceiver/slsReceiverTCPIPInterface.cpp +++ b/slsReceiverSoftware/slsReceiver/slsReceiverTCPIPInterface.cpp @@ -798,9 +798,9 @@ int slsReceiverTCPIPInterface::start_receiver(){ // send answer socket->SendDataOnly(&ret,sizeof(ret)); - if(ret==FAIL) + if(ret==FAIL){ socket->SendDataOnly(mess,sizeof(mess)); - cout<<"ret of start receiver:"<setFileName(fileName); - } +#endif - onePacketSize = bufferSize/packetsPerFrame; + } latestData = new char[bufferSize]; @@ -322,7 +336,7 @@ void slsReceiverUDPFunctions::resetTotalFramesCaught(){ /*file parameters*/ char* slsReceiverUDPFunctions::getFilePath(){ - if(myDetectorType == EIGER) + if(receiver != NULL) return receiver->getFilePath(); else return filePath; @@ -333,7 +347,7 @@ char* slsReceiverUDPFunctions::setFilePath(char c[]){ //check if filepath exists struct stat st; if(stat(c,&st) == 0){ - if(myDetectorType == EIGER) + if(receiver != NULL) receiver->setFilePath(c); else strcpy(filePath,c); @@ -347,7 +361,7 @@ char* slsReceiverUDPFunctions::setFilePath(char c[]){ char* slsReceiverUDPFunctions::getFileName(){ - if(myDetectorType == EIGER) + if(receiver != NULL) return receiver->getFileName(); else return fileName; @@ -355,7 +369,7 @@ char* slsReceiverUDPFunctions::getFileName(){ char* slsReceiverUDPFunctions::setFileName(char c[]){ if(strlen(c)){ - if(myDetectorType == EIGER) + if(receiver != NULL) receiver->setFileName(c); else strcpy(fileName,c); @@ -385,13 +399,13 @@ int slsReceiverUDPFunctions::setFrameIndexNeeded(int i){ int slsReceiverUDPFunctions::setEnableFileWrite(int i){ if(i!=-1){ - if(myDetectorType == EIGER) + if(receiver != NULL) receiver->setEnableFileWrite(i); else enableFileWrite=i; } - if(myDetectorType == EIGER) + if(receiver != NULL) return receiver->getEnableFileWrite(); else return enableFileWrite; @@ -402,13 +416,13 @@ int slsReceiverUDPFunctions::setEnableFileWrite(int i){ int slsReceiverUDPFunctions::enableOverwrite(int i){ if(i!=-1){ - if(myDetectorType == EIGER) + if(receiver != NULL) receiver->setEnableOverwrite(i); else overwrite=i; } - if(myDetectorType == EIGER) + if(receiver != NULL) return receiver->getEnableOverwrite(); else return overwrite; @@ -421,7 +435,7 @@ int slsReceiverUDPFunctions::enableOverwrite(int i){ /*other parameters*/ slsReceiverDefs::runStatus slsReceiverUDPFunctions::getStatus(){ - if(myDetectorType == EIGER) + if(receiver != NULL) return receiver->getStatus(); else return status; @@ -430,14 +444,14 @@ slsReceiverDefs::runStatus slsReceiverUDPFunctions::getStatus(){ char* slsReceiverUDPFunctions::setDetectorHostname(char c[]){ if(strlen(c)){ - if(myDetectorType == EIGER){ + if(receiver != NULL){ if(receiver->getDetectorHostname()== NULL) receiver->initialize(c); }else strcpy(detHostname,c); } - if(myDetectorType == EIGER) + if(receiver != NULL) return receiver->getDetectorHostname(); else return detHostname; @@ -456,13 +470,13 @@ void slsReceiverUDPFunctions::setUDPPortNo(int p){ int32_t slsReceiverUDPFunctions::setNumberOfFrames(int32_t fnum){ if(fnum >= 0){ - if(myDetectorType == EIGER) + if(receiver != NULL) receiver->setNumberOfFrames(fnum); else numberOfFrames = fnum; } - if(myDetectorType == EIGER) + if(receiver != NULL) return receiver->getNumberOfFrames(); else return numberOfFrames; @@ -470,13 +484,13 @@ int32_t slsReceiverUDPFunctions::setNumberOfFrames(int32_t fnum){ int32_t slsReceiverUDPFunctions::setScanTag(int32_t stag){ if(stag >= 0){ - if(myDetectorType == EIGER) + if(receiver != NULL) receiver->setScanTag(stag); else scanTag = stag; } - if(myDetectorType == EIGER) + if(receiver != NULL) return receiver->getScanTag(); else return scanTag; @@ -484,13 +498,13 @@ int32_t slsReceiverUDPFunctions::setScanTag(int32_t stag){ int32_t slsReceiverUDPFunctions::setDynamicRange(int32_t dr){ if(dr >= 0){ - if(myDetectorType == EIGER) + if(receiver != NULL) receiver->setDynamicRange(dr); else dynamicRange = dr; } - if(myDetectorType == EIGER) + if(receiver != NULL) return receiver->getDynamicRange(); else return dynamicRange; @@ -541,7 +555,7 @@ int64_t slsReceiverUDPFunctions::setAcquisitionPeriod(int64_t index){ if(index >= 0){ if(index != acquisitionPeriod){ acquisitionPeriod = index; - if(myDetectorType != EIGER) + if(receiver != NULL) setupFifoStructure(); } } @@ -658,6 +672,10 @@ void slsReceiverUDPFunctions::setupFilter(){ void slsReceiverUDPFunctions::setupFifoStructure(){ + + if(receiver != NULL) + return; + int64_t i; int oldn = numJobsPerThread; @@ -688,6 +706,8 @@ void slsReceiverUDPFunctions::setupFifoStructure(){ fifosize = GOTTHARD_FIFO_SIZE; if(myDetectorType == MOENCH) fifosize = MOENCH_FIFO_SIZE; + else if(myDetectorType == EIGER) + fifosize = EIGER_FIFO_SIZE; if(fifosize % numJobsPerThread) fifosize = (fifosize/numJobsPerThread)+1; @@ -1212,7 +1232,7 @@ void slsReceiverUDPFunctions::closeFile(int ithr){ int slsReceiverUDPFunctions::startReceiver(char message[]){ - if(myDetectorType == EIGER) + if(receiver != NULL) return receiver->startReceiver(message); @@ -1276,7 +1296,7 @@ int slsReceiverUDPFunctions::startReceiver(char message[]){ int slsReceiverUDPFunctions::stopReceiver(){ - if(myDetectorType == EIGER) + if(receiver != NULL) return receiver->stopReceiver(); @@ -1309,7 +1329,7 @@ int slsReceiverUDPFunctions::stopReceiver(){ void slsReceiverUDPFunctions::startReadout(){ - if(myDetectorType == EIGER){ + if(receiver != NULL){ receiver->stopReceiver(); return; }