included a current frame index whch is different than file frame index for gotthard, even when readout through blackfin, for mythen both will alwys be incrememnted by one; gotthard server all of them should be consistent for 32 bit

git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorSoftware@425 951219d9-93cf-4727-9268-0efd64621fa3
This commit is contained in:
l_maliakal_d
2013-01-11 17:20:57 +00:00
parent 9cfdbdac67
commit 4cc8566311
18 changed files with 79 additions and 23 deletions

View File

@ -1,6 +1,9 @@
#ifndef COMMUNICATION_FUNCS_H #ifndef COMMUNICATION_FUNCS_H
#define COMMUNICATION_FUNCS_H #define COMMUNICATION_FUNCS_H
#include "sls_detector_defs.h"
#define SEND_REC_MAX_SIZE 4096 #define SEND_REC_MAX_SIZE 4096
#define DEFAULT_PORTNO 1952 #define DEFAULT_PORTNO 1952
#include <sys/types.h> #include <sys/types.h>

View File

@ -2,6 +2,9 @@
#define FIRMWARE_FUNCS_H #define FIRMWARE_FUNCS_H
#include "sls_detector_defs.h"
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>

View File

@ -2,6 +2,9 @@
#define REGISTERS_G_H #define REGISTERS_G_H
#include "sls_detector_defs.h"
/* Definitions for FPGA*/ /* Definitions for FPGA*/
#define CSP0 0x20200000 #define CSP0 0x20200000
#define MEM_SIZE 0x100000 #define MEM_SIZE 0x100000

View File

@ -1,5 +1,8 @@
/* A simple server in the internet domain using TCP /* A simple server in the internet domain using TCP
The port number is passed as an argument */ The port number is passed as an argument */
#include "sls_detector_defs.h"
#include "communication_funcs.h" #include "communication_funcs.h"
#include "server_funcs.h" #include "server_funcs.h"
#include <stdlib.h> #include <stdlib.h>

View File

@ -1,5 +1,10 @@
#ifndef SERVER_FUNCS_H #ifndef SERVER_FUNCS_H
#define SERVER_FUNCS_H #define SERVER_FUNCS_H
#include "sls_detector_defs.h"
#include <stdio.h> #include <stdio.h>
/* /*
#include <sys/types.h> #include <sys/types.h>

View File

@ -1,6 +1,7 @@
#ifndef SM #ifndef SM
#define SM #define SM
#include "sls_detector_defs.h"
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>

View File

@ -1,5 +1,10 @@
/* A simple server in the internet domain using TCP /* A simple server in the internet domain using TCP
The port number is passed as an argument */ The port number is passed as an argument */
#include "sls_detector_defs.h"
#include "communication_funcs.h" #include "communication_funcs.h"
#include "firmware_funcs.h" #include "firmware_funcs.h"

View File

@ -1,5 +1,8 @@
#ifndef TRIMMING_FUNCS_H #ifndef TRIMMING_FUNCS_H
#define TRIMMING_FUNCS_H #define TRIMMING_FUNCS_H
#include "sls_detector_defs.h"
int trim_fixed_settings(int countlim, int par2, int imod); int trim_fixed_settings(int countlim, int par2, int imod);
int trim_with_noise(int countlim, int nsigma, int imod); int trim_with_noise(int countlim, int nsigma, int imod);
int trim_with_beam(int countlim, int nsigma, int imod); int trim_with_beam(int countlim, int nsigma, int imod);

View File

@ -3701,11 +3701,11 @@ int multiSlsDetector::getFramesCaughtByReceiver() {
int multiSlsDetector::getCurrentFrameIndex() { int multiSlsDetector::getReceiverCurrentFrameIndex() {
int ret=0,ret1=0; int ret=0,ret1=0;
for (int i=0; i<thisMultiDetector->numberOfDetectors; i++) for (int i=0; i<thisMultiDetector->numberOfDetectors; i++)
if (detectors[i]) if (detectors[i])
ret1+=detectors[i]->getCurrentFrameIndex(); ret1+=detectors[i]->getReceiverCurrentFrameIndex();
if(!thisMultiDetector->numberOfDetectors) if(!thisMultiDetector->numberOfDetectors)
return ret; return ret;

View File

@ -1084,7 +1084,7 @@ class multiSlsDetector : public slsDetectorUtils {
/** gets the current frame index of receiver /** gets the current frame index of receiver
\returns current frame index of receiver \returns current frame index of receiver
*/ */
int getCurrentFrameIndex(); int getReceiverCurrentFrameIndex();
/** /**
* resets framescaught * resets framescaught

View File

@ -5773,7 +5773,7 @@ int slsDetector::getFramesCaughtByReceiver(){
int slsDetector::getCurrentFrameIndex(){ int slsDetector::getReceiverCurrentFrameIndex(){
int fnum=F_GET_FRAME_INDEX; int fnum=F_GET_FRAME_INDEX;
int ret = FAIL; int ret = FAIL;
int retval=-1; int retval=-1;

View File

@ -1461,7 +1461,7 @@ class slsDetector : public slsDetectorUtils, public energyConversion {
/** gets the current frame index of receiver /** gets the current frame index of receiver
\returns current frame index of receiver \returns current frame index of receiver
*/ */
int getCurrentFrameIndex(); int getReceiverCurrentFrameIndex();
/** /**
* resets framescaught * resets framescaught

View File

@ -455,7 +455,7 @@ class slsDetectorBase : public virtual slsDetectorDefs {
/** /**
\returns current frame index of receiver \returns current frame index of receiver
*/ */
virtual int getCurrentFrameIndex()=0; virtual int getReceiverCurrentFrameIndex()=0;
/** Locks/Unlocks the connection to the receiver /** Locks/Unlocks the connection to the receiver
/param lock sets (1), usets (0), gets (-1) the lock /param lock sets (1), usets (0), gets (-1) the lock

View File

@ -3609,7 +3609,7 @@ string slsDetectorCommand::cmdReceiver(int narg, char *args[], int action) {
if (action==PUT_ACTION) if (action==PUT_ACTION)
return string("cannot put"); return string("cannot put");
else{ else{
sprintf(answer,"%d",myDet->getCurrentFrameIndex()); sprintf(answer,"%d",myDet->getReceiverCurrentFrameIndex());
return string(answer); return string(answer);
} }
} }

View File

@ -233,6 +233,7 @@ void slsDetectorUtils::acquire(int delflag){
get_i0(0, IOarg); get_i0(0, IOarg);
} }
setCurrentFrameIndex(0);
if ((timerValue[FRAME_NUMBER]*timerValue[CYCLES_NUMBER])>1) { if ((timerValue[FRAME_NUMBER]*timerValue[CYCLES_NUMBER])>1) {
setFrameIndex(0); setFrameIndex(0);
} else { } else {

View File

@ -620,7 +620,7 @@ class slsDetectorUtils : public slsDetectorActions, public postProcessing {
/** /**
\returns current frame index of receiver \returns current frame index of receiver
*/ */
virtual int getCurrentFrameIndex()=0; virtual int getReceiverCurrentFrameIndex()=0;
/** /**
* resets framescaught * resets framescaught

View File

@ -30,7 +30,7 @@ class fileIO : public fileIOStatic, public virtual slsDetectorBase {
/** default constructor */ /** default constructor */
fileIO(): fileIOStatic(){frameIndex=-1;detIndex=-1; framesPerFile=&nframes; nframes=1; }; fileIO(): fileIOStatic(){currentFrameIndex=-1;frameIndex=-1;detIndex=-1; framesPerFile=&nframes; nframes=1; };
/** virtual destructor */ /** virtual destructor */
virtual ~fileIO(){}; virtual ~fileIO(){};
@ -65,12 +65,19 @@ class fileIO : public fileIOStatic, public virtual slsDetectorBase {
virtual int setFileIndex(int i) {*fileIndex=i; return *fileIndex;}; virtual int setFileIndex(int i) {*fileIndex=i; return *fileIndex;};
/** /**
sets the default output file index sets the default output file frame index
\param i frame index to be set \param i file frame index to be set
\returns actual frame index \returns actual file frame index
*/ */
virtual int setFrameIndex(int i) {frameIndex=i; return frameIndex;}; virtual int setFrameIndex(int i) {frameIndex=i; return frameIndex;};
/**
sets the default output current frame index
\param i current frame index to be set
\returns actual current frame index
*/
virtual int setCurrentFrameIndex(int i) {currentFrameIndex=i; return currentFrameIndex;};
/** /**
sets the default output file index sets the default output file index
\param i frame index to be set \param i frame index to be set
@ -101,15 +108,25 @@ class fileIO : public fileIOStatic, public virtual slsDetectorBase {
virtual int getFileIndex() {return *fileIndex;}; virtual int getFileIndex() {return *fileIndex;};
/** /**
\returns the output frame index \returns the output file frame index
*/ */
virtual int getFrameIndex() {return frameIndex;}; virtual int getFrameIndex() {return frameIndex;};
/**
\returns the output current frame index
*/
virtual int getCurrentFrameIndex() {return currentFrameIndex;};
/** /**
\returns the detector index \returns the detector index
*/ */
virtual int getDetectorIndex() {return detIndex;}; virtual int getDetectorIndex() {return detIndex;};
/**
\returns the max frames per file
*/
virtual int getFramesPerFile() {return *framesPerFile;};
string createFileName(); string createFileName();
@ -259,7 +276,9 @@ yes */
void incrementFileIndex() { (*fileIndex)++; }; void incrementFileIndex() { (*fileIndex)++; };
void incrementFrameIndex() { (frameIndex)++; }; void incrementFrameIndex(int i) { frameIndex=frameIndex+i; };
void incrementCurrentFrameIndex() { (currentFrameIndex)++; };
void incrementDetectorIndex() { (detIndex)++; }; void incrementDetectorIndex() { (detIndex)++; };
@ -279,8 +298,10 @@ yes */
char *fileName; char *fileName;
/** file index */ /** file index */
int *fileIndex; int *fileIndex;
/** frame index */ /** file frame index */
int frameIndex; int frameIndex;
/** current frame index */
int currentFrameIndex;
/** detector id */ /** detector id */
int detIndex; int detIndex;
/** frames per file */ /** frames per file */

View File

@ -119,7 +119,7 @@ void postProcessing::processFrame(int *myData, int delflag) {
//uses static function?!?!?!? //uses static function?!?!?!?
writeDataFile (fname+string(".raw"),fdata, NULL, NULL, 'i'); writeDataFile (fname+string(".raw"),fdata, NULL, NULL, 'i');
} else { } else {
writeDataFile ((void*)myData, frameIndex); writeDataFile ((void*)myData, currentFrameIndex);
} }
#ifdef VERBOSE #ifdef VERBOSE
cout << "done " << endl; cout << "done " << endl;
@ -131,14 +131,22 @@ void postProcessing::processFrame(int *myData, int delflag) {
} else } else
if (dataReady){ if (dataReady){
thisData=new detectorData(fdata,NULL,NULL,getCurrentProgress(),(fname+string(".raw")).c_str(),getTotalNumberOfChannels()); thisData=new detectorData(fdata,NULL,NULL,getCurrentProgress(),(fname+string(".raw")).c_str(),getTotalNumberOfChannels());
dataReady(thisData, -1, pCallbackArg); dataReady(thisData, currentFrameIndex, pCallbackArg);
delete thisData; delete thisData;
fdata=NULL; fdata=NULL;
} }
} }
if (getFrameIndex()>=0) incrementCurrentFrameIndex();
incrementFrameIndex(); if (getFrameIndex()>=0){
if (getDetectorsType()==MYTHEN)
incrementFrameIndex(1);
else if((currentFrameIndex%getFramesPerFile())==0)
incrementFrameIndex(getFramesPerFile());
}
@ -243,7 +251,7 @@ void postProcessing::doProcessing(double *lfdata, int delflag, string fname) {
if (dataReady) { if (dataReady) {
thisData=new detectorData(val,err,ang,getCurrentProgress(),(fname+ext).c_str(),np); thisData=new detectorData(val,err,ang,getCurrentProgress(),(fname+ext).c_str(),np);
dataReady(thisData, -1, pCallbackArg); dataReady(thisData, currentFrameIndex, pCallbackArg);
delete thisData; delete thisData;
ang=NULL; ang=NULL;
val=NULL; val=NULL;
@ -386,7 +394,7 @@ void* postProcessing::processData(int delflag) {
//receiver //receiver
else{ else{
pthread_mutex_lock(&mg); pthread_mutex_lock(&mg);
int prevCaught=getCurrentFrameIndex(); int prevCaught=getReceiverCurrentFrameIndex();
pthread_mutex_unlock(&mg); pthread_mutex_unlock(&mg);
int caught=0; int caught=0;
@ -400,7 +408,7 @@ void* postProcessing::processData(int delflag) {
usleep(200000); usleep(200000);
pthread_mutex_lock(&mg); pthread_mutex_lock(&mg);
caught=getCurrentFrameIndex(); caught=getReceiverCurrentFrameIndex();
pthread_mutex_unlock(&mg); pthread_mutex_unlock(&mg);
incrementProgress(caught-prevCaught); incrementProgress(caught-prevCaught);
if(caught-prevCaught) newData=true; if(caught-prevCaught) newData=true;