Client (data call back API) and Gui (Eiger 4 bit mode with multiple images) bug fix: npixelsx and npixelsy was not updated to complete detector level when calling call back function to give complete image

This commit is contained in:
2019-04-11 16:13:31 +02:00
parent 2108bbda66
commit 518c6783cc
3 changed files with 22 additions and 9 deletions

View File

@ -19,6 +19,7 @@ This document describes the differences between 4.0.2 and 4.0.1 releases.
- Jungfrau receiver as root user - Jungfrau receiver as root user
- Jungfrau server detector position error when switching between different detector sizes - Jungfrau server detector position error when switching between different detector sizes
- Client API data call back / Gui (Eiger in 4 bit mode)
@ -35,10 +36,21 @@ This document describes the differences between 4.0.2 and 4.0.1 releases.
This has been fixed now to allow a greater size (including the default size). This has been fixed now to allow a greater size (including the default size).
Detector Server (Jungfrau) Detector Server (Jungfrau)
-------------------------- --------------------------
1. Switching between different detector size configurations, the detector gave an 1. Switching between different detector size configurations, the detector gave an
error "Could not set detector position". This is fixed now. error "Could not set detector position". This is fixed now.
Client API / Gui (Eiger)
------------------------
1. Client data call back provided the complete image data, but the number of pixels
in x and y was provided incorrectly at a modular level. This has been fixed to give
the proper value. This also fixes the Gui crashing for Eiger 4 bit mode when
acquiring for multiple images.
3. Known Issues 3. Known Issues

View File

@ -5147,19 +5147,20 @@ void multiSlsDetector::readFrameFromReceiver() {
//send data to callback //send data to callback
if (data) { if (data) {
int nCompletePixelsX = thisMultiDetector->numberOfChannelInclGapPixels[X];
int nCompletePixelsY = thisMultiDetector->numberOfChannelInclGapPixels[Y];
// 4bit gap pixels // 4bit gap pixels
if (dynamicRange == 4 && gappixelsenable) { if (dynamicRange == 4 && gappixelsenable) {
int n = processImageWithGapPixels(multiframe, multigappixels); int n = processImageWithGapPixels(multiframe, multigappixels);
nPixelsX = thisMultiDetector->numberOfChannelInclGapPixels[X];
nPixelsY = thisMultiDetector->numberOfChannelInclGapPixels[Y];
thisData = new detectorData(NULL, NULL, NULL, getCurrentProgress(), thisData = new detectorData(NULL, NULL, NULL, getCurrentProgress(),
currentFileName.c_str(), nPixelsX, nPixelsY, currentFileName.c_str(), nCompletePixelsX, nCompletePixelsY,
multigappixels, n, dynamicRange, currentFileIndex); multigappixels, n, dynamicRange, currentFileIndex);
} }
// normal pixels // normal pixels
else { else {
thisData = new detectorData(NULL, NULL, NULL, getCurrentProgress(), thisData = new detectorData(NULL, NULL, NULL, getCurrentProgress(),
currentFileName.c_str(), nPixelsX, nPixelsY, currentFileName.c_str(), nCompletePixelsX, nCompletePixelsY,
multiframe, multisize, dynamicRange, currentFileIndex); multiframe, multisize, dynamicRange, currentFileIndex);
} }
dataReady(thisData, currentFrameIndex, dataReady(thisData, currentFrameIndex,

View File

@ -4041,7 +4041,7 @@ string slsDetectorCommand::cmdNetworkParameter(int narg, char *args[], int actio
t=RECEIVER_UDP_SCKT_BUF_SIZE; t=RECEIVER_UDP_SCKT_BUF_SIZE;
if (action==PUT_ACTION){ if (action==PUT_ACTION){
uint64_t ival = -1; uint64_t ival = -1;
if (!(sscanf(args[1],"%ld",&i))) if (!(sscanf(args[1],"%ld",&ival)))
return ("cannot parse argument") + string(args[1]); return ("cannot parse argument") + string(args[1]);
} }
} else if (cmd=="rx_realudpsocksize") { } else if (cmd=="rx_realudpsocksize") {