diff --git a/manual/manual-api/mainClient.cpp b/manual/manual-api/mainClient.cpp index 393a6bef1..b8d90cfdf 100644 --- a/manual/manual-api/mainClient.cpp +++ b/manual/manual-api/mainClient.cpp @@ -71,10 +71,6 @@ int main(int argc, char **argv) { /** - registering data callback */ pDetector->registerDataCallback(&dataCallback, NULL); - /** - if receiver exists, enable data streaming from receiver to get the data */ - pDetector->enableDataStreamingFromReceiver(1); - /** - create zmq sockets in client to enable data streaming in of data from receiver/different process */ - pDetector->enableDataStreamingToClient(1); /** - ensuring detector status is idle before starting acquisition. exiting if not idle */ diff --git a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp index ff1030324..fcf73387d 100644 --- a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp +++ b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp @@ -2567,8 +2567,22 @@ int multiSlsDetector::configureMAC() { return callDetectorMember(&slsDetector::configureMAC); } -int64_t multiSlsDetector::setTimer(timerIndex index, int64_t t) { - int64_t ret = parallelCallDetectorMember(&slsDetector::setTimer, index, t); +int64_t multiSlsDetector::setTimer(timerIndex index, int64_t t, int imod) { + int64_t ret=-100; + + // single (for gotthard 25 um) + if (imod != -1) { + if (imod >= 0 && imod < (int)detectors.size()) { + ret = detectors[imod]->setTimer(index,t,imod); + if(detectors[imod]->getErrorMask()) + setErrorMask(getErrorMask()|(1<slsDetectorBase::setThresholdEnergy(e_ev, tb, isettings, id); } -double slsDetectorUsers::setExposureTime(double t, bool inseconds){ - int64_t tms = (int64_t)(t * (1E+9)); - if (t < 0) tms = -1; - if(!inseconds) - return myDetector->setExposureTime((int64_t)t); - else - return ((1E-9) * (double)myDetector->setExposureTime(tms)); +double slsDetectorUsers::setExposureTime(double t, bool inseconds, int imod){ + if(!inseconds) + return myDetector->setExposureTime((int64_t)t,imod); + else { + // + 0.5 to round for precision lost from converting double to int64_t + int64_t tms = (int64_t)(t * (1E+9) + 0.5); + if (t < 0) tms = -1; + tms = myDetector->setExposureTime(tms,imod); + if (tms < 0) + return -1; + return ((1E-9) * (double)tms); + } } -double slsDetectorUsers::setExposurePeriod(double t, bool inseconds){ - int64_t tms = (int64_t)(t * (1E+9)); - if (t < 0) tms = -1; - if(!inseconds) - return myDetector->setExposurePeriod((int64_t)t); - else - return ((1E-9) * (double)myDetector->setExposurePeriod(tms)); +double slsDetectorUsers::setExposurePeriod(double t, bool inseconds, int imod){ + if(!inseconds) + return myDetector->setExposurePeriod((int64_t)t,imod); + else { + // + 0.5 to round for precision lost from converting double to int64_t + int64_t tms = (int64_t)(t * (1E+9) + 0.5); + if (t < 0) tms = -1; + tms = myDetector->setExposurePeriod(tms,imod); + if (tms < 0) + return -1; + return ((1E-9) * (double)tms); + } } -double slsDetectorUsers::setDelayAfterTrigger(double t, bool inseconds){ - int64_t tms = (int64_t)(t * (1E+9)); - if (t < 0) tms = -1; - if(!inseconds) - return myDetector->setDelayAfterTrigger((int64_t)t); - else - return ((1E-9) * (double)myDetector->setDelayAfterTrigger(tms)); +double slsDetectorUsers::setDelayAfterTrigger(double t, bool inseconds, int imod){ + if(!inseconds) + return myDetector->setDelayAfterTrigger((int64_t)t,imod); + else { + // + 0.5 to round for precision lost from converting double to int64_t + int64_t tms = (int64_t)(t * (1E+9) + 0.5); + if (t < 0) tms = -1; + tms = myDetector->setDelayAfterTrigger(tms,imod); + if (tms < 0) + return -1; + return ((1E-9) * (double)tms); + } } -int64_t slsDetectorUsers::setNumberOfGates(int64_t t){ - return myDetector->setNumberOfGates(t); +int64_t slsDetectorUsers::setNumberOfGates(int64_t t, int imod){ + return myDetector->setNumberOfGates(t,imod); } -int64_t slsDetectorUsers::setNumberOfFrames(int64_t t){ - return myDetector->setNumberOfFrames(t); +int64_t slsDetectorUsers::setNumberOfFrames(int64_t t, int imod){ + return myDetector->setNumberOfFrames(t,imod); } -int64_t slsDetectorUsers::setNumberOfCycles(int64_t t){ - return myDetector->setNumberOfCycles(t); +int64_t slsDetectorUsers::setNumberOfCycles(int64_t t, int imod){ + return myDetector->setNumberOfCycles(t,imod); } int slsDetectorUsers::setTimingMode(int pol){ diff --git a/slsDetectorSoftware/slsDetector/slsDetectorUsers.h b/slsDetectorSoftware/slsDetector/slsDetectorUsers.h index c73e32652..0b795f356 100644 --- a/slsDetectorSoftware/slsDetector/slsDetectorUsers.h +++ b/slsDetectorSoftware/slsDetector/slsDetectorUsers.h @@ -325,47 +325,53 @@ class slsDetectorUsers @short set/get exposure time value \param t time in sn (-1 gets) \param inseconds true if the value is in s, else ns + \param imod module number (-1 for all) \returns timer set value in ns, or s if specified */ - double setExposureTime(double t=-1, bool inseconds=false); + double setExposureTime(double t=-1, bool inseconds=false, int imod = -1); /** @short set/get exposure period \param t time in ns (-1 gets) \param inseconds true if the value is in s, else ns + \param imod module number (-1 for all) \returns timer set value in ns, or s if specified */ - double setExposurePeriod(double t=-1, bool inseconds=false); + double setExposurePeriod(double t=-1, bool inseconds=false, int imod = -1); /** @short set/get delay after trigger \param t time in ns (-1 gets) \param inseconds true if the value is in s, else ns + \param imod module number (-1 for all) \returns timer set value in ns, or s if specified */ - double setDelayAfterTrigger(double t=-1, bool inseconds=false); + double setDelayAfterTrigger(double t=-1, bool inseconds=false, int imod = -1); /** @short set/get number of gates \param t number of gates (-1 gets) + \param imod module number (-1 for all) \returns number of gates */ - int64_t setNumberOfGates(int64_t t=-1); + int64_t setNumberOfGates(int64_t t=-1, int imod = -1); /** @short set/get number of frames i.e. number of exposure per trigger \param t number of frames (-1 gets) + \param imod module number (-1 for all) \returns number of frames */ - int64_t setNumberOfFrames(int64_t t=-1); + int64_t setNumberOfFrames(int64_t t=-1, int imod = -1); /** @short set/get number of cycles i.e. number of triggers \param t number of frames (-1 gets) + \param imod module number (-1 for all) \returns number of frames */ - int64_t setNumberOfCycles(int64_t t=-1); + int64_t setNumberOfCycles(int64_t t=-1, int imod = -1); /** diff --git a/slsDetectorSoftware/threadFiles/Task.h b/slsDetectorSoftware/threadFiles/Task.h index cbb4118f9..585f4a119 100644 --- a/slsDetectorSoftware/threadFiles/Task.h +++ b/slsDetectorSoftware/threadFiles/Task.h @@ -123,7 +123,7 @@ protected: func2_t * m10; func2_t * m11; func2_t * m12; - func2_t * m13; + func3_t * m13; func2_t * m14; func3_t * m15; func4_t * m16; @@ -149,7 +149,7 @@ public: Task(func2_t * t): SuperTask(),fnum(10){m10 = t;}; Task(func2_t * t): SuperTask(),fnum(11){m11 = t;}; Task(func2_t * t): SuperTask(),fnum(12){m12 = t;}; - Task(func2_t * t): SuperTask(),fnum(13){m13 = t;}; + Task(func3_t * t): SuperTask(),fnum(13){m13 = t;}; Task(func2_t * t): SuperTask(),fnum(14){m14 = t;}; Task(func3_t * t): SuperTask(),fnum(15){m15 = t;}; Task(func4_t * t): SuperTask(),fnum(16){m16 = t;};