* roi structure expanded to have ymin and ymax

* compile with 'detector roi'

* wip

* wip, rx_roi, rx_clearroi

* wip rxroi

* rxroi wip

* wip rxroi

* merge fix

* wip

* rx_roi works, impl wip, test

* tests in, impl left

* wip, rxroi impl

* wip, rxroi impl

* wip

* setrx_Roi works, getrx_roi, wip

* rx_roi impl done

* wip, rxroi

* wip, getrx_roi rxr ports

* fix ports

* wip

* wip

* fix positions on server side

* wip

* numports wip

* wip

* jungfrau top inner interface row increment

* x, y detpos, wip

* removed eiger row indices flipping in gui (bottom flipping maintained)

* wip

* wip, jungfrau numinterfaces2

* jungfrau virtual works

* eiger, jungfrau, g2 virtual server works

* eiger positions fix, wip

* binaries in

* minor printout

* binaries in

* merge fix

* merge fix

* removing getposition

* setrxroi wip

* set upto port

* get messed, wip

* roi multi to module works, wip

* wip

* roi dont return -1

* added rxroi metadata in master file

* added rxroifromshm, not yet in detector

* rx roi in gui with box, also for gap pixels (gappixels for jungfrau mess)

* fix for segfault in gui with detaching roi box in gui

* wip

* m3 gui: slave timing modes should be discarded when squashing

* fixed m3 virtual data, and fixed counters in gui asthetics

* m3 roi works

* wip, g2

* wip

* handling g225um boards, and showing roi for gainplot as well

* udpate python functions

* fix for 1d and a2d roi written

* fixed actual roi written to file

* no virtual hdf5 when handling rx roi

* test

* minor

* binarie in
This commit is contained in:
Dhanya Thattil
2022-05-16 12:35:06 +02:00
committed by GitHub
parent 9808376207
commit fcc7f7aef8
53 changed files with 1713 additions and 859 deletions

View File

@ -432,6 +432,8 @@ void setupDetector() {
// roi, gbit readout
rois.xmin = -1;
rois.xmax = -1;
rois.ymin = -1;
rois.ymax = -1;
setROI(rois); // set adcsyncreg, daqreg, chipofinterestreg, cleanfifos,
setGbitReadout();
@ -857,8 +859,10 @@ int setROI(ROI arg) {
LOG(logINFO, ("Clearing ROI\n"));
rois.xmin = -1;
rois.xmax = -1;
rois.ymin = -1;
rois.ymax = -1;
} else {
LOG(logINFO, ("Setting ROI:(%d, %d)\n", arg.xmin, arg.xmax));
LOG(logINFO, ("Setting ROI:(%d, %d, %d, %d)\n", arg.xmin, arg.xmax, arg.ymin, arg.ymax));
// validation
// xmin divisible by 256 and less than 1280
if (((arg.xmin % NCHAN_PER_ADC) != 0) ||
@ -892,7 +896,7 @@ ROI getROI() {
if (rois.xmin == -1) {
LOG(logINFO, ("\tROI: None\n"));
} else {
LOG(logINFO, ("ROI: (%d,%d)\n", rois.xmin, rois.xmax));
LOG(logINFO, ("ROI: (%d,%d,%d,%d)\n", rois.xmin, rois.xmax, rois.ymin, rois.ymax));
}
return rois;
}

View File

@ -25,7 +25,7 @@ target_include_directories(jungfrauDetectorServer_virtual
)
target_compile_definitions(jungfrauDetectorServer_virtual
PUBLIC JUNGFRAUD VIRTUAL STOP_SERVER
PUBLIC JUNGFRAUD VIRTUAL STOP_SERVER #TEST_MOD_GEOMETRY
)
target_link_libraries(jungfrauDetectorServer_virtual

View File

@ -2317,6 +2317,7 @@ void *start_timer(void *arg) {
if (dr == 32 && ncounters > 1) {
packetsPerFrame = 2;
}
dataSize = imageSize / packetsPerFrame;
}
// 1g
else {
@ -2338,27 +2339,22 @@ void *start_timer(void *arg) {
{
const int nchannels = NCHAN_1_COUNTER * NCHIP * ncounters;
switch (dr) {
/*case 1: // TODO: Not implemented in firmware yet
break;*/
case 8:
for (int i = 0; i < nchannels; ++i) {
for (int i = 0; i < nchannels; ++i) {
switch (dr) {
//case 1: // TODO: Not implemented in firmware yet
// break;
case 8:
*((uint8_t *)(imageData + i)) = (uint8_t)i;
}
break;
case 16:
for (int i = 0; i < nchannels; ++i) {
break;
case 16:
*((uint16_t *)(imageData + i * sizeof(uint16_t))) = (uint16_t)i;
break;
case 32:
*((uint32_t *)(imageData + i * sizeof(uint32_t))) = ((uint32_t)i & 0xFFFFFF); // 24 bit
break;
default:
break;
}
break;
case 32:
for (int i = 0; i < nchannels; ++i) {
*((uint32_t *)(imageData + i * sizeof(uint32_t))) =
((uint32_t)i & 0xFFFFFF); // 24 bit
}
break;
default:
break;
}
}
@ -2375,7 +2371,8 @@ void *start_timer(void *arg) {
struct timespec begin, end;
clock_gettime(CLOCK_REALTIME, &begin);
usleep(expUs);
int srcOffset = 0;
// loop packet
for (int i = 0; i != packetsPerFrame; ++i) {
@ -2396,7 +2393,6 @@ void *start_timer(void *arg) {
memcpy(packetData + sizeof(sls_detector_header),
imageData + srcOffset, dataSize);
srcOffset += dataSize;
sendUDPPacket(0, 0, packetData, packetSize);
}
LOG(logINFO, ("Sent frame: %d [%lld]\n", frameNr,

View File

@ -2045,7 +2045,7 @@ int set_num_frames(int file_des) {
arg > MAX_FRAMES_IN_BURST_MODE) {
ret = FAIL;
sprintf(mess,
"Could not set number of frames %lld. Must be <= %d in "
"Could not set number of frames %lld. Must be less than equal to %d in "
"burst mode.\n",
(long long unsigned int)arg, MAX_FRAMES_IN_BURST_MODE);
LOG(logERROR, (mess));
@ -2863,7 +2863,12 @@ int set_roi(int file_des) {
return printSocketReadError();
if (receiveData(file_des, &arg.xmax, sizeof(int), INT32) < 0)
return printSocketReadError();
LOG(logDEBUG1, ("Set ROI: [%d, %d]\n", arg.xmin, arg.xmax));
if (receiveData(file_des, &arg.ymin, sizeof(int), INT32) < 0)
return printSocketReadError();
if (receiveData(file_des, &arg.ymax, sizeof(int), INT32) < 0)
return printSocketReadError();
LOG(logDEBUG1, ("Set ROI: [%d, %d, %d, %d]\n", arg.xmin, arg.xmax, arg.ymin,
arg.ymax));
#ifndef GOTTHARDD
functionNotImplemented();
@ -2895,13 +2900,16 @@ int get_roi(int file_des) {
#else
// only get
retval = getROI();
LOG(logDEBUG1, ("nRois: (%d, %d)\n", retval.xmin, retval.xmax));
LOG(logDEBUG1, ("nRois: (%d, %d, %d, %d)\n", retval.xmin, retval.xmax,
retval.ymin, retval.ymax));
#endif
Server_SendResult(file_des, INT32, NULL, 0);
if (ret != FAIL) {
sendData(file_des, &retval.xmin, sizeof(int), INT32);
sendData(file_des, &retval.xmax, sizeof(int), INT32);
sendData(file_des, &retval.ymin, sizeof(int), INT32);
sendData(file_des, &retval.ymax, sizeof(int), INT32);
}
return ret;
}
@ -7134,6 +7142,8 @@ int get_receiver_parameters(int file_des) {
#else
roi.xmin = -1;
roi.xmax = -1;
roi.ymin = -1;
roi.ymax = -1;
#endif
n += sendData(file_des, &roi.xmin, sizeof(int), INT32);
if (n < 0)
@ -7141,6 +7151,12 @@ int get_receiver_parameters(int file_des) {
n += sendData(file_des, &roi.xmax, sizeof(int), INT32);
if (n < 0)
return printSocketReadError();
n += sendData(file_des, &roi.ymin, sizeof(int), INT32);
if (n < 0)
return printSocketReadError();
n += sendData(file_des, &roi.ymax, sizeof(int), INT32);
if (n < 0)
return printSocketReadError();
}
// counter mask