// // ReadoutAgent.cpp // #include "afx.h" #include "ReadoutAgent.h" #include "logFile.h" #include "DaqSetup.h" extern "C" { #include "messages.h" int get_flag (int, int); } // ====================================================== // constructor // ====================================================== ReadoutAgent::ReadoutAgent (ReadoutConfig* config) { _dataTransMode = eob_trans; // _nrOfPlanes = config.nrOfPlanes (); _nrOfPlanes = 2; _listOfPlanes = new int [_nrOfPlanes]; _listOfDsp = new int [_nrOfPlanes]; _ptListPlanes = new DetPlane* [_nrOfPlanes]; DetPlane *detPlane; int i, j = 0; for ( i = 0; i < 4; i++ ) { detPlane = config->get_detPlane (i, 0); logFile << " ioio " << i << " " << detPlane << endl; if ( detPlane != 0 && j <= _nrOfPlanes ) { logFile << " ra: " << _nrOfPlanes << " " << j << endl; _listOfPlanes [j] = i; _listOfDsp [j] = 0; _ptListPlanes [j] = detPlane; j++; } } } ReadoutAgent::~ReadoutAgent () { delete []_listOfPlanes; delete []_listOfDsp; delete []_ptListPlanes; } // ====================================================== // // ====================================================== int ReadoutAgent::transferData () { int* data; int j; for ( int i = 0; i < _nrOfPlanes; i++ ) { data = do_dataTransfer (_listOfPlanes[i], _listOfDsp [i], 2); logFile << " data" << endl; fwrite ( (void *) data, 4, data[1], _rawDataOut); for ( j = 0; j < 5; j++ ) logFile << " " << data[j]; logFile << endl; } return 1; } // ============================================================== // // ============================================================== int ReadoutAgent::openFile (char *fileName) { DaqSetup* daq = daq->Instance (); DaqEnv* daqEnv = daq->daqEnv (); if ( daqEnv == 0 ) return 0; CString fileNamePath; if ( daqEnv->getFileDir (DataDir, fileName, fileNamePath) == 0 ) { logFile << " bad data outfile: " << fileNamePath << endl; return 0; } _rawDataOut = fopen ( (char *) (LPCTSTR) fileNamePath, "wb"); /* struct { float vthres, vref; fwrite ( (void *) , 4, data[1], _rawDataOut); for ( int i = 0; i < _nrOfPlanes; i++ ) { fwrite ( (void *) data, 4, data[1], _rawDataOut); _listOfPlanes[i], _listOfDsp [i], 2); logFile << " data" << endl; fwrite ( (void *) data, 4, data[1], _rawDataOut); for ( j = 0; j < 5; j++ ) logFile << " " << data[j]; logFile << endl; } */ if ( _rawDataOut == NULL ) return 0; else return 1; } void ReadoutAgent::closeFile () { fclose (_rawDataOut); }