mythen3 rxr

This commit is contained in:
2019-11-08 18:11:27 +01:00
parent aaeaeab576
commit 38ad5d7931
8 changed files with 48 additions and 14 deletions

View File

@ -331,7 +331,7 @@ private:
packetIndexMask = 0;
maxFramesPerFile = SHORT_MAX_FRAMES_PER_FILE;
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsDetectorDefs::sls_receiver_header);
defaultFifoDepth = 25000;
defaultFifoDepth = 75000;
nPixelsXComplete = 1280;
nPixelsYComplete = 1;
imageSizeComplete = 1280 * 2;
@ -527,6 +527,27 @@ class JungfrauData : public GeneralData {
}
};
class Mythen3Data : public GeneralData {
public:
/** Constructor */
Mythen3Data(){
myDetectorType = slsDetectorDefs::MYTHEN3;
nPixelsX = (256* 4 * 512);
nPixelsY = 1;
headerSizeinPacket = sizeof(slsDetectorDefs::sls_detector_header);
dataSize = 7680;//8192;
packetSize = headerSizeinPacket + dataSize;
packetsPerFrame = 2;
imageSize = dataSize * packetsPerFrame;
maxFramesPerFile = MYTHEN3_MAX_FRAMES_PER_FILE;
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsDetectorDefs::sls_receiver_header);
defaultFifoDepth = 50000;
standardheader = true;
defaultUdpSocketBufferSize = (1000 * 1024 * 1024);
};
};
class ChipTestBoardData : public GeneralData {

View File

@ -1106,6 +1106,7 @@ int slsReceiverImplementation::setDetectorType(const detectorType d) {
case JUNGFRAU:
case CHIPTESTBOARD:
case MOENCH:
case MYTHEN3:
FILE_LOG(logINFO) << " ***** " << sls::ToString(d)
<< " Receiver *****";
break;
@ -1131,6 +1132,9 @@ int slsReceiverImplementation::setDetectorType(const detectorType d) {
case MOENCH:
generalData = new MoenchData();
break;
case MYTHEN3:
generalData = new Mythen3Data();
break;
default:
break;
}

View File

@ -472,6 +472,7 @@ int slsReceiverTCPIPInterface::set_detector_type(Interface &socket) {
case CHIPTESTBOARD:
case MOENCH:
case JUNGFRAU:
case MYTHEN3:
break;
default:
throw RuntimeError("Unknown detector type: " + std::to_string(arg));
@ -598,17 +599,21 @@ int slsReceiverTCPIPInterface::set_dynamic_range(Interface &socket) {
VerifyIdle(socket);
FILE_LOG(logDEBUG1) << "Setting dynamic range: " << dr;
bool exists = false;
switch (dr) {
case 16:
exists = true;
break;
case 4:
case 8:
case 32:
if (myDetectorType == EIGER)
switch(myDetectorType) {
case EIGER:
if (dr == 4 || dr == 8 || dr == 16 || dr == 32) {
exists = true;
}
break;
case MYTHEN3:
if (dr == 32) {
exists = true;
}
break;
default:
if (dr == 16) {
exists = true;
}
break;
}
if (!exists) {