making gui work temporarily for jctb

This commit is contained in:
Dhanya Maliakal
2017-11-22 09:27:42 +01:00
parent 3a26c95c0d
commit 114c45c04a
6 changed files with 38 additions and 21 deletions

View File

@ -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;
} }
}; };

View File

@ -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 */

View File

@ -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

View File

@ -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);

View File

@ -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;

View File

@ -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;