mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-12 21:07:13 +02:00
WIP
This commit is contained in:
@ -6,6 +6,8 @@
|
||||
#include <vector>
|
||||
|
||||
class multiSlsDetector;
|
||||
class detectorData;
|
||||
|
||||
namespace sls {
|
||||
using ns = std::chrono::nanoseconds;
|
||||
class MacAddr;
|
||||
@ -83,6 +85,35 @@ class Detector {
|
||||
/** [Jungfrau][Gotthard] */
|
||||
void setSettings(defs::detectorSettings value, Positions pos = {});
|
||||
|
||||
/**************************************************
|
||||
* *
|
||||
* Callbacks *
|
||||
* *
|
||||
* ************************************************/
|
||||
|
||||
/**
|
||||
* register callback for end of acquisition
|
||||
* @param func function to be called with parameters:
|
||||
* current progress in percentage, detector status, pArg pointer
|
||||
* @param pArg pointer that is returned in call back
|
||||
*/
|
||||
void registerAcquisitionFinishedCallback(void (*func)(double, int, void *),
|
||||
void *pArg);
|
||||
|
||||
/**
|
||||
* register callback for accessing reconstructed complete images
|
||||
* Receiver sends out images via zmq, the client reconstructs them into
|
||||
* complete images. Therefore, it also enables zmq streaming from receiver
|
||||
* and the client.
|
||||
* @param func function to be called for each image with parameters:
|
||||
* detector data structure, frame number, sub frame number (for eiger in 32
|
||||
* bit mode), pArg pointer
|
||||
* @param pArg pointer that is returned in call back
|
||||
*/
|
||||
void registerDataCallback(void (*func)(detectorData *, uint64_t, uint32_t,
|
||||
void *),
|
||||
void *pArg);
|
||||
|
||||
/**************************************************
|
||||
* *
|
||||
* Acquisition Parameters *
|
||||
|
@ -1993,13 +1993,6 @@ class multiSlsDetector : public virtual slsDetectorDefs {
|
||||
*/
|
||||
void registerAcquisitionFinishedCallback(void (*func)(double, int, void *),
|
||||
void *pArg);
|
||||
/**
|
||||
* register callback for accessing detector progress
|
||||
* @param func function to be called at the end of the acquisition.
|
||||
* gets detector status and progress index as arguments
|
||||
* @param pArg argument
|
||||
*/
|
||||
void registerProgressCallback(void (*func)(double, void *), void *pArg);
|
||||
|
||||
/**
|
||||
* register calbback for accessing detector final data,
|
||||
@ -2260,9 +2253,6 @@ class multiSlsDetector : public virtual slsDetectorDefs {
|
||||
void (*acquisition_finished)(double, int, void *){nullptr};
|
||||
void *acqFinished_p{nullptr};
|
||||
|
||||
void (*progress_call)(double, void *){nullptr};
|
||||
void *pProgressCallArg{nullptr};
|
||||
|
||||
void (*dataReady)(detectorData *, uint64_t, uint32_t, void *){nullptr};
|
||||
void *pCallbackArg{nullptr};
|
||||
};
|
||||
|
@ -775,14 +775,6 @@ public:
|
||||
*/
|
||||
void registerAcquisitionFinishedCallback(void( *func)(double,int, void*), void *pArg);
|
||||
|
||||
/**
|
||||
* register callback for accessing detector progress in client,
|
||||
* @param func function to be called at the end of the acquisition.
|
||||
* gets detector status and progress index as arguments
|
||||
* @param pArg argument
|
||||
*/
|
||||
void registerProgressCallback(void( *func)(double,void*), void *pArg);
|
||||
|
||||
/**
|
||||
@short [usage strongly discouraged] sets parameters trough command line interface http://www.psi.ch/detectors/UsersSupportEN/slsDetectorClientHowTo.pdf
|
||||
\param command string as it would be written on the command line
|
||||
|
@ -4,6 +4,8 @@
|
||||
#include "multiSlsDetector.h"
|
||||
#include "slsDetector.h"
|
||||
#include "sls_detector_defs.h"
|
||||
#include "detectorData.h"
|
||||
|
||||
namespace sls {
|
||||
|
||||
using defs = slsDetectorDefs;
|
||||
@ -82,6 +84,20 @@ void Detector::setSettings(defs::detectorSettings value, Positions pos) {
|
||||
pimpl->Parallel(&slsDetector::setSettings, pos, value);
|
||||
}
|
||||
|
||||
// Callback
|
||||
|
||||
void Detector::registerAcquisitionFinishedCallback(void (*func)(double, int,
|
||||
void *),
|
||||
void *pArg) {
|
||||
pimpl->registerAcquisitionFinishedCallback(func, pArg);
|
||||
}
|
||||
|
||||
void Detector::registerDataCallback(void (*func)(detectorData *, uint64_t,
|
||||
uint32_t, void *),
|
||||
void *pArg) {
|
||||
pimpl->registerDataCallback(func, pArg);
|
||||
}
|
||||
|
||||
// Acquisition Parameters
|
||||
|
||||
Result<int64_t> Detector::getNumberOfFrames() const {
|
||||
|
@ -3604,12 +3604,6 @@ void multiSlsDetector::registerAcquisitionFinishedCallback(
|
||||
acqFinished_p = pArg;
|
||||
}
|
||||
|
||||
void multiSlsDetector::registerProgressCallback(void (*func)(double, void *),
|
||||
void *pArg) {
|
||||
progress_call = func;
|
||||
pProgressCallArg = pArg;
|
||||
}
|
||||
|
||||
void multiSlsDetector::registerDataCallback(
|
||||
void (*userCallback)(detectorData *, uint64_t, uint32_t, void *),
|
||||
void *pArg) {
|
||||
@ -3733,10 +3727,6 @@ int multiSlsDetector::acquire() {
|
||||
sem_post(&sem_newRTAcquisition);
|
||||
dataProcessingThread.join();
|
||||
|
||||
if (progress_call != nullptr) {
|
||||
progress_call(getCurrentProgress(), pProgressCallArg);
|
||||
}
|
||||
|
||||
if (acquisition_finished != nullptr) {
|
||||
acquisition_finished(getCurrentProgress(), getRunStatus(),
|
||||
acqFinished_p);
|
||||
|
@ -383,10 +383,6 @@ void slsDetectorUsers::registerAcquisitionFinishedCallback(void( *func)(double,i
|
||||
detector.registerAcquisitionFinishedCallback(func,pArg);
|
||||
}
|
||||
|
||||
void slsDetectorUsers::registerProgressCallback(void( *func)(double,void*), void *pArg) {
|
||||
detector.registerProgressCallback(func,pArg);
|
||||
}
|
||||
|
||||
void slsDetectorUsers::putCommand(const std::string& command){
|
||||
multiSlsDetectorClient(command, slsDetectorDefs::PUT_ACTION, &detector);
|
||||
}
|
||||
|
Reference in New Issue
Block a user