merge from developer (without the additional json header implementations)

This commit is contained in:
2019-02-12 09:35:24 +01:00
parent 985b2eba4d
commit a64b34610a
28 changed files with 903 additions and 176 deletions

View File

@ -2753,7 +2753,11 @@ int slsDetector::setUDPConnection() {
setReceiverOnline(OFFLINE_FLAG); //FIXME: Needed??
}
}
} else {
ret=FAIL;
setErrorMask((getErrorMask())|(COULD_NOT_CONFIGURE_MAC));
}
printReceiverConfiguration(logDEBUG1);
return ret;
}
@ -2926,6 +2930,8 @@ int slsDetector::setROI(int n, ROI roiLimits[]) {
}
int ret = sendROI(n, roiLimits);
if(ret==FAIL)
setErrorMask((getErrorMask())|(COULDNOT_SET_ROI));
if (thisDetector->myDetectorType == CHIPTESTBOARD) {
getTotalNumberOfChannels();
}
@ -2996,7 +3002,7 @@ int slsDetector::sendROI(int n, ROI roiLimits[]) {
ret = updateDetector();
}
// old firmware requires configuremac after setting roi
if (thisDetector->myDetectorType == GOTTHARD) {
if (thisDetector->myDetectorType == GOTTHARD && n != -1) {
ret = configureMAC();
}

View File

@ -3226,7 +3226,9 @@ std::string slsDetectorCommand::cmdDetectorSize(int narg, char *args[], int acti
myDet->setReceiverOnline(ONLINE_FLAG, detPos);
ret = myDet->setDynamicRange(val, detPos);
} else if (cmd == "roi") {
myDet->getROI(ret, detPos);
ROI* r = myDet->getROI(ret, detPos);
if (r != NULL)
delete [] r;
} else if (cmd == "detsizechan") {
sprintf(ans, "%d %d", myDet->getMaxNumberOfChannelsPerDetector(X), myDet->getMaxNumberOfChannelsPerDetector(Y));
return std::string(ans);
@ -5341,7 +5343,8 @@ std::string slsDetectorCommand::cmdPattern(int narg, char *args[], int action, i
}
}
os << std::hex << reg << std::dec ;
if (aa != NULL)
delete [] aa;
//os <<" "<< std::hex << myDet->readRegister(120, detPos) << std::dec ;
}

View File

@ -1,7 +1,7 @@
#include "slsDetectorUsers.h"
#include "detectorData.h"
#include "multiSlsDetector.h"
#include "multiSlsDetectorClient.h"
@ -57,7 +57,7 @@ int slsDetectorUsers::dumpDetectorSetup(const std::string& fname){
}
int64_t slsDetectorUsers::getDetectorFirmwareVersion(int detPos){
return detector.getId(slsDetectorDefs::DETECTOR_FIRMWARE_VERSION);
return detector.getId(slsDetectorDefs::DETECTOR_FIRMWARE_VERSION, detPos);
}
int64_t slsDetectorUsers::getDetectorSerialNumber(int detPos){
@ -234,6 +234,13 @@ int slsDetectorUsers::setFlowControl10G(int i, int detPos) {
return detector.setFlowControl10G(i, detPos);
}
int slsDetectorUsers::setROI(int n, slsDetectorDefs::ROI roiLimits[], int detPos) {
return myDetector->setROI(n, roiLimits, detPos);
}
slsDetectorDefs::ROI* slsDetectorUsers::getROI(int &n, int detPos) {
return myDetector->getROI(n, detPos);
}
/************************************************************************

View File

@ -14,9 +14,8 @@
class detectorData;
class multiSlsDetector;
#include "multiSlsDetector.h"
#include <cstdint>
#include <string>
@ -530,6 +529,24 @@ public:
*/
int setFlowControl10G(int enable = -1, int detPos = -1);
/**
* Set ROI (Gotthard) (>= 1 roi, but max 1 roi per module)
* At the moment only one set allowed
* @param n number of rois
* @param roiLimits array of roi
* @param detPos -1 for all detectors in list or specific detector position
* @returns OK or FAIL
*/
int setROI(int n=-1, slsDetectorDefs::ROI roiLimits[]=NULL, int detPos = -1);
/**
* Get ROI from each detector and convert it to the multi detector scale (Gotthard)
* >= 1 roi, but max 1 roi per module
* @param n number of rois
* @param detPos -1 for all detectors in list or specific detector position
* @returns pointer to array of ROI structure
*/
slsDetectorDefs::ROI* getROI(int &n, int detPos = -1);
@ -825,6 +842,7 @@ public:
case 3: return std::string("finished"); \
case 4: return std::string("data"); \
case 5: return std::string("running"); \
case 6: return std::string("stopped"); \
default: return std::string("unknown"); \
}};