From 114c45c04a065edfadb5c2ce7f2bac1f3943ef71 Mon Sep 17 00:00:00 2001 From: Dhanya Maliakal Date: Wed, 22 Nov 2017 09:27:42 +0100 Subject: [PATCH] making gui work temporarily for jctb --- slsReceiverSoftware/include/GeneralData.h | 34 ++++++++++++------- .../include/UDPStandardImplementation.h | 2 +- slsReceiverSoftware/include/receiver_defs.h | 2 -- slsReceiverSoftware/src/DataProcessor.cpp | 2 +- slsReceiverSoftware/src/Listener.cpp | 13 +++++++ .../src/UDPStandardImplementation.cpp | 6 +--- 6 files changed, 38 insertions(+), 21 deletions(-) diff --git a/slsReceiverSoftware/include/GeneralData.h b/slsReceiverSoftware/include/GeneralData.h index 4c1810ed4..99c3c2d43 100644 --- a/slsReceiverSoftware/include/GeneralData.h +++ b/slsReceiverSoftware/include/GeneralData.h @@ -10,7 +10,8 @@ #include "sls_receiver_defs.h" #include "receiver_defs.h" -#define NUM_BITS_IN_ONE_BYTE 8 +#include //ceil + class GeneralData { @@ -170,9 +171,10 @@ public: /** * 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"); }; @@ -408,13 +410,13 @@ private: /** Constructor */ JCTBData(){ myDetectorType = slsReceiverDefs::JUNGFRAUCTB; - nPixelsX = 32; //(256*4); - nPixelsY = 128; //(256*2); + nPixelsX = 400; + nPixelsY = 400; headerSizeinPacket = 22; dataSize = 8192; packetSize = headerSizeinPacket + dataSize; packetsPerFrame = 1; - imageSize = dataSize*packetsPerFrame; + imageSize = nPixelsX * nPixelsY * 2; frameIndexMask = 0xFFFFFF; maxFramesPerFile = JFCTB_MAX_FRAMES_PER_FILE; fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsReceiverDefs::sls_detector_header); @@ -454,11 +456,13 @@ private: /** * 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) { - packetsPerFrame = ppf; - imageSize = dataSize*packetsPerFrame; + void setNumberofSamples(const uint64_t ns, uint32_t nroich) { + packetsPerFrame = ceil(double(2 * (nroich ? nroich : 32) * ns) / dataSize); + nPixelsY = (ns * 2) / 25;/* depends on nroich also?? */ + imageSize = nPixelsX * nPixelsY * 2; }; /** @@ -551,12 +555,18 @@ class EigerData : public GeneralData { case 1: nPixelsX = (256 * 2) + 3; 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; default: nPixelsX = (256*2); 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; } }; diff --git a/slsReceiverSoftware/include/UDPStandardImplementation.h b/slsReceiverSoftware/include/UDPStandardImplementation.h index e24ab51d2..6a6feebe5 100644 --- a/slsReceiverSoftware/include/UDPStandardImplementation.h +++ b/slsReceiverSoftware/include/UDPStandardImplementation.h @@ -264,7 +264,7 @@ private: int numberofJobs; /** Number of channels in roi for jungfrauctb */ - int nroichannels; + uint32_t nroichannels; //** class objects *** /** General Data Properties */ diff --git a/slsReceiverSoftware/include/receiver_defs.h b/slsReceiverSoftware/include/receiver_defs.h index 2a721ab60..7884ffead 100755 --- a/slsReceiverSoftware/include/receiver_defs.h +++ b/slsReceiverSoftware/include/receiver_defs.h @@ -46,5 +46,3 @@ #define STREAMER_PRIORITY 10 #define TCP_PRIORITY 10 -//jctb -#define DEFAULT_NROI_CHANNELS 32 diff --git a/slsReceiverSoftware/src/DataProcessor.cpp b/slsReceiverSoftware/src/DataProcessor.cpp index 6c34e6d91..4176ed40f 100644 --- a/slsReceiverSoftware/src/DataProcessor.cpp +++ b/slsReceiverSoftware/src/DataProcessor.cpp @@ -416,7 +416,7 @@ void DataProcessor::ProcessAnImage(char* buf) { 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); diff --git a/slsReceiverSoftware/src/Listener.cpp b/slsReceiverSoftware/src/Listener.cpp index a80456a5b..5db90c8aa 100644 --- a/slsReceiverSoftware/src/Listener.cpp +++ b/slsReceiverSoftware/src/Listener.cpp @@ -336,6 +336,7 @@ uint32_t Listener::ListenToAnImage(char* buf) { sls_detector_header* old_header = 0; sls_detector_header* new_header = 0; bool standardheader = generalData->standardheader; + uint32_t corrected_dsize = dsize - ((pperFrame * dsize) - generalData->imageSize); //reset to -1 @@ -379,6 +380,12 @@ uint32_t Listener::ListenToAnImage(char* buf) { else memcpy(buf + fifohsize + dsize - 2, carryOverPacket + hsize, dsize+2); 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: memcpy(buf + fifohsize + (pnum * dsize), carryOverPacket + hsize, dsize); break; @@ -479,6 +486,12 @@ uint32_t Listener::ListenToAnImage(char* buf) { else memcpy(buf + fifohsize + (pnum * dsize) - 2, listeningPacket + hsize, dsize+2); 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: memcpy(buf + fifohsize + (pnum * dsize), listeningPacket + hsize, dsize); break; diff --git a/slsReceiverSoftware/src/UDPStandardImplementation.cpp b/slsReceiverSoftware/src/UDPStandardImplementation.cpp index 13b226895..a3fa3cc76 100644 --- a/slsReceiverSoftware/src/UDPStandardImplementation.cpp +++ b/slsReceiverSoftware/src/UDPStandardImplementation.cpp @@ -15,7 +15,6 @@ #include //system #include //strcpy #include //eperm -#include //ceil using namespace std; @@ -250,10 +249,7 @@ int UDPStandardImplementation::setNumberofSamples(const uint64_t i) { if (numberOfSamples != i) { numberOfSamples = i; - //side effects - uint32_t ppf = ceil(double(2 * (nroichannels ? nroichannels : DEFAULT_NROI_CHANNELS) * numberOfSamples) / double(generalData->dataSize)); - generalData->SetPacketsPerFrame(ppf); - + generalData->setNumberofSamples(i, nroichannels); numberofJobs = -1; //changes to imagesize has to be noted to recreate fifo structure if (SetupFifoStructure() == FAIL) return FAIL;