Partialreadout (#47)

* eiger server, rxr: partial readout, also gui messages: up last command, down clear command

* added binaries and resolved conflict

* bugfix eiger server: interrupt subframe is bit 2 and not bit number 3

* brackets in defs
This commit is contained in:
Dhanya Thattil
2019-08-07 09:08:58 +02:00
committed by GitHub
parent e20b5e6952
commit 98ddf154b2
28 changed files with 389 additions and 99 deletions

View File

@ -70,6 +70,7 @@ void slsReceiverImplementation::InitializeMembers() {
flippedDataX = 0;
gapPixelsEnable = false;
quadEnable = false;
numLinesReadout = MAX_EIGER_ROWS_PER_READOUT;
readoutFlags = GET_READOUT_FLAGS;
//*** receiver parameters ***
@ -168,6 +169,11 @@ bool slsReceiverImplementation::getQuad() const {
return quadEnable;
}
int slsReceiverImplementation::getReadNLines() const {
FILE_LOG(logDEBUG) << __AT__ << " starting";
return numLinesReadout;
}
slsDetectorDefs::readOutFlags
slsReceiverImplementation::getReadOutFlags() const {
FILE_LOG(logDEBUG3) << __SHORT_AT__ << " called";
@ -543,6 +549,11 @@ int slsReceiverImplementation::setQuad(const bool b) {
return OK;
}
void slsReceiverImplementation::setReadNLines(const int value) {
numLinesReadout = value;
FILE_LOG(logINFO) << "Number of Lines to readout: " << numLinesReadout;
}
int slsReceiverImplementation::setReadOutFlags(const readOutFlags f) {
if (readoutFlags != f) {
readoutFlags = f;
@ -1405,10 +1416,17 @@ void slsReceiverImplementation::stopReceiver() {
uint64_t tot = 0;
for (int i = 0; i < numThreads; i++) {
tot += dataProcessor[i]->GetNumFramesCaught();
int64_t missingpackets =
numberOfFrames * generalData->packetsPerFrame -
listener[i]->GetPacketsCaught();
// partial readout
if (numLinesReadout != MAX_EIGER_ROWS_PER_READOUT) {
int maxnp = generalData->packetsPerFrame;
int np = ((numLinesReadout * maxnp) / MAX_EIGER_ROWS_PER_READOUT);
missingpackets = numberOfFrames * np - listener[i]->GetPacketsCaught();
}
TLogLevel lev =
(((int64_t)missingpackets) > 0) ? logINFORED : logINFOGREEN;
FILE_LOG(lev) <<

View File

@ -201,7 +201,7 @@ int slsReceiverTCPIPInterface::function_table(){
flist[F_GET_RECEIVER_DBIT_LIST] = &slsReceiverTCPIPInterface::get_dbit_list;
flist[F_RECEIVER_DBIT_OFFSET] = &slsReceiverTCPIPInterface::set_dbit_offset;
flist[F_SET_RECEIVER_QUAD] = &slsReceiverTCPIPInterface::set_quad_type;
flist[F_SET_RECEIVER_READ_N_LINES] = &slsReceiverTCPIPInterface::set_read_n_lines;
for (int i = NUM_DET_FUNCTIONS + 1; i < NUM_REC_FUNCTIONS ; i++) {
FILE_LOG(logDEBUG1) << "function fnum: " << i << " (" <<
@ -1323,4 +1323,17 @@ int slsReceiverTCPIPInterface::set_quad_type(Interface &socket) {
validate(quadEnable, retval, "set quad", DEC);
FILE_LOG(logDEBUG1) << "quad retval:" << retval;
return socket.Send(OK);
}
int slsReceiverTCPIPInterface::set_read_n_lines(Interface &socket) {
auto arg = socket.Receive<int>();
if (arg >= 0) {
VerifyIdle(socket);
FILE_LOG(logDEBUG1) << "Setting Read N Lines:" << arg;
impl()->setReadNLines(arg);
}
int retval = impl()->getReadNLines();
validate(arg, retval, "set read n lines", DEC);
FILE_LOG(logDEBUG1) << "read n lines retval:" << retval;
return socket.Send(OK);
}