fixed new header for eiger

This commit is contained in:
Dhanya Maliakal 2017-06-28 16:53:01 +02:00
parent 81d68bebc6
commit f4857355b6
7 changed files with 20 additions and 132 deletions

View File

@ -39,7 +39,6 @@ DUMMY_MAIN_SRC = dummyMain.cpp
OBJS=$(SRC_CLNT:%.cpp=$(BUILDDIR)/%.o)
$(info )
$(info #######################################)
$(info # Compiling slsReceiverSoftware #)
@ -49,7 +48,7 @@ $(info )
.PHONY: all intdoc package eigerReceiver clean
all: builddir updateVersion lib receiver
all: builddir lib receiver
dummy: $(DESTDIR)/dummyReceiver
@ -68,7 +67,9 @@ lib: $(OBJS) $(DESTDIR)/libSlsReceiver.so $(DESTDIR)/libSlsReceiver.a
receiver: $(DESTDIR)/slsReceiver
$(DESTDIR)/libSlsReceiver.so: $(OBJS)
$(DESTDIR)/libSlsReceiver.so: $(OBJS)
./updateGitVersion.sh
$(CXX) -shared -Wl,-soname,libSlsReceiver.so -o libSlsReceiver.so $(OBJS) -lc $(INCLUDES) $(DFLAGS) $(FLAGS) $(EPICSFLAGS) -L/usr/lib64 -pthread $(LIBZMQ) -lrt
$(shell test -d $(DESTDIR) || mkdir -p $(DESTDIR))
mv libSlsReceiver.so $(DESTDIR)
@ -78,12 +79,12 @@ $(DESTDIR)/libSlsReceiver.a: $(OBJS)
mv libSlsReceiver.a $(DESTDIR)
$(DESTDIR)/slsReceiver: lib
$(DESTDIR)/slsReceiver: $(SRCDIR)/$(MAIN_SRC) $(DESTDIR)/libSlsReceiver.so $(DESTDIR)/libSlsReceiver.a
$(CXX) -o $@ $(SRCDIR)/$(MAIN_SRC) $(FLAGS) $(INCLUDES) $(CLAGS) $(LIBS) $(LDFLAGRXR) -fPIC $(LIBZMQ) -lrt
#$(EIGERFLAGS)
$(DESTDIR)/dummyReceiver: lib
$(DESTDIR)/dummyReceiver: $(SRCDIR)/$(DUMMY_MAIN_SRC) $(DESTDIR)/libSlsReceiver.so $(DESTDIR)/libSlsReceiver.a
$(CXX) -o $@ $(SRCDIR)/$(DUMMY_MAIN_SRC) $(FLAGS) $(INCLUDES) $(CLAGS) $(LIBS) $(LDFLAGRXR) -fPIC $(LIBZMQ) -lrt
#$(EIGERFLAGS)
@ -112,8 +113,6 @@ testclean:
cd $(TESTDIR) && rm *.o rec send; \
fi
updateVersion:
./updateGitVersion.sh
#-------------------------------------------------------------------------------

View File

@ -1,9 +1,9 @@
Path: slsDetectorsPackage/slsReceiverSoftware
URL: origin git@git.psi.ch:sls_detectors_software/sls_receiver_software.git
Repository Root: origin git@git.psi.ch:sls_detectors_software/sls_receiver_software.git
Repsitory UUID: 3ed2a33d504cb2d40acd6e7c8e115697158346e9
Revision: 595
Branch: developer
Repsitory UUID: 7a69378574427de0c5cd9a1b86231c47732829a8
Revision: 594
Branch: eigerheaderchange
Last Changed Author: Dhanya_Maliakal
Last Changed Rev: 595
Last Changed Date: 2017-06-22 12:27:17 +0200
Last Changed Rev: 599
Last Changed Date: 2017-06-28 11:30:46 +0200

View File

@ -461,109 +461,28 @@ class JungfrauData : public GeneralData {
class EigerData : public GeneralData {
private:
#ifndef EIGER_NEWHEADER
/** Structure of an eiger packet header */
typedef struct {
unsigned char subFrameNumber[4];
unsigned char missingPacket[2];
unsigned char portIndex[1];
unsigned char dynamicRange[1];
} eiger_packet_header_t;
/** Structure of an eiger packet footer */
typedef struct {
unsigned char frameNumber[6];
unsigned char packetNumber[2];
} eiger_packet_footer_t;
public:
/** Size of packet header */
const static uint32_t packetHeaderSize = 8;
/** Footer offset */
uint32_t footerOffset;
#endif
/** Constructor */
EigerData(){
myDetectorType = slsReceiverDefs::EIGER;
nPixelsX = (256*2);
nPixelsY = 256;
#ifndef EIGER_NEWHEADER
headerSizeinPacket = 8;
#else
headerSizeinPacket = sizeof(slsReceiverDefs::sls_detector_header);
#endif
dataSize = 1024;
#ifndef EIGER_NEWHEADER
packetSize = headerSizeinPacket + dataSize + 8;
#else
packetSize = headerSizeinPacket + dataSize;
#endif
packetsPerFrame = 256;
imageSize = dataSize*packetsPerFrame;
#ifndef EIGER_NEWHEADER
frameIndexMask = 0xffffff;
#endif
maxFramesPerFile = EIGER_MAX_FRAMES_PER_FILE;
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsReceiverDefs::sls_detector_header);
defaultFifoDepth = 100;
#ifndef EIGER_NEWHEADER
footerOffset = headerSizeinPacket + dataSize;
#endif
threadsPerReceiver = 2;
#ifndef EIGER_NEWHEADER
headerPacketSize = 48;
#else
headerPacketSize = 40;
#endif
nPixelsX_Streamer = nPixelsX;
nPixelsY_Streamer = nPixelsY;
imageSize_Streamer = imageSize;
};
#ifndef EIGER_NEWHEADER
/**
* Get Header Infomation (frame number, packet number)
* @param index thread index for debugging purposes
* @param packetData pointer to data
* @param frameNumber frame number
* @param packetNumber packet number
*/
void GetHeaderInfo(int index, char* packetData, uint64_t& frameNumber, uint32_t& packetNumber) const {
eiger_packet_footer_t* footer = (eiger_packet_footer_t*)(packetData + footerOffset);
frameNumber = (uint64_t)((*( (uint64_t*) footer)) & frameIndexMask);
packetNumber = ((uint32_t)(*( (uint16_t*) footer->packetNumber)))-1;
}
/**
* Get Header Infomation (frame number, packet number)
* @param index thread index for debugging purposes
* @param packetData pointer to data
* @param dynamicRange dynamic range to assign subframenumber if 32 bit mode
* @param frameNumber frame number
* @param packetNumber packet number
* @param subFrameNumber sub frame number if applicable
* @param bunchId bunch id
*/
void GetHeaderInfo(int index, char* packetData, uint32_t dynamicRange,
uint64_t& frameNumber, uint32_t& packetNumber, uint32_t& subFrameNumber, uint64_t& bunchId) const {
bunchId = -1;
subFrameNumber = -1;
eiger_packet_footer_t* footer = (eiger_packet_footer_t*)(packetData + footerOffset);
frameNumber = (uint64_t)((*( (uint64_t*) footer)) & frameIndexMask);
packetNumber = ((uint32_t)(*( (uint16_t*) footer->packetNumber)))-1;
if (dynamicRange == 32) {
eiger_packet_header_t* header = (eiger_packet_header_t*) (packetData);
subFrameNumber = (uint64_t) *( (uint32_t*) header->subFrameNumber);
}
}
#endif
/**
* Setting dynamic range changes member variables
* @param dr dynamic range
@ -581,30 +500,11 @@ private:
*/
void SetTenGigaEnable(bool tgEnable, int dr) {
dataSize = (tgEnable ? 4096 : 1024);
#ifndef EIGER_NEWHEADER
packetSize = (tgEnable ? 4112 : 1040);
#else
packetSize = headerSizeinPacket + dataSize;
#endif
packetsPerFrame = (tgEnable ? 4 : 16) * dr;
imageSize = dataSize*packetsPerFrame;
#ifndef EIGER_NEWHEADER
footerOffset = packetHeaderSize+dataSize;
#endif
};
#ifndef EIGER_NEWHEADER
/**
* Print all variables
*/
void Print() const {
GeneralData::Print();
printf( "Packet Header Size: %d\n"
"Footer Offset : %d\n",
packetHeaderSize,
footerOffset);
}
#endif
};

View File

@ -1,11 +1,11 @@
//#define SVNPATH ""
#define SVNURL "git@git.psi.ch:sls_detectors_software/sls_receiver_software.git"
//#define SVNREPPATH ""
#define SVNREPUUID "3ed2a33d504cb2d40acd6e7c8e115697158346e9"
//#define SVNREV 0x595
#define SVNREPUUID "7a69378574427de0c5cd9a1b86231c47732829a8"
//#define SVNREV 0x599
//#define SVNKIND ""
//#define SVNSCHED ""
#define SVNAUTH "Dhanya_Maliakal"
#define SVNREV 0x595
#define SVNDATE 0x20170622
#define SVNREV 0x599
#define SVNDATE 0x20170628
//

View File

@ -61,11 +61,8 @@ Listener::Listener(detectorType dtype, Fifo*& f, runStatus* s, uint32_t* portno,
switch(myDetectorType){
case JUNGFRAU:
standardheader = true;
#ifndef EIGER_NEWHEADER
#else
case EIGER:
#endif
standardheader = true;
break;
default:
standardheader = false;
@ -381,10 +378,6 @@ uint32_t Listener::ListenToAnImage(char* buf) {
else {
memset(new_header, 0, sizeof(sls_detector_header));
new_header->frameNumber = fnum;
#ifndef EIGER_NEWHEADER
if (generalData->myDetectorType == EIGER && *dynamicRange == 32)
new_header->expLength = snum;
#endif
new_header->packetNumber = pperFrame;
/*new_header->xCoord = index; given by det packet, also for ycoord, zcoord */
new_header->detType = (uint8_t) generalData->myDetectorType;
@ -475,10 +468,6 @@ uint32_t Listener::ListenToAnImage(char* buf) {
else {
memset(new_header, 0, sizeof(sls_detector_header));
new_header->frameNumber = fnum;
#ifndef EIGER_NEWHEADER
if (generalData->myDetectorType == EIGER && *dynamicRange == 32)
new_header->expLength = snum;
#endif
new_header->packetNumber = pperFrame;
/*new_header->xCoord = index; given by det packet, also for ycoord, zcoord */
new_header->detType = (uint8_t) generalData->myDetectorType;

View File

@ -13,7 +13,7 @@
#include "logger.h"
using namespace std;
slsReceiverUsers *receiver;
slsReceiverUsers *receiver;
void deleteReceiver(slsReceiverUsers* r){
if(r){delete r;r=0;}

View File

@ -1,7 +1,7 @@
MAINDIR=slsDetectorsPackage
SPECDIR=slsReceiverSoftware
TMPFILE=gitInfoReceiverTmp.h
INCLFILE=gitInfoReceiver.h
TMPFILE=include/gitInfoReceiverTmp.h
INCLFILE=include/gitInfoReceiver.h
WD=$PWD
GITREPO1='git remote -v'
@ -28,7 +28,7 @@ REV=`eval $REV1 $REV2`
FOLDERREV=`eval $FOLDERREV1 $FOLDERREV2`
RDATE=`eval $RDATE1`
echo Path: ${MAINDIR}/${SPECDIR} $'\n'URL: ${GITREPO} $'\n'Repository Root: ${GITREPO} $'\n'Repsitory UUID: ${REPUID} $'\n'Revision: ${FOLDERREV} $'\n'Branch: ${BRANCH} $'\n'Last Changed Author: ${AUTH1}_${AUTH2} $'\n'Last Changed Rev: ${REV} $'\n'Last Changed Date: ${RDATE} > gitInfo.txt
cd $WD
cd ..
./genVersionHeader.sh $SPECDIR/gitInfo.txt $SPECDIR/$TMPFILE $SPECDIR/$INCLFILE
echo "Revision Updated"
cd $WD