mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-12 12:57:13 +02:00
making gui work temporarily for jctb
This commit is contained in:
@ -10,7 +10,8 @@
|
|||||||
#include "sls_receiver_defs.h"
|
#include "sls_receiver_defs.h"
|
||||||
#include "receiver_defs.h"
|
#include "receiver_defs.h"
|
||||||
|
|
||||||
#define NUM_BITS_IN_ONE_BYTE 8
|
#include <math.h> //ceil
|
||||||
|
|
||||||
|
|
||||||
class GeneralData {
|
class GeneralData {
|
||||||
|
|
||||||
@ -170,9 +171,10 @@ public:
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Setting packets per frame changes member variables
|
* Setting packets per frame changes member variables
|
||||||
* @param packets per frame
|
* @param ns number of samples
|
||||||
|
* @param nroich number of channels in roi
|
||||||
*/
|
*/
|
||||||
virtual void SetPacketsPerFrame(uint32_t ppf) {
|
virtual void setNumberofSamples(const uint64_t ns, uint32_t nroich) {
|
||||||
bprintf(RED,"This is a generic function that should be overloaded by a derived class\n");
|
bprintf(RED,"This is a generic function that should be overloaded by a derived class\n");
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -408,13 +410,13 @@ private:
|
|||||||
/** Constructor */
|
/** Constructor */
|
||||||
JCTBData(){
|
JCTBData(){
|
||||||
myDetectorType = slsReceiverDefs::JUNGFRAUCTB;
|
myDetectorType = slsReceiverDefs::JUNGFRAUCTB;
|
||||||
nPixelsX = 32; //(256*4);
|
nPixelsX = 400;
|
||||||
nPixelsY = 128; //(256*2);
|
nPixelsY = 400;
|
||||||
headerSizeinPacket = 22;
|
headerSizeinPacket = 22;
|
||||||
dataSize = 8192;
|
dataSize = 8192;
|
||||||
packetSize = headerSizeinPacket + dataSize;
|
packetSize = headerSizeinPacket + dataSize;
|
||||||
packetsPerFrame = 1;
|
packetsPerFrame = 1;
|
||||||
imageSize = dataSize*packetsPerFrame;
|
imageSize = nPixelsX * nPixelsY * 2;
|
||||||
frameIndexMask = 0xFFFFFF;
|
frameIndexMask = 0xFFFFFF;
|
||||||
maxFramesPerFile = JFCTB_MAX_FRAMES_PER_FILE;
|
maxFramesPerFile = JFCTB_MAX_FRAMES_PER_FILE;
|
||||||
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsReceiverDefs::sls_detector_header);
|
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsReceiverDefs::sls_detector_header);
|
||||||
@ -454,11 +456,13 @@ private:
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Setting packets per frame changes member variables
|
* Setting packets per frame changes member variables
|
||||||
* @param packets per frame
|
* @param ns number of samples
|
||||||
|
* @param nroich number of channels in roi
|
||||||
*/
|
*/
|
||||||
void SetPacketsPerFrame(uint32_t ppf) {
|
void setNumberofSamples(const uint64_t ns, uint32_t nroich) {
|
||||||
packetsPerFrame = ppf;
|
packetsPerFrame = ceil(double(2 * (nroich ? nroich : 32) * ns) / dataSize);
|
||||||
imageSize = dataSize*packetsPerFrame;
|
nPixelsY = (ns * 2) / 25;/* depends on nroich also?? */
|
||||||
|
imageSize = nPixelsX * nPixelsY * 2;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -551,12 +555,18 @@ class EigerData : public GeneralData {
|
|||||||
case 1:
|
case 1:
|
||||||
nPixelsX = (256 * 2) + 3;
|
nPixelsX = (256 * 2) + 3;
|
||||||
nPixelsY = 256 + 1;
|
nPixelsY = 256 + 1;
|
||||||
imageSize = nPixelsX * nPixelsY * ((double)dr/(double)NUM_BITS_IN_ONE_BYTE);
|
imageSize = nPixelsX * nPixelsY * ((dr > 16) ? 4 : // 32 bit
|
||||||
|
((dr > 8) ? 2 : // 16 bit
|
||||||
|
((dr > 4) ? 1 : // 8 bit
|
||||||
|
0.5))); // 4 bit
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
nPixelsX = (256*2);
|
nPixelsX = (256*2);
|
||||||
nPixelsY = 256;
|
nPixelsY = 256;
|
||||||
imageSize = dataSize*packetsPerFrame;
|
imageSize = nPixelsX * nPixelsY * ((dr > 16) ? 4 : // 32 bit
|
||||||
|
((dr > 8) ? 2 : // 16 bit
|
||||||
|
((dr > 4) ? 1 : // 8 bit
|
||||||
|
0.5))); // 4 bit
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -264,7 +264,7 @@ private:
|
|||||||
int numberofJobs;
|
int numberofJobs;
|
||||||
|
|
||||||
/** Number of channels in roi for jungfrauctb */
|
/** Number of channels in roi for jungfrauctb */
|
||||||
int nroichannels;
|
uint32_t nroichannels;
|
||||||
|
|
||||||
//** class objects ***
|
//** class objects ***
|
||||||
/** General Data Properties */
|
/** General Data Properties */
|
||||||
|
@ -46,5 +46,3 @@
|
|||||||
#define STREAMER_PRIORITY 10
|
#define STREAMER_PRIORITY 10
|
||||||
#define TCP_PRIORITY 10
|
#define TCP_PRIORITY 10
|
||||||
|
|
||||||
//jctb
|
|
||||||
#define DEFAULT_NROI_CHANNELS 32
|
|
||||||
|
@ -416,7 +416,7 @@ void DataProcessor::ProcessAnImage(char* buf) {
|
|||||||
|
|
||||||
|
|
||||||
if (file)
|
if (file)
|
||||||
file->WriteToFile(buf, generalData->imageSize + sizeof(sls_detector_header), fnum-firstMeasurementIndex, nump);
|
file->WriteToFile(buf, sizeof(sls_detector_header) + generalData->imageSize, fnum-firstMeasurementIndex, nump);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -336,6 +336,7 @@ uint32_t Listener::ListenToAnImage(char* buf) {
|
|||||||
sls_detector_header* old_header = 0;
|
sls_detector_header* old_header = 0;
|
||||||
sls_detector_header* new_header = 0;
|
sls_detector_header* new_header = 0;
|
||||||
bool standardheader = generalData->standardheader;
|
bool standardheader = generalData->standardheader;
|
||||||
|
uint32_t corrected_dsize = dsize - ((pperFrame * dsize) - generalData->imageSize);
|
||||||
|
|
||||||
|
|
||||||
//reset to -1
|
//reset to -1
|
||||||
@ -379,6 +380,12 @@ uint32_t Listener::ListenToAnImage(char* buf) {
|
|||||||
else
|
else
|
||||||
memcpy(buf + fifohsize + dsize - 2, carryOverPacket + hsize, dsize+2);
|
memcpy(buf + fifohsize + dsize - 2, carryOverPacket + hsize, dsize+2);
|
||||||
break;
|
break;
|
||||||
|
case JUNGFRAUCTB:
|
||||||
|
if (pnum == (pperFrame-1))
|
||||||
|
memcpy(buf + fifohsize + (pnum * dsize), carryOverPacket + hsize, corrected_dsize);
|
||||||
|
else
|
||||||
|
memcpy(buf + fifohsize + (pnum * dsize), carryOverPacket + hsize, dsize);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
memcpy(buf + fifohsize + (pnum * dsize), carryOverPacket + hsize, dsize);
|
memcpy(buf + fifohsize + (pnum * dsize), carryOverPacket + hsize, dsize);
|
||||||
break;
|
break;
|
||||||
@ -479,6 +486,12 @@ uint32_t Listener::ListenToAnImage(char* buf) {
|
|||||||
else
|
else
|
||||||
memcpy(buf + fifohsize + (pnum * dsize) - 2, listeningPacket + hsize, dsize+2);
|
memcpy(buf + fifohsize + (pnum * dsize) - 2, listeningPacket + hsize, dsize+2);
|
||||||
break;
|
break;
|
||||||
|
case JUNGFRAUCTB:
|
||||||
|
if (pnum == (pperFrame-1))
|
||||||
|
memcpy(buf + fifohsize + (pnum * dsize), listeningPacket + hsize, corrected_dsize);
|
||||||
|
else
|
||||||
|
memcpy(buf + fifohsize + (pnum * dsize), listeningPacket + hsize, dsize);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
memcpy(buf + fifohsize + (pnum * dsize), listeningPacket + hsize, dsize);
|
memcpy(buf + fifohsize + (pnum * dsize), listeningPacket + hsize, dsize);
|
||||||
break;
|
break;
|
||||||
|
@ -15,7 +15,6 @@
|
|||||||
#include <cstdlib> //system
|
#include <cstdlib> //system
|
||||||
#include <cstring> //strcpy
|
#include <cstring> //strcpy
|
||||||
#include <errno.h> //eperm
|
#include <errno.h> //eperm
|
||||||
#include <math.h> //ceil
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
|
|
||||||
@ -250,10 +249,7 @@ int UDPStandardImplementation::setNumberofSamples(const uint64_t i) {
|
|||||||
if (numberOfSamples != i) {
|
if (numberOfSamples != i) {
|
||||||
numberOfSamples = i;
|
numberOfSamples = i;
|
||||||
|
|
||||||
//side effects
|
generalData->setNumberofSamples(i, nroichannels);
|
||||||
uint32_t ppf = ceil(double(2 * (nroichannels ? nroichannels : DEFAULT_NROI_CHANNELS) * numberOfSamples) / double(generalData->dataSize));
|
|
||||||
generalData->SetPacketsPerFrame(ppf);
|
|
||||||
|
|
||||||
numberofJobs = -1; //changes to imagesize has to be noted to recreate fifo structure
|
numberofJobs = -1; //changes to imagesize has to be noted to recreate fifo structure
|
||||||
if (SetupFifoStructure() == FAIL)
|
if (SetupFifoStructure() == FAIL)
|
||||||
return FAIL;
|
return FAIL;
|
||||||
|
Reference in New Issue
Block a user