mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2026-01-23 04:46:43 +01:00
removed salas code for the time being, implemented overwrite, fixed prob of communciating between detector and receiver for settimer
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorSoftware@803 951219d9-93cf-4727-9268-0efd64621fa3
This commit is contained in:
@@ -36,12 +36,14 @@ struct EigerReceiverScanConfiguration {
|
||||
int scanTag;
|
||||
int numberOfFrames;
|
||||
bool doFileWrite;
|
||||
bool doFileOverWrite;
|
||||
|
||||
EigerReceiverScanConfiguration():
|
||||
dynamicRange(-1),
|
||||
scanTag(-1),
|
||||
numberOfFrames(-1),
|
||||
doFileWrite(false) {};
|
||||
doFileWrite(false),
|
||||
doFileOverWrite(false){};
|
||||
};
|
||||
|
||||
class EigerReceiverImplementation: public EigerReceiver {
|
||||
@@ -163,6 +165,11 @@ public:
|
||||
return(scan_config.doFileWrite);
|
||||
}
|
||||
|
||||
int getEnableOverwrite() const {
|
||||
DEBUG("getEnableOverwrite() returns " << scan_config.doFileOverWrite);
|
||||
return(scan_config.doFileOverWrite);
|
||||
}
|
||||
|
||||
slsDetectorDefs::runStatus getStatus() const {
|
||||
DEBUG("getStatus(): return " <<status);
|
||||
return(status);
|
||||
@@ -204,6 +211,12 @@ public:
|
||||
return(getEnableFileWrite());
|
||||
}
|
||||
|
||||
int setEnableOverwrite(const int i) {
|
||||
DEBUG("setEnableOverwrite() called with " << i);
|
||||
scan_config.doFileOverWrite = i;
|
||||
return(getEnableOverwrite());
|
||||
}
|
||||
|
||||
int startReceiver(char message[]) {
|
||||
DEBUG("startReceiver(): return 0.");
|
||||
status = slsDetectorDefs::RUNNING;
|
||||
|
||||
@@ -115,6 +115,12 @@ public:
|
||||
*/
|
||||
virtual int getEnableFileWrite() const = 0;
|
||||
|
||||
/**
|
||||
* Returns file overwrite enable
|
||||
* 1: YES 0: NO
|
||||
*/
|
||||
virtual int getEnableOverwrite() const = 0;
|
||||
|
||||
/**
|
||||
* Set File Name (without frame index, file index and extension)
|
||||
@param c file name
|
||||
@@ -167,6 +173,13 @@ public:
|
||||
*/
|
||||
virtual int setEnableFileWrite(const int i) = 0;
|
||||
|
||||
/**
|
||||
* Set enable file overwrite
|
||||
* @param i file overwrite enable
|
||||
/returns file overwrite enable
|
||||
*/
|
||||
virtual int setEnableOverwrite(const int i) = 0;
|
||||
|
||||
/**
|
||||
* Starts Receiver - activate all configuration settings to the eiger receiver and start to listen for packets
|
||||
@param message is the error message if there is an error
|
||||
|
||||
@@ -38,7 +38,9 @@ slsReceiverFunctionList::slsReceiverFunctionList(detectorType det):
|
||||
eth(NULL),
|
||||
maxPacketsPerFile(0),
|
||||
enableFileWrite(1),
|
||||
overwrite(1),
|
||||
fileIndex(0),
|
||||
scanTag(0),
|
||||
frameIndexNeeded(0),
|
||||
acqStarted(false),
|
||||
measurementStarted(false),
|
||||
@@ -324,7 +326,20 @@ int slsReceiverFunctionList::setEnableFileWrite(int i){
|
||||
|
||||
|
||||
|
||||
int slsReceiverFunctionList::enableOverwrite(int i){
|
||||
if(i!=-1){
|
||||
if(myDetectorType == EIGER)
|
||||
receiver->setEnableOverwrite(i);
|
||||
else
|
||||
overwrite=i;
|
||||
|
||||
}
|
||||
if(myDetectorType == EIGER)
|
||||
return receiver->getEnableOverwrite();
|
||||
else
|
||||
return overwrite;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -373,9 +388,17 @@ int32_t slsReceiverFunctionList::setNumberOfFrames(int32_t fnum){
|
||||
}
|
||||
|
||||
int32_t slsReceiverFunctionList::setScanTag(int32_t stag){
|
||||
if(stag >= 0)
|
||||
receiver->setScanTag(stag);
|
||||
return receiver->getScanTag();
|
||||
if(stag >= 0){
|
||||
if(myDetectorType == EIGER)
|
||||
receiver->setScanTag(stag);
|
||||
else
|
||||
scanTag = stag;
|
||||
}
|
||||
|
||||
if(myDetectorType == EIGER)
|
||||
return receiver->getScanTag();
|
||||
else
|
||||
return scanTag;
|
||||
}
|
||||
|
||||
int32_t slsReceiverFunctionList::setDynamicRange(int32_t dr){
|
||||
@@ -437,7 +460,8 @@ int64_t slsReceiverFunctionList::setAcquisitionPeriod(int64_t index){
|
||||
if(index >= 0){
|
||||
if(index != acquisitionPeriod){
|
||||
acquisitionPeriod = index;
|
||||
setupFifoStructure();
|
||||
if(myDetectorType != EIGER)
|
||||
setupFifoStructure();
|
||||
}
|
||||
}
|
||||
return acquisitionPeriod;
|
||||
@@ -982,7 +1006,12 @@ int slsReceiverFunctionList::createNewFile(){
|
||||
sfilefd = NULL;
|
||||
}
|
||||
//open file
|
||||
if (NULL == (sfilefd = fopen((const char *) (savefilename), "w"))){
|
||||
if(!overwrite){
|
||||
if (NULL == (sfilefd = fopen((const char *) (savefilename), "wx"))){
|
||||
cout << "Error: Could not create new file " << savefilename << endl;
|
||||
return FAIL;
|
||||
}
|
||||
}else if (NULL == (sfilefd = fopen((const char *) (savefilename), "w"))){
|
||||
cout << "Error: Could not create file " << savefilename << endl;
|
||||
return FAIL;
|
||||
}
|
||||
|
||||
@@ -141,8 +141,12 @@ public:
|
||||
*/
|
||||
int setEnableFileWrite(int i);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Enable/disable overwrite
|
||||
* @param i enable
|
||||
* Returns enable over write
|
||||
*/
|
||||
int enableOverwrite(int i);
|
||||
|
||||
|
||||
|
||||
@@ -377,6 +381,9 @@ private:
|
||||
/** File write enable */
|
||||
int enableFileWrite;
|
||||
|
||||
/** File over write enable */
|
||||
int overwrite;
|
||||
|
||||
/** Complete File name */
|
||||
char savefilename[MAX_STR_LENGTH];
|
||||
|
||||
@@ -389,6 +396,9 @@ private:
|
||||
/** File Index */
|
||||
int fileIndex;
|
||||
|
||||
/** scan tag */
|
||||
int scanTag;
|
||||
|
||||
/** if frame index required in file name */
|
||||
int frameIndexNeeded;
|
||||
|
||||
|
||||
@@ -321,6 +321,9 @@ int slsReceiverFuncs::function_table(){
|
||||
flist[F_ENABLE_COMPRESSION] = &slsReceiverFuncs::enable_compression;
|
||||
flist[F_SET_DETECTOR_HOSTNAME] = &slsReceiverFuncs::set_detector_hostname;
|
||||
flist[F_SET_DYNAMIC_RANGE] = &slsReceiverFuncs::set_dynamic_range;
|
||||
flist[F_ENABLE_OVERWRITE] = &slsReceiverFuncs::enable_overwrite;
|
||||
|
||||
|
||||
|
||||
//General Functions
|
||||
flist[F_LOCK_SERVER] = &slsReceiverFuncs::lock_receiver;
|
||||
@@ -1657,6 +1660,61 @@ int slsReceiverFuncs::set_dynamic_range() {
|
||||
|
||||
|
||||
|
||||
int slsReceiverFuncs::enable_overwrite() {
|
||||
ret=OK;
|
||||
int retval=-1;
|
||||
int index;
|
||||
strcpy(mess,"Could not enable/disable overwrite\n");
|
||||
|
||||
|
||||
// receive arguments
|
||||
if(socket->ReceiveDataOnly(&index,sizeof(index)) < 0 ){
|
||||
strcpy(mess,"Error reading from socket\n");
|
||||
ret = FAIL;
|
||||
}
|
||||
|
||||
// execute action if the arguments correctly arrived
|
||||
#ifdef SLS_RECEIVER_FUNCTION_LIST
|
||||
if (ret==OK) {
|
||||
if (lockStatus==1 && socket->differentClients==1){
|
||||
sprintf(mess,"Receiver locked by %s\n", socket->lastClientIP);
|
||||
ret=FAIL;
|
||||
}
|
||||
else
|
||||
retval=slsReceiverList->enableOverwrite(index);
|
||||
}
|
||||
#ifdef VERBOSE
|
||||
if(ret!=FAIL)
|
||||
cout << "overwrite:" << retval << endl;
|
||||
else
|
||||
cout << mess << endl;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
if(ret==OK && socket->differentClients){
|
||||
cout << "Force update" << endl;
|
||||
ret=FORCE_UPDATE;
|
||||
}
|
||||
|
||||
// send answer
|
||||
socket->SendDataOnly(&ret,sizeof(ret));
|
||||
if(ret==FAIL)
|
||||
socket->SendDataOnly(mess,sizeof(mess));
|
||||
socket->SendDataOnly(&retval,sizeof(retval));
|
||||
|
||||
//return ok/fail
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -163,6 +163,9 @@ public:
|
||||
/** set dynamic range */
|
||||
int set_dynamic_range();
|
||||
|
||||
/** enable overwrite */
|
||||
int enable_overwrite();
|
||||
|
||||
|
||||
//General Functions
|
||||
/** Locks Receiver */
|
||||
|
||||
Reference in New Issue
Block a user