updated bug-crashing when file write disabled and included file pointer in call back function

git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorSoftware@474 951219d9-93cf-4727-9268-0efd64621fa3
This commit is contained in:
l_maliakal_d
2013-02-26 16:08:03 +00:00
parent 28d2d64f51
commit 1ef4ace390
10 changed files with 41 additions and 47 deletions

View File

@ -166,7 +166,7 @@ int slsReceiverFunctionList::startReceiver(){
#ifdef VERBOSE
cout << "Starting Receiver" << endl;
#endif
cout << endl;
int err = 0;
if(!listening_thread_running){
@ -263,7 +263,7 @@ void* slsReceiverFunctionList::startListeningThread(void* this_pointer){
int slsReceiverFunctionList::startListening(){
#ifdef VERYVERBOSE
i cout << "In startListening()\n");
cout << "In startListening()\n");
#endif
// Variable and structure definitions
int rc;
@ -388,15 +388,14 @@ int slsReceiverFunctionList::startWriting(){
strcpy(savefilename,"");
strcpy(actualfilename,"");
if (!writeReceiverData)
cout << "Max Frames Per File:" << maxFramesPerFile << endl;
else
cout << "Note: Writing Data has been defined exernally" << endl;
cout << "Max Frames Per File:" << maxFramesPerFile << endl;
if (writeReceiverData)
cout << "Note: Data Write has been defined exernally" << endl;
cout << "Ready!" << endl;
if(!enableFileWrite)
cout << endl << "Note: Data will not be saved" << endl;
if(enableFileWrite){
//create file name
if(frameIndexNeeded==-1) sprintf(savefilename, "%s/%s_%d.raw", filePath,fileName,fileIndex);
else sprintf(savefilename, "%s/%s_f%012d_%d.raw", filePath,fileName,framesCaught,fileIndex);
@ -406,10 +405,9 @@ int slsReceiverFunctionList::startWriting(){
else sprintf(actualfilename, "%s/%s_%d_%09d.raw", filePath,fileName,fileIndex, 0);
//start writing
if (!writeReceiverData){
sfilefd = fopen((const char *) (actualfilename), "w");
cout << "Saving to " << actualfilename << endl;
}
if(enableFileWrite){
sfilefd = fopen((const char *) (actualfilename), "w");
cout << actualfilename << endl;
}
@ -417,10 +415,8 @@ int slsReceiverFunctionList::startWriting(){
while(listening_thread_running){
//when it reaches maxFramesPerFile,start writing new file
if ((!writeReceiverData)&& (framesInFile == maxFramesPerFile)) {
if (framesInFile == maxFramesPerFile) {
if(enableFileWrite){
fclose(sfilefd);
//create file name
if(frameIndexNeeded==-1) sprintf(savefilename, "%s/%s_%d.raw", filePath,fileName,fileIndex);
else sprintf(savefilename, "%s/%s_f%012d_%d.raw", filePath,fileName,framesCaught,fileIndex);
@ -428,13 +424,15 @@ int slsReceiverFunctionList::startWriting(){
if(!shortFileName) strcpy(actualfilename,savefilename);
else sprintf(actualfilename, "%s/%s_%d_%09d.raw", filePath,fileName,fileIndex, shortFileNameIndex);
shortFileNameIndex++;
//start writing in new file
//start writing in new file
if(enableFileWrite){
fclose(sfilefd);
sfilefd = fopen((const char *) (actualfilename), "w");
cout << "saving to " << actualfilename << "\t";
}
//currframenum=(int)(*((int*)latestData));
cout << "packet loss " << fixed << setprecision(4) << ((currframenum-prevframenum-(packetsPerFrame*framesInFile))/(double)(packetsPerFrame*framesInFile))*100.000 << "%\t\t"
cout << actualfilename << "\tpacket loss " << fixed << setprecision(4) << ((currframenum-prevframenum-(packetsPerFrame*framesInFile))/(double)(packetsPerFrame*framesInFile))*100.000 << "%\t\t"
"framenum " << currframenum << "\t\t"
"p " << prevframenum << endl;
@ -452,17 +450,18 @@ int slsReceiverFunctionList::startWriting(){
framesCaught++;
totalFramesCaught++;
currframenum = (int)(*((int*)dataWriteFrame->buffer));
if(enableFileWrite){
if (writeReceiverData)
writeReceiverData(dataWriteFrame->buffer,dataWriteFrame->rc, sfilefd, pwriteReceiverDataArg);
else
fwrite(dataWriteFrame->buffer, 1, dataWriteFrame->rc, sfilefd);
}
if(guiRequiresData){
memcpy(latestData,dataWriteFrame->buffer,bufferSize);
guiRequiresData=0;
}
//cout<<"write index:"<<(int)(*(int*)latestData)<<endl;
if(enableFileWrite){
if (writeReceiverData)
writeReceiverData(dataWriteFrame->buffer,dataWriteFrame->rc, pwriteReceiverDataArg);
else
fwrite(dataWriteFrame->buffer, 1, dataWriteFrame->rc, sfilefd);
}
framesInFile++;
///ANNA?!?!??!
// delete [] dataWriteFrame->buffer;

View File

@ -184,7 +184,7 @@ public:
/**
* Register call back function to write receiver data
*/
void registerWriteReceiverDataCallback(int( *userCallback)(char*, int, void*), void *pArg) {writeReceiverData = userCallback; pwriteReceiverDataArg = pArg;};
void registerWriteReceiverDataCallback(int( *userCallback)(char*, int, FILE*, void*), void *pArg) {writeReceiverData = userCallback; pwriteReceiverDataArg = pArg;};
private:
@ -299,7 +299,7 @@ private:
int currframenum;
/** register for call back to get data */
int (*writeReceiverData)(char*,int,void*);
int (*writeReceiverData)(char*,int,FILE*,void*);
void *pwriteReceiverDataArg;
public:

View File

@ -2,10 +2,10 @@
#define SVNURL "file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorSoftware/slsReceiver"
//#define SVNREPPATH ""
#define SVNREPUUID "951219d9-93cf-4727-9268-0efd64621fa3"
//#define SVNREV 0x471
//#define SVNREV 0x473
//#define SVNKIND ""
//#define SVNSCHED ""
#define SVNAUTH "l_maliakal_d"
#define SVNREV 0x471
#define SVNREV 0x473
#define SVNDATE 0x20130226
//