mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-09 03:20:42 +02:00
WIP
This commit is contained in:
parent
f0e106f94f
commit
79d6ea614a
@ -210,10 +210,54 @@ class Detector {
|
|||||||
Result<std::string> getDetectorTypeAsString(Positions pos = {}) const;
|
Result<std::string> getDetectorTypeAsString(Positions pos = {}) const;
|
||||||
|
|
||||||
// Erik
|
// Erik
|
||||||
Result<bool> getReceiverSilentMode(Positions pos = {}) const;
|
|
||||||
|
|
||||||
|
|
||||||
|
Result<int> getFramesCaughtByReceiver(Positions pos = {}) const;
|
||||||
|
|
||||||
|
Result<uint64_t> getReceiverCurrentFrameIndex(Positions pos = {}) const;
|
||||||
|
|
||||||
|
void resetFramesCaught(Positions pos = {});
|
||||||
|
|
||||||
|
//TODO!
|
||||||
|
// int createReceivingDataSockets(const bool destroy = false);
|
||||||
|
// void readFrameFromReceiver();
|
||||||
|
|
||||||
|
void setMasterFileWrite(bool value, Positions pos = {});
|
||||||
|
|
||||||
|
Result<bool> getMasterFileWrite(Positions pos = {}) const;
|
||||||
|
|
||||||
|
void setReceiverStreamingFrequency(int freq = -1, int detPos = -1);
|
||||||
|
/**
|
||||||
|
* [All] If receiver streaming frequency is 0, then this timer between each
|
||||||
|
* data stream is set. Default is 500 ms.
|
||||||
|
*/
|
||||||
|
void setReceiverStreamingTimer(int time_in_ms = 500, Positions pos = {});
|
||||||
|
|
||||||
|
/** [All] */
|
||||||
|
Result<int> getReceiverStreamingTimer(Positions pos = {}) const;
|
||||||
|
|
||||||
|
// TODO!
|
||||||
|
// int enableDataStreamingToClient(int enable = -1);
|
||||||
|
// int enableDataStreamingFromReceiver(int enable = -1, int detPos = -1)
|
||||||
|
|
||||||
|
/** [TODO! All?] */
|
||||||
|
void setTenGigaEnabled(bool value, Positions pos = {});
|
||||||
|
|
||||||
|
/** [TODO! All?] */
|
||||||
|
Result<bool> getTenGigaEnabled(Positions pos = {}) const;
|
||||||
|
|
||||||
|
/** [All] */
|
||||||
|
void setReceiverFifoDepth(int nframes, Positions pos = {});
|
||||||
|
|
||||||
|
/** [All] */
|
||||||
|
Result<int> getReceiverFifoDepth(Positions pos = {}) const;
|
||||||
|
|
||||||
|
/** [All] */
|
||||||
void setReceiverSilentMode(bool value, Positions pos = {});
|
void setReceiverSilentMode(bool value, Positions pos = {});
|
||||||
|
|
||||||
|
/** [All] */
|
||||||
|
Result<bool> getReceiverSilentMode(Positions pos = {}) const;
|
||||||
|
|
||||||
/** [CTB] */
|
/** [CTB] */
|
||||||
void setPattern(const std::string &fname, Positions pos = {});
|
void setPattern(const std::string &fname, Positions pos = {});
|
||||||
|
|
||||||
|
@ -20,7 +20,6 @@ class detectorData;
|
|||||||
#define SHORT_STRING_LENGTH 50
|
#define SHORT_STRING_LENGTH 50
|
||||||
#define DATE_LENGTH 30
|
#define DATE_LENGTH 30
|
||||||
|
|
||||||
|
|
||||||
#include <future>
|
#include <future>
|
||||||
#include <numeric>
|
#include <numeric>
|
||||||
/**
|
/**
|
||||||
@ -118,7 +117,8 @@ class multiSlsDetector : public virtual slsDetectorDefs {
|
|||||||
std::vector<int> positions,
|
std::vector<int> positions,
|
||||||
typename NonDeduced<CT>::type... Args) {
|
typename NonDeduced<CT>::type... Args) {
|
||||||
|
|
||||||
if (positions.empty() || (positions.size() == 1 && positions[0] == -1 )) {
|
if (positions.empty() ||
|
||||||
|
(positions.size() == 1 && positions[0] == -1)) {
|
||||||
positions.resize(detectors.size());
|
positions.resize(detectors.size());
|
||||||
std::iota(begin(positions), end(positions), 0);
|
std::iota(begin(positions), end(positions), 0);
|
||||||
}
|
}
|
||||||
@ -143,7 +143,8 @@ class multiSlsDetector : public virtual slsDetectorDefs {
|
|||||||
std::vector<int> positions,
|
std::vector<int> positions,
|
||||||
typename NonDeduced<CT>::type... Args) const {
|
typename NonDeduced<CT>::type... Args) const {
|
||||||
|
|
||||||
if (positions.empty() || (positions.size() == 1 && positions[0] == -1 )) {
|
if (positions.empty() ||
|
||||||
|
(positions.size() == 1 && positions[0] == -1)) {
|
||||||
positions.resize(detectors.size());
|
positions.resize(detectors.size());
|
||||||
std::iota(begin(positions), end(positions), 0);
|
std::iota(begin(positions), end(positions), 0);
|
||||||
}
|
}
|
||||||
@ -168,7 +169,8 @@ class multiSlsDetector : public virtual slsDetectorDefs {
|
|||||||
std::vector<int> positions,
|
std::vector<int> positions,
|
||||||
typename NonDeduced<CT>::type... Args) {
|
typename NonDeduced<CT>::type... Args) {
|
||||||
|
|
||||||
if (positions.empty() || (positions.size() == 1 && positions[0] == -1 )) {
|
if (positions.empty() ||
|
||||||
|
(positions.size() == 1 && positions[0] == -1)) {
|
||||||
positions.resize(detectors.size());
|
positions.resize(detectors.size());
|
||||||
std::iota(begin(positions), end(positions), 0);
|
std::iota(begin(positions), end(positions), 0);
|
||||||
}
|
}
|
||||||
@ -190,7 +192,8 @@ class multiSlsDetector : public virtual slsDetectorDefs {
|
|||||||
std::vector<int> positions,
|
std::vector<int> positions,
|
||||||
typename NonDeduced<CT>::type... Args) const {
|
typename NonDeduced<CT>::type... Args) const {
|
||||||
|
|
||||||
if (positions.empty() || (positions.size() == 1 && positions[0] == -1 )) {
|
if (positions.empty() ||
|
||||||
|
(positions.size() == 1 && positions[0] == -1)) {
|
||||||
positions.resize(detectors.size());
|
positions.resize(detectors.size());
|
||||||
std::iota(begin(positions), end(positions), 0);
|
std::iota(begin(positions), end(positions), 0);
|
||||||
}
|
}
|
||||||
@ -280,7 +283,9 @@ class multiSlsDetector : public virtual slsDetectorDefs {
|
|||||||
* @param detPos -1 for all detectors in list or specific detector position
|
* @param detPos -1 for all detectors in list or specific detector position
|
||||||
* @returns Id or version number of that type
|
* @returns Id or version number of that type
|
||||||
*/
|
*/
|
||||||
int64_t getId(idMode mode, int detPos = -1);//not needed anymore (later remove this_software_version from enum)
|
int64_t getId(idMode mode,
|
||||||
|
int detPos = -1); // not needed anymore (later remove
|
||||||
|
// this_software_version from enum)
|
||||||
|
|
||||||
int getMultiId() const { return multiId; } // part of multi also
|
int getMultiId() const { return multiId; } // part of multi also
|
||||||
|
|
||||||
@ -300,14 +305,16 @@ class multiSlsDetector : public virtual slsDetectorDefs {
|
|||||||
* Get Detector Number
|
* Get Detector Number
|
||||||
* @returns vector of detector number
|
* @returns vector of detector number
|
||||||
*/
|
*/
|
||||||
std::vector<int64_t> getDetectorNumber(); // renamed to getDetectorSerialNumber
|
std::vector<int64_t>
|
||||||
|
getDetectorNumber(); // renamed to getDetectorSerialNumber
|
||||||
/**
|
/**
|
||||||
* Free shared memory from the command line
|
* Free shared memory from the command line
|
||||||
* avoiding creating the constructor classes and mapping
|
* avoiding creating the constructor classes and mapping
|
||||||
* @param multiId multi detector Id
|
* @param multiId multi detector Id
|
||||||
* @param detPos -1 for all detectors in list or specific detector position
|
* @param detPos -1 for all detectors in list or specific detector position
|
||||||
*/
|
*/
|
||||||
static void freeSharedMemory(int multiId, int detPos = -1);// private or not needed
|
static void freeSharedMemory(int multiId,
|
||||||
|
int detPos = -1); // private or not needed
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Free shared memory and delete shared memory structure
|
* Free shared memory and delete shared memory structure
|
||||||
@ -325,10 +332,12 @@ class multiSlsDetector : public virtual slsDetectorDefs {
|
|||||||
std::string getUserDetails(); // part of multi
|
std::string getUserDetails(); // part of multi
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the hostname of all sls detectors in shared memory and updates local cache
|
* Sets the hostname of all sls detectors in shared memory and updates local
|
||||||
|
* cache
|
||||||
* @param name hostname of all the sls detectors
|
* @param name hostname of all the sls detectors
|
||||||
*/
|
*/
|
||||||
void setHostname(const std::vector<std::string> &name);//cannot set individually
|
void setHostname(
|
||||||
|
const std::vector<std::string> &name); // cannot set individually
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the hostname of all sls detectors in shared memory
|
* Sets the hostname of all sls detectors in shared memory
|
||||||
@ -843,7 +852,8 @@ class multiSlsDetector : public virtual slsDetectorDefs {
|
|||||||
* adcphase for Gotthard, others for CTB & Moench)
|
* adcphase for Gotthard, others for CTB & Moench)
|
||||||
* @param value (clkdivider 0,1,2 for full, half and quarter speed). Other
|
* @param value (clkdivider 0,1,2 for full, half and quarter speed). Other
|
||||||
* values check manual
|
* values check manual
|
||||||
* @param mode 0 for shift, 1 for degrees. relevant only for speed type adcphase and dbit phase
|
* @param mode 0 for shift, 1 for degrees. relevant only for speed type
|
||||||
|
* adcphase and dbit phase
|
||||||
* @param detPos -1 for all detectors in list or specific detector position
|
* @param detPos -1 for all detectors in list or specific detector position
|
||||||
* @returns value of speed set
|
* @returns value of speed set
|
||||||
*/
|
*/
|
||||||
@ -1671,7 +1681,8 @@ class multiSlsDetector : public virtual slsDetectorDefs {
|
|||||||
* @param hostname name of pc to tftp from
|
* @param hostname name of pc to tftp from
|
||||||
* @param detPos -1 for all detectors in list or specific detector position
|
* @param detPos -1 for all detectors in list or specific detector position
|
||||||
*/
|
*/
|
||||||
void copyDetectorServer(const std::string &fname, const std::string &hostname, int detPos = -1);
|
void copyDetectorServer(const std::string &fname,
|
||||||
|
const std::string &hostname, int detPos = -1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reboot detector controller (Not Eiger)
|
* Reboot detector controller (Not Eiger)
|
||||||
@ -1687,7 +1698,8 @@ class multiSlsDetector : public virtual slsDetectorDefs {
|
|||||||
* @param fname programming file name
|
* @param fname programming file name
|
||||||
* @param detPos -1 for all detectors in list or specific detector position
|
* @param detPos -1 for all detectors in list or specific detector position
|
||||||
*/
|
*/
|
||||||
void update(const std::string &sname, const std::string &hostname, const std::string &fname, int detPos = -1);
|
void update(const std::string &sname, const std::string &hostname,
|
||||||
|
const std::string &fname, int detPos = -1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Power on/off Chip (Jungfrau)
|
* Power on/off Chip (Jungfrau)
|
||||||
@ -1861,18 +1873,12 @@ class multiSlsDetector : public virtual slsDetectorDefs {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get File index
|
* Get File index
|
||||||
* @param detPos -1 for all detectors in list or specific detector position
|
* @param detPos -1 for all detectors in list or specific detector
|
||||||
|
* position
|
||||||
* @returns file index
|
* @returns file index
|
||||||
*/
|
*/
|
||||||
int getFileIndex(int detPos = -1) const;
|
int getFileIndex(int detPos = -1) const;
|
||||||
|
|
||||||
/**
|
|
||||||
* increments file index
|
|
||||||
* @param detPos -1 for all detectors in list or specific detector position
|
|
||||||
* @returns the file index
|
|
||||||
*/
|
|
||||||
int incrementFileIndex(int detPos = -1);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Receiver starts listening to packets
|
* Receiver starts listening to packets
|
||||||
* @param detPos -1 for all detectors in list or specific detector position
|
* @param detPos -1 for all detectors in list or specific detector position
|
||||||
@ -1897,21 +1903,21 @@ class multiSlsDetector : public virtual slsDetectorDefs {
|
|||||||
* @param detPos -1 for all detectors in list or specific detector position
|
* @param detPos -1 for all detectors in list or specific detector position
|
||||||
* @returns number of frames caught by receiver
|
* @returns number of frames caught by receiver
|
||||||
*/
|
*/
|
||||||
int getFramesCaughtByReceiver(int detPos = -1);
|
int getFramesCaughtByReceiver(int detPos = -1); //
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the current frame index of receiver
|
* Gets the current frame index of receiver
|
||||||
* @param detPos -1 for all detectors in list or specific detector position
|
* @param detPos -1 for all detectors in list or specific detector position
|
||||||
* @returns average of all current frame index of receiver
|
* @returns average of all current frame index of receiver
|
||||||
*/
|
*/
|
||||||
uint64_t getReceiverCurrentFrameIndex(int detPos = -1);
|
uint64_t getReceiverCurrentFrameIndex(int detPos = -1); //
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Resets framescaught in receiver
|
* Resets framescaught in receiver
|
||||||
* Use this when using startAcquisition instead of acquire
|
* Use this when using startAcquisition instead of acquire
|
||||||
* @param detPos -1 for all detectors in list or specific detector position
|
* @param detPos -1 for all detectors in list or specific detector position
|
||||||
*/
|
*/
|
||||||
void resetFramesCaught(int detPos = -1);
|
void resetFramesCaught(int detPos = -1); //
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create Receiving Data Sockets
|
* Create Receiving Data Sockets
|
||||||
@ -1946,14 +1952,14 @@ class multiSlsDetector : public virtual slsDetectorDefs {
|
|||||||
* @param detPos -1 for all detectors in list or specific detector position
|
* @param detPos -1 for all detectors in list or specific detector position
|
||||||
* @returns master file write enable
|
* @returns master file write enable
|
||||||
*/
|
*/
|
||||||
int setMasterFileWrite(bool value, int detPos = -1);
|
int setMasterFileWrite(bool value, int detPos = -1); //
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets master file write enable
|
* Gets master file write enable
|
||||||
* @param detPos -1 for all detectors in list or specific detector position
|
* @param detPos -1 for all detectors in list or specific detector position
|
||||||
* @returns master file write enable
|
* @returns master file write enable
|
||||||
*/
|
*/
|
||||||
int getMasterFileWrite(int detPos = -1) const;
|
int getMasterFileWrite(int detPos = -1) const; //
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets/Gets file overwrite enable
|
* Sets/Gets file overwrite enable
|
||||||
@ -1989,7 +1995,7 @@ class multiSlsDetector : public virtual slsDetectorDefs {
|
|||||||
* @param detPos -1 for all detectors in list or specific detector position
|
* @param detPos -1 for all detectors in list or specific detector position
|
||||||
* @returns receiver streaming timer in ms
|
* @returns receiver streaming timer in ms
|
||||||
*/
|
*/
|
||||||
int setReceiverStreamingTimer(int time_in_ms = 500, int detPos = -1);
|
int setReceiverStreamingTimer(int time_in_ms = 500, int detPos = -1); //
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enable data streaming to client
|
* Enable data streaming to client
|
||||||
@ -2012,7 +2018,7 @@ class multiSlsDetector : public virtual slsDetectorDefs {
|
|||||||
* @param detPos -1 for all detectors in list or specific detector position
|
* @param detPos -1 for all detectors in list or specific detector position
|
||||||
* @returns if 10Gbe is enabled
|
* @returns if 10Gbe is enabled
|
||||||
*/
|
*/
|
||||||
int enableTenGigabitEthernet(int i = -1, int detPos = -1);
|
int enableTenGigabitEthernet(int i = -1, int detPos = -1); //
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set/get receiver fifo depth
|
* Set/get receiver fifo depth
|
||||||
@ -2020,7 +2026,7 @@ class multiSlsDetector : public virtual slsDetectorDefs {
|
|||||||
* @param detPos -1 for all detectors in list or specific detector position
|
* @param detPos -1 for all detectors in list or specific detector position
|
||||||
* @returns the receiver fifo depth
|
* @returns the receiver fifo depth
|
||||||
*/
|
*/
|
||||||
int setReceiverFifoDepth(int i = -1, int detPos = -1);
|
int setReceiverFifoDepth(int i = -1, int detPos = -1); //
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set/get receiver silent mode
|
* Set/get receiver silent mode
|
||||||
@ -2191,8 +2197,8 @@ class multiSlsDetector : public virtual slsDetectorDefs {
|
|||||||
* s is for subframe number for eiger for 32 bit mode
|
* s is for subframe number for eiger for 32 bit mode
|
||||||
* @param pArg argument
|
* @param pArg argument
|
||||||
*/
|
*/
|
||||||
void registerDataCallback(void (*userCallback)(detectorData *, uint64_t, uint32_t,
|
void registerDataCallback(void (*userCallback)(detectorData *, uint64_t,
|
||||||
void *),
|
uint32_t, void *),
|
||||||
void *pArg);
|
void *pArg);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -2210,8 +2216,13 @@ class multiSlsDetector : public virtual slsDetectorDefs {
|
|||||||
*/
|
*/
|
||||||
void processData();
|
void processData();
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
/**
|
||||||
|
* increments file index
|
||||||
|
* @param detPos -1 for all detectors in list or specific detector position
|
||||||
|
* @returns the file index
|
||||||
|
*/
|
||||||
|
int incrementFileIndex(int detPos = -1);
|
||||||
/**
|
/**
|
||||||
* Creates/open shared memory, initializes detector structure and members
|
* Creates/open shared memory, initializes detector structure and members
|
||||||
* Called by constructor/ set hostname / read config file
|
* Called by constructor/ set hostname / read config file
|
||||||
|
@ -171,7 +171,52 @@ Result<std::string> Detector::getDetectorTypeAsString(Positions pos) const {
|
|||||||
|
|
||||||
// Erik
|
// Erik
|
||||||
|
|
||||||
Result<bool> Detector::getReceiverSilentMode(Positions pos){
|
Result<int> Detector::getFramesCaughtByReceiver(Positions pos) const{
|
||||||
|
return pimpl->Parallel(&slsDetector::getFramesCaughtByReceiver, pos);
|
||||||
|
}
|
||||||
|
|
||||||
|
Result<uint64_t> Detector::getReceiverCurrentFrameIndex(Positions pos) const {
|
||||||
|
return pimpl->Parallel(&slsDetector::getReceiverCurrentFrameIndex, pos);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Detector::resetFramesCaught(Positions pos) {
|
||||||
|
pimpl->Parallel(&slsDetector::resetFramesCaught, pos);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Detector::setMasterFileWrite(bool value, Positions pos) {
|
||||||
|
pimpl->Parallel(&slsDetector::setMasterFileWrite, pos, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
Result<bool> Detector::getMasterFileWrite(Positions pos) const {
|
||||||
|
return pimpl->Parallel(&slsDetector::getMasterFileWrite, pos);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Detector::setReceiverStreamingTimer(int time_in_ms, Positions pos) {
|
||||||
|
pimpl->Parallel(&slsDetector::setReceiverStreamingTimer, pos, time_in_ms);
|
||||||
|
}
|
||||||
|
|
||||||
|
Result<int> Detector::getReceiverStreamingTimer(Positions pos) const {
|
||||||
|
return pimpl->Parallel(&slsDetector::setReceiverStreamingTimer, pos, -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Detector::setTenGigaEnabled(bool value, Positions pos) {
|
||||||
|
pimpl->Parallel(&slsDetector::enableTenGigabitEthernet, pos,
|
||||||
|
static_cast<int>(value));
|
||||||
|
}
|
||||||
|
|
||||||
|
Result<bool> Detector::getTenGigaEnabled(Positions pos) const {
|
||||||
|
return pimpl->Parallel(&slsDetector::enableTenGigabitEthernet, pos, -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
Result<int> Detector::getReceiverFifoDepth(Positions pos) const {
|
||||||
|
return pimpl->Parallel(&slsDetector::setReceiverFifoDepth, pos, -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Detector::setReceiverFifoDepth(int nframes, Positions pos) {
|
||||||
|
pimpl->Parallel(&slsDetector::setReceiverFifoDepth, pos, nframes);
|
||||||
|
}
|
||||||
|
|
||||||
|
Result<bool> Detector::getReceiverSilentMode(Positions pos) const {
|
||||||
return pimpl->Parallel(&slsDetector::setReceiverSilentMode, pos, -1);
|
return pimpl->Parallel(&slsDetector::setReceiverSilentMode, pos, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user