mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-17 15:27:13 +02:00
slsReceiver & client: 10genable allowed for moench and ctb, ctb server: better way to divide to packets to send via udp
This commit is contained in:
@ -22,7 +22,7 @@ extern int nframes;
|
|||||||
extern char* ramValues;
|
extern char* ramValues;
|
||||||
|
|
||||||
#define UDP_PACKET_HEADER_VERSION (0x1)
|
#define UDP_PACKET_HEADER_VERSION (0x1)
|
||||||
#define UDP_PACKET_MAX_DATA_BYTES (1280)
|
#define UDP_PACKET_DATA_BYTES (1344)
|
||||||
|
|
||||||
|
|
||||||
uint32_t udpPacketNumber = 0;
|
uint32_t udpPacketNumber = 0;
|
||||||
@ -41,13 +41,6 @@ uint64_t getUDPFrameNumber() {
|
|||||||
return udpFrameNumber;
|
return udpFrameNumber;
|
||||||
}
|
}
|
||||||
|
|
||||||
void calculateDataBytesPerSample() {
|
|
||||||
dataBytesPerSample = dataBytes / nSamples;
|
|
||||||
numSamplesPerPacket = (double)UDP_PACKET_MAX_DATA_BYTES / (double)dataBytesPerSample;
|
|
||||||
dataBytesPerPacket = dataBytesPerSample * numSamplesPerPacket;
|
|
||||||
FILE_LOG(logDEBUG2, ("Databytes/Sample = %d, numSamples/Packet:%d dataBytes/Packet:%d\n",
|
|
||||||
dataBytesPerSample, numSamplesPerPacket, dataBytesPerPacket));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called for each UDP packet header creation
|
* Called for each UDP packet header creation
|
||||||
@ -81,35 +74,34 @@ int fillUDPPacket(char* buffer) {
|
|||||||
|
|
||||||
sls_detector_header* header = (sls_detector_header*)(buffer);
|
sls_detector_header* header = (sls_detector_header*)(buffer);
|
||||||
|
|
||||||
// first packet (update frame number)
|
// update frame number, starts at 1 (reset packet number)
|
||||||
if (udpHeaderOffset == 0) {
|
if (udpHeaderOffset == 0) {
|
||||||
// increment frame number (starts at 1)
|
|
||||||
++udpFrameNumber;
|
++udpFrameNumber;
|
||||||
header->frameNumber = udpFrameNumber;
|
header->frameNumber = udpFrameNumber;
|
||||||
udpPacketNumber = -1;
|
udpPacketNumber = -1;
|
||||||
}
|
}
|
||||||
// increment udp packet number (starts at 0)
|
|
||||||
|
// increment and copy udp packet number (starts at 0)
|
||||||
++udpPacketNumber;
|
++udpPacketNumber;
|
||||||
|
|
||||||
// copy packet number
|
|
||||||
FILE_LOG(logDEBUG2, ("Creating packet number %d (fnum:%lld)\n", udpPacketNumber, (long long int) udpFrameNumber));
|
|
||||||
header->packetNumber = udpPacketNumber;
|
header->packetNumber = udpPacketNumber;
|
||||||
|
FILE_LOG(logDEBUG2, ("Creating packet number %d (fnum:%lld)\n", udpPacketNumber, (long long int) udpFrameNumber));
|
||||||
|
|
||||||
// calculate number of bytes to write
|
// calculate number of bytes to copy
|
||||||
int numBytesToWrite = ((udpHeaderOffset + dataBytesPerPacket) <= dataBytes) ?
|
int numBytesToCopy = ((udpHeaderOffset + UDP_PACKET_DATA_BYTES) <= dataBytes) ?
|
||||||
dataBytesPerPacket : (dataBytes - udpHeaderOffset);
|
UDP_PACKET_DATA_BYTES : (dataBytes - udpHeaderOffset);
|
||||||
|
header->reserved = numBytesToCopy;
|
||||||
|
|
||||||
// copy number of samples in current packet
|
// copy data
|
||||||
header->reserved = (numBytesToWrite / dataBytesPerSample);
|
memcpy(buffer + sizeof(sls_detector_header), ramValues + udpHeaderOffset, numBytesToCopy);
|
||||||
if (numBytesToWrite % dataBytesPerSample) {
|
// pad last packet if extra space
|
||||||
FILE_LOG(logERROR, ("fillUDPPacketHeader: numBytesToWrite is not divisible by dataBytesPerSample! Calculation error\n"));
|
if (numBytesToCopy < UDP_PACKET_DATA_BYTES) {
|
||||||
|
int bytes = UDP_PACKET_DATA_BYTES - numBytesToCopy;
|
||||||
|
FILE_LOG(logDEBUG1, ("Padding %d bytes for fnum:%lld pnum:%d\n", bytes, (long long int)udpFrameNumber, udpPacketNumber));
|
||||||
|
memset(buffer + sizeof(sls_detector_header) + numBytesToCopy, 0, bytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
// copy date
|
|
||||||
memcpy(buffer + sizeof(sls_detector_header), ramValues + udpHeaderOffset, numBytesToWrite);
|
|
||||||
|
|
||||||
// increment offset
|
// increment offset
|
||||||
udpHeaderOffset += numBytesToWrite;
|
udpHeaderOffset += numBytesToCopy;
|
||||||
|
|
||||||
return numBytesToWrite + sizeof(sls_detector_header);
|
return UDP_PACKET_DATA_BYTES + sizeof(sls_detector_header);
|
||||||
}
|
}
|
||||||
|
@ -1498,9 +1498,8 @@ int read_all(int file_des) {
|
|||||||
|
|
||||||
if (createUDPSocket() == OK) {
|
if (createUDPSocket() == OK) {
|
||||||
|
|
||||||
char buffer[UDP_PACKET_MAX_DATA_BYTES + sizeof(sls_detector_header)];
|
char buffer[UDP_PACKET_DATA_BYTES + sizeof(sls_detector_header)];
|
||||||
createUDPPacketHeader(buffer, getHardwareSerialNumber());
|
createUDPPacketHeader(buffer, getHardwareSerialNumber());
|
||||||
calculateDataBytesPerSample();
|
|
||||||
|
|
||||||
// keep reading frames
|
// keep reading frames
|
||||||
while(readFrameFromFifo() == OK) {
|
while(readFrameFromFifo() == OK) {
|
||||||
|
@ -424,8 +424,10 @@ void slsDetector::initializeDetectorStructure(detectorType type) {
|
|||||||
thisDetector->receiver_framesPerFile = JFRAU_MAX_FRAMES_PER_FILE;
|
thisDetector->receiver_framesPerFile = JFRAU_MAX_FRAMES_PER_FILE;
|
||||||
break;
|
break;
|
||||||
case CHIPTESTBOARD:
|
case CHIPTESTBOARD:
|
||||||
|
thisDetector->receiver_framesPerFile = CTB_MAX_FRAMES_PER_FILE;
|
||||||
|
break;
|
||||||
case MOENCH:
|
case MOENCH:
|
||||||
thisDetector->receiver_framesPerFile = JFRAU_MAX_FRAMES_PER_FILE;
|
thisDetector->receiver_framesPerFile = MOENCH_MAX_FRAMES_PER_FILE;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@ -2420,10 +2422,11 @@ std::string slsDetector::setReceiver(const std::string &receiverIP) {
|
|||||||
thisDetector->timerValue[SUBFRAME_ACQUISITION_TIME]);
|
thisDetector->timerValue[SUBFRAME_ACQUISITION_TIME]);
|
||||||
setTimer(SUBFRAME_DEADTIME, thisDetector->timerValue[SUBFRAME_DEADTIME]);
|
setTimer(SUBFRAME_DEADTIME, thisDetector->timerValue[SUBFRAME_DEADTIME]);
|
||||||
}
|
}
|
||||||
|
setDynamicRange(thisDetector->dynamicRange);
|
||||||
if (thisDetector->myDetectorType == CHIPTESTBOARD || thisDetector->myDetectorType == MOENCH) {
|
if (thisDetector->myDetectorType == CHIPTESTBOARD || thisDetector->myDetectorType == MOENCH) {
|
||||||
setTimer(SAMPLES, thisDetector->timerValue[SAMPLES]);
|
setTimer(SAMPLES, thisDetector->timerValue[SAMPLES]);
|
||||||
|
enableTenGigabitEthernet(thisDetector->tenGigaEnable);
|
||||||
}
|
}
|
||||||
setDynamicRange(thisDetector->dynamicRange);
|
|
||||||
if (thisDetector->myDetectorType == EIGER) {
|
if (thisDetector->myDetectorType == EIGER) {
|
||||||
setFlippedData(X, -1);
|
setFlippedData(X, -1);
|
||||||
activate(-1);
|
activate(-1);
|
||||||
|
@ -354,7 +354,7 @@ slsDetectorCommand::slsDetectorCommand(multiSlsDetector *det) {
|
|||||||
++i;
|
++i;
|
||||||
|
|
||||||
/*! \page config
|
/*! \page config
|
||||||
- <b>tengiga [i]</b> enables/disables 10GbE in system (detector & receiver). 1 enabled 10GbE, 0 enables 1GbE. Used in EIGER only. \c Returns \c (int)
|
- <b>tengiga [i]</b> enables/disables 10GbE in system (detector & receiver). 1 enabled 10GbE, 0 enables 1GbE. Used in EIGER, Moench and ChipTestBoard only. \c Returns \c (int)
|
||||||
*/
|
*/
|
||||||
descrToFuncMap[i].m_pFuncName = "tengiga"; //
|
descrToFuncMap[i].m_pFuncName = "tengiga"; //
|
||||||
descrToFuncMap[i].m_pFuncPtr = &slsDetectorCommand::cmdReceiver;
|
descrToFuncMap[i].m_pFuncPtr = &slsDetectorCommand::cmdReceiver;
|
||||||
|
@ -407,110 +407,6 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class JCTBData : public GeneralData {
|
|
||||||
|
|
||||||
|
|
||||||
private:
|
|
||||||
/** Structure of an jungfrau ctb packet header */
|
|
||||||
typedef struct {
|
|
||||||
unsigned char emptyHeader[6];
|
|
||||||
unsigned char reserved[4];
|
|
||||||
unsigned char packetNumber[1];
|
|
||||||
unsigned char frameNumber[3];
|
|
||||||
unsigned char bunchid[8];
|
|
||||||
} jfrauctb_packet_header_t;
|
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** Bytes Per Adc */
|
|
||||||
const static uint32_t bytesPerAdc = 2;
|
|
||||||
|
|
||||||
/** Constructor */
|
|
||||||
JCTBData(){
|
|
||||||
myDetectorType = slsDetectorDefs::CHIPTESTBOARD;
|
|
||||||
nPixelsX = 400;
|
|
||||||
nPixelsY = 400;
|
|
||||||
headerSizeinPacket = 22;
|
|
||||||
dataSize = 8192;
|
|
||||||
packetSize = headerSizeinPacket + dataSize;
|
|
||||||
packetsPerFrame = 1;
|
|
||||||
imageSize = nPixelsX * nPixelsY * 2;
|
|
||||||
frameIndexMask = 0xFFFFFF;
|
|
||||||
maxFramesPerFile = JFCTB_MAX_FRAMES_PER_FILE;
|
|
||||||
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsDetectorDefs::sls_receiver_header);
|
|
||||||
defaultFifoDepth = 2500;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get Header Infomation (frame number, packet number)
|
|
||||||
* @param index thread index for debugging purposes
|
|
||||||
* @param packetData pointer to data
|
|
||||||
* @param dynamicRange dynamic range to assign subframenumber if 32 bit mode
|
|
||||||
* @param oddStartingPacket odd starting packet (gotthard)
|
|
||||||
* @param frameNumber frame number * @param packetNumber packet number
|
|
||||||
* @param subFrameNumber sub frame number if applicable
|
|
||||||
* @param bunchId bunch id
|
|
||||||
*/
|
|
||||||
void GetHeaderInfo(int index, char* packetData, uint32_t dynamicRange, bool oddStartingPacket,
|
|
||||||
uint64_t& frameNumber, uint32_t& packetNumber, uint32_t& subFrameNumber, uint64_t& bunchId) const {
|
|
||||||
subFrameNumber = -1;
|
|
||||||
jfrauctb_packet_header_t* header = (jfrauctb_packet_header_t*)(packetData);
|
|
||||||
frameNumber = (uint64_t)((*( (uint32_t*) header->frameNumber)) & frameIndexMask);
|
|
||||||
packetNumber = (uint32_t)(*( (uint8_t*) header->packetNumber));
|
|
||||||
bunchId = (*((uint64_t*) header->bunchid));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Setting packets per frame changes member variables
|
|
||||||
* @param ns number of samples
|
|
||||||
* @param nroich number of channels in roi
|
|
||||||
*/
|
|
||||||
void setNumberofSamples(const uint64_t ns, uint32_t nroich) {
|
|
||||||
packetsPerFrame = ceil(double(2 * (nroich ? nroich : 32) * ns) / dataSize);
|
|
||||||
nPixelsY = (ns * 2) / 25;/* depends on nroich also?? */
|
|
||||||
imageSize = nPixelsX * nPixelsY * 2;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Print all variables
|
|
||||||
*/
|
|
||||||
void Print(TLogLevel level = logDEBUG1) const {
|
|
||||||
GeneralData::Print(level);
|
|
||||||
FILE_LOG(logINFO) << "Bytes Per Adc: " << bytesPerAdc;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
class JungfrauData : public GeneralData {
|
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
/** Constructor */
|
|
||||||
JungfrauData(){
|
|
||||||
myDetectorType = slsDetectorDefs::JUNGFRAU;
|
|
||||||
nPixelsX = (256*4);
|
|
||||||
nPixelsY = 512;
|
|
||||||
emptyHeader = 6;
|
|
||||||
headerSizeinPacket = emptyHeader + sizeof(slsDetectorDefs::sls_detector_header);
|
|
||||||
dataSize = 8192;
|
|
||||||
packetSize = headerSizeinPacket + dataSize;
|
|
||||||
packetsPerFrame = 128;
|
|
||||||
imageSize = dataSize*packetsPerFrame;
|
|
||||||
maxFramesPerFile = JFRAU_MAX_FRAMES_PER_FILE;
|
|
||||||
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsDetectorDefs::sls_receiver_header);
|
|
||||||
defaultFifoDepth = 2500;
|
|
||||||
standardheader = true;
|
|
||||||
defaultUdpSocketBufferSize = (2000 * 1024 * 1024);
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
class EigerData : public GeneralData {
|
class EigerData : public GeneralData {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -586,3 +482,168 @@ class EigerData : public GeneralData {
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class JungfrauData : public GeneralData {
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
/** Constructor */
|
||||||
|
JungfrauData(){
|
||||||
|
myDetectorType = slsDetectorDefs::JUNGFRAU;
|
||||||
|
nPixelsX = (256*4);
|
||||||
|
nPixelsY = 512;
|
||||||
|
emptyHeader = 6;
|
||||||
|
headerSizeinPacket = emptyHeader + sizeof(slsDetectorDefs::sls_detector_header);
|
||||||
|
dataSize = 8192;
|
||||||
|
packetSize = headerSizeinPacket + dataSize;
|
||||||
|
packetsPerFrame = 128;
|
||||||
|
imageSize = dataSize*packetsPerFrame;
|
||||||
|
maxFramesPerFile = JFRAU_MAX_FRAMES_PER_FILE;
|
||||||
|
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsDetectorDefs::sls_receiver_header);
|
||||||
|
defaultFifoDepth = 2500;
|
||||||
|
standardheader = true;
|
||||||
|
defaultUdpSocketBufferSize = (2000 * 1024 * 1024);
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class ChipTestBoardData : public GeneralData {
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
|
||||||
|
/** Constructor */
|
||||||
|
ChipTestBoardData(){
|
||||||
|
myDetectorType = slsDetectorDefs::CHIPTESTBOARD;
|
||||||
|
nPixelsX = 36;
|
||||||
|
nPixelsY = 1;
|
||||||
|
headerSizeinPacket = sizeof(slsDetectorDefs::sls_detector_header);
|
||||||
|
dataSize = 0; // to be calculatedd
|
||||||
|
packetSize = headerSizeinPacket + dataSize;
|
||||||
|
packetsPerFrame = 0; // to be calculated
|
||||||
|
imageSize = nPixelsX * nPixelsY * 2;
|
||||||
|
maxFramesPerFile = CTB_MAX_FRAMES_PER_FILE;
|
||||||
|
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsDetectorDefs::sls_receiver_header);
|
||||||
|
defaultFifoDepth = 2500;
|
||||||
|
standardheader = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Setting packets per frame changes member variables
|
||||||
|
* @param ns number of samples
|
||||||
|
* @param nroich number of channels in roi
|
||||||
|
*/
|
||||||
|
void setNumberofSamples(const uint64_t ns, uint32_t nroich) {
|
||||||
|
packetsPerFrame = ceil(double(2 * (nroich ? nroich : 32) * ns) / dataSize);
|
||||||
|
nPixelsY = (ns * 2) / 25;/* depends on nroich also?? */
|
||||||
|
imageSize = nPixelsX * nPixelsY * 2;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Setting ten giga enable changes member variables
|
||||||
|
* @param tgEnable true if 10GbE is enabled, else false
|
||||||
|
* @param dr dynamic range
|
||||||
|
*/
|
||||||
|
void SetTenGigaEnable(bool tgEnable, int dr) {
|
||||||
|
dataSize = (tgEnable ? 4096 : 1024);
|
||||||
|
packetSize = headerSizeinPacket + dataSize;
|
||||||
|
packetsPerFrame = (tgEnable ? 4 : 16) * dr;
|
||||||
|
imageSize = dataSize*packetsPerFrame;
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class MoenchData : public GeneralData {
|
||||||
|
|
||||||
|
|
||||||
|
private:
|
||||||
|
/** Structure of an jungfrau ctb packet header */
|
||||||
|
typedef struct {
|
||||||
|
unsigned char emptyHeader[6];
|
||||||
|
unsigned char reserved[4];
|
||||||
|
unsigned char packetNumber[1];
|
||||||
|
unsigned char frameNumber[3];
|
||||||
|
unsigned char bunchid[8];
|
||||||
|
} jfrauctb_packet_header_t;
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/** Bytes Per Adc */
|
||||||
|
const static uint32_t bytesPerAdc = 2;
|
||||||
|
|
||||||
|
/** Constructor */
|
||||||
|
MoenchData(){
|
||||||
|
myDetectorType = slsDetectorDefs::MOENCH;
|
||||||
|
nPixelsX = 400;
|
||||||
|
nPixelsY = 400;
|
||||||
|
headerSizeinPacket = 22;
|
||||||
|
dataSize = 8192;
|
||||||
|
packetSize = headerSizeinPacket + dataSize;
|
||||||
|
packetsPerFrame = 1;
|
||||||
|
imageSize = nPixelsX * nPixelsY * 2;
|
||||||
|
frameIndexMask = 0xFFFFFF;
|
||||||
|
maxFramesPerFile = CTB_MAX_FRAMES_PER_FILE;
|
||||||
|
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsDetectorDefs::sls_receiver_header);
|
||||||
|
defaultFifoDepth = 2500;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get Header Infomation (frame number, packet number)
|
||||||
|
* @param index thread index for debugging purposes
|
||||||
|
* @param packetData pointer to data
|
||||||
|
* @param dynamicRange dynamic range to assign subframenumber if 32 bit mode
|
||||||
|
* @param oddStartingPacket odd starting packet (gotthard)
|
||||||
|
* @param frameNumber frame number * @param packetNumber packet number
|
||||||
|
* @param subFrameNumber sub frame number if applicable
|
||||||
|
* @param bunchId bunch id
|
||||||
|
*/
|
||||||
|
void GetHeaderInfo(int index, char* packetData, uint32_t dynamicRange, bool oddStartingPacket,
|
||||||
|
uint64_t& frameNumber, uint32_t& packetNumber, uint32_t& subFrameNumber, uint64_t& bunchId) const {
|
||||||
|
subFrameNumber = -1;
|
||||||
|
jfrauctb_packet_header_t* header = (jfrauctb_packet_header_t*)(packetData);
|
||||||
|
frameNumber = (uint64_t)((*( (uint32_t*) header->frameNumber)) & frameIndexMask);
|
||||||
|
packetNumber = (uint32_t)(*( (uint8_t*) header->packetNumber));
|
||||||
|
bunchId = (*((uint64_t*) header->bunchid));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Setting packets per frame changes member variables
|
||||||
|
* @param ns number of samples
|
||||||
|
* @param nroich number of channels in roi
|
||||||
|
*/
|
||||||
|
void setNumberofSamples(const uint64_t ns, uint32_t nroich) {
|
||||||
|
packetsPerFrame = ceil(double(2 * (nroich ? nroich : 32) * ns) / dataSize);
|
||||||
|
nPixelsY = (ns * 2) / 25;/* depends on nroich also?? */
|
||||||
|
imageSize = nPixelsX * nPixelsY * 2;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Setting ten giga enable changes member variables
|
||||||
|
* @param tgEnable true if 10GbE is enabled, else false
|
||||||
|
* @param dr dynamic range
|
||||||
|
*/
|
||||||
|
void SetTenGigaEnable(bool tgEnable, int dr) {
|
||||||
|
dataSize = (tgEnable ? 4096 : 1024);
|
||||||
|
packetSize = headerSizeinPacket + dataSize;
|
||||||
|
packetsPerFrame = (tgEnable ? 4 : 16) * dr;
|
||||||
|
imageSize = dataSize*packetsPerFrame;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Print all variables
|
||||||
|
*/
|
||||||
|
void Print(TLogLevel level = logDEBUG1) const {
|
||||||
|
GeneralData::Print(level);
|
||||||
|
FILE_LOG(logINFO) << "Bytes Per Adc: " << bytesPerAdc;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -844,10 +844,11 @@ int slsReceiverImplementation::setDetectorType(const detectorType d) {
|
|||||||
|
|
||||||
//set detector specific variables
|
//set detector specific variables
|
||||||
switch(myDetectorType) {
|
switch(myDetectorType) {
|
||||||
case GOTTHARD: generalData = new GotthardData(); break;
|
case GOTTHARD: generalData = new GotthardData(); break;
|
||||||
case EIGER: generalData = new EigerData(); break;
|
case EIGER: generalData = new EigerData(); break;
|
||||||
case CHIPTESTBOARD: generalData = new JCTBData(); break;
|
case JUNGFRAU: generalData = new JungfrauData(); break;
|
||||||
case JUNGFRAU: generalData = new JungfrauData(); break;
|
case CHIPTESTBOARD: generalData = new ChipTestBoardData(); break;
|
||||||
|
case MOENCH: generalData = new MoenchData(); break;
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
numThreads = generalData->threadsPerReceiver;
|
numThreads = generalData->threadsPerReceiver;
|
||||||
|
@ -1247,7 +1247,7 @@ int slsReceiverTCPIPInterface::enable_tengiga() {
|
|||||||
if (interface->Server_ReceiveArg(ret, mess, &val, sizeof(val), true, receiver) == FAIL)
|
if (interface->Server_ReceiveArg(ret, mess, &val, sizeof(val), true, receiver) == FAIL)
|
||||||
return FAIL;
|
return FAIL;
|
||||||
|
|
||||||
if (myDetectorType != EIGER)
|
if (myDetectorType != EIGER && myDetectorType != CHIPTESTBOARD && myDetectorType != MOENCH)
|
||||||
functionNotImplemented();
|
functionNotImplemented();
|
||||||
|
|
||||||
// base object not null
|
// base object not null
|
||||||
|
@ -55,11 +55,10 @@ typedef int int32_t;
|
|||||||
#define MAX_STR_LENGTH 1000
|
#define MAX_STR_LENGTH 1000
|
||||||
#define MAX_FRAMES_PER_FILE 20000
|
#define MAX_FRAMES_PER_FILE 20000
|
||||||
#define SHORT_MAX_FRAMES_PER_FILE 100000
|
#define SHORT_MAX_FRAMES_PER_FILE 100000
|
||||||
#define MOENCH_MAX_FRAMES_PER_FILE 1000
|
#define MOENCH_MAX_FRAMES_PER_FILE 100000
|
||||||
#define EIGER_MAX_FRAMES_PER_FILE 10000
|
#define EIGER_MAX_FRAMES_PER_FILE 10000
|
||||||
#define JFRAU_MAX_FRAMES_PER_FILE 10000
|
#define JFRAU_MAX_FRAMES_PER_FILE 10000
|
||||||
#define JFCTB_MAX_FRAMES_PER_FILE 100000
|
#define CTB_MAX_FRAMES_PER_FILE 20000
|
||||||
|
|
||||||
|
|
||||||
#define DEFAULT_STREAMING_TIMER_IN_MS 200
|
#define DEFAULT_STREAMING_TIMER_IN_MS 200
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user