Readoutflags (#61)

* WIP

* eiger binary back wih versioning

* fixed readout flag in ctbgui, added speedLevel enum

* ctbgui: fixed a print out error

* ctb readout bug fix

* WIP

* WIP

* WIP
This commit is contained in:
Dhanya Thattil
2019-09-02 19:27:27 +02:00
committed by GitHub
parent 221bb65c0e
commit 5bcde789ac
39 changed files with 819 additions and 684 deletions

View File

@ -114,6 +114,9 @@ class CmdProxy {
{"period", &CmdProxy::Period},
{"subexptime", &CmdProxy::SubExptime},
{"frames", &CmdProxy::frames},
{"parallel", &CmdProxy::parallel},
{"overflow", &CmdProxy::overflow},
{"storeinram", &CmdProxy::storeinram},
{"fwrite", &CmdProxy::fwrite},
{"fmaster", &CmdProxy::fmaster},
{"foverwrite", &CmdProxy::foverwrite},
@ -144,7 +147,8 @@ class CmdProxy {
{"masterfile", "fmaster"},
{"outdir", "fpath"},
{"fileformat", "fformat"},
{"overwrite", "foverwrite"}};
{"overwrite", "foverwrite"},
{"flags", "readout"}};
void WrongNumberOfParameters(size_t expected);
@ -193,6 +197,15 @@ class CmdProxy {
INTEGER_COMMAND(findex, getAcquisitionIndex, setAcquisitionIndex, std::stoi,
"[0, 1]\n\tFile index");
INTEGER_COMMAND(parallel, getParallelMode, setParallelMode, std::stoi,
"[0, 1]\n\tEnable or disable parallel mode. [Eiger]");
INTEGER_COMMAND(overflow, getOverFlowMode, setOverFlowMode, std::stoi,
"[0, 1]\n\tEnable or disable show overflow flag in 32 bit mode. [Eiger]");
INTEGER_COMMAND(storeinram, getStoreInRamMode, setStoreInRamMode, std::stoi,
"[0, 1]\n\tEnable or disable store in ram mode. [Eiger]");
};
} // namespace sls

View File

@ -154,12 +154,11 @@ class Detector {
Result<ns> getDelayAfterTriggerLeft(Positions pos = {}) const;
/** [Eiger][Jungfrau] */
Result<int> getSpeed(Positions pos = {}) const;
Result<defs::speedLevel> getSpeed(Positions pos = {}) const;
/** [Eiger][Jungfrau] // TODO: create enum for speed
* Options: (0 full speed, 1 half speed, 2 quarter speed)
*/
void setSpeed(int value, Positions pos = {});
/** [Eiger][Jungfrau]
* Options: FULL_SPEED, HALF_SPEED, QUARTER_SPEED */
void setSpeed(defs::speedLevel value, Positions pos = {});
/** [Gotthard][Jungfrau][CTB] */
Result<int> getADCPhase(Positions pos = {}) const;
@ -636,6 +635,12 @@ class Detector {
/** [Eiger] */
void setOverFlowMode(bool value, Positions pos = {});
/** [Eiger] */
Result<bool> getStoreInRamMode(Positions pos = {}) const;
/** [Eiger] */
void setStoreInRamMode(bool value, Positions pos = {});
/** [Eiger] */
Result<bool> getBottom(Positions pos = {}) const;
@ -852,11 +857,10 @@ class Detector {
void setNumberOfDigitalSamples(int64_t value, Positions pos = {});
/** [CTB] */
Result<int> getReadoutMode(Positions pos = {}) const;
Result<defs::readoutMode> getReadoutMode(Positions pos = {}) const;
/** [CTB] Options: NORMAL_READOUT = 0, DIGITAL_ONLY = 1, ANALOG_AND_DIGITAL
* //TODO ANALOG_ONLY, make enum = 2 */
void setReadoutMode(int value, Positions pos = {});
/** [CTB] Options: ANALOG_ONLY = 0, DIGITAL_ONLY = 1, ANALOG_AND_DIGITAL */
void setReadoutMode(defs::readoutMode value, Positions pos = {});
/** [CTB] */
Result<int> getDBITPhase(Positions pos = {}) const;

View File

@ -778,14 +778,18 @@ class multiSlsDetector : public virtual slsDetectorDefs {
int detPos = -1); //
/**
* Set/get readout flags (Eiger, Mythen)
* @param flag readout flag (Eiger options: parallel, nonparallel, safe
* etc.) (-1 gets)
* Set readout mode (Only for CTB and Moench)
* @param mode readout mode Options: ANALOG_ONLY, DIGITAL_ONLY, ANALOG_AND_DIGITAL
* @param detPos -1 for all detectors in list or specific detector position
* @returns readout flag
*/
int setReadOutFlags(readOutFlags flag = GET_READOUT_FLAGS,
int detPos = -1); //
void setReadoutMode(const readoutMode mode, int detPos = -1);
/**
* Get readout mode(Only for CTB and Moench)
* @param detPos -1 for all detectors in list or specific detector position
* @returns readout mode
*/
readoutMode getReadoutMode(int detPos = -1);
/**
* Set Interrupt last sub frame (Only for Eiger)

View File

@ -68,8 +68,8 @@ struct sharedSlsDetector {
/** adc enable mask */
uint32_t adcEnableMask;
/** readout flags */
slsDetectorDefs::readOutFlags roFlags;
/** readout mode */
slsDetectorDefs::readoutMode roMode;
/** detector settings (standard, fast, etc.) */
slsDetectorDefs::detectorSettings currentSettings;
@ -629,12 +629,52 @@ class slsDetector : public virtual slsDetectorDefs {
setExternalSignalFlags(externalSignalFlag pol = GET_EXTERNAL_SIGNAL_FLAG);
/**
* Set/get readout flags (Eiger, Mythen)
* @param flag readout flag (Eiger options: parallel, nonparallel, safe
* etc.) (-1 gets)
* @returns readout flag
* Set Parallel readout mode (Only for Eiger)
* @param enable true if parallel, else false for non parallel
*/
int setReadOutFlags(readOutFlags flag = GET_READOUT_FLAGS);
void setParallelMode(const bool enable);
/**
* Get parallel mode (Only for Eiger)
* @returns parallel mode
*/
bool getParallelMode();
/**
* Set overflow readout mode in 32 bit mode (Only for Eiger)
* @param enable true if overflow, else false
*/
void setOverFlowMode(const bool enable);
/**
* Get overflow mode in 32 bit mode (Only for Eiger)
* @returns overflow mode
*/
bool getOverFlowMode();
/**
* Set store in ram readout mode (Only for Eiger)
* @param enable true if store in ram, else false
*/
void setStoreInRamMode(const bool enable);
/**
* Get store in ram mode (Only for Eiger)
* @returns store in ram mode
*/
bool getStoreInRamMode();
/**
* Set readout mode (Only for CTB and Moench)
* @param mode readout mode Options: ANALOG_ONLY, DIGITAL_ONLY, ANALOG_AND_DIGITAL
*/
void setReadoutMode(const readoutMode mode);
/**
* Get readout mode(Only for CTB and Moench)
* @returns readout mode
*/
readoutMode getReadoutMode();
/**
* Set Interrupt last sub frame (Only for Eiger)

View File

@ -398,22 +398,20 @@ public:
/**
* Set parallel readout mode (Eiger)
* @param value readout mode (-1 gets)
* Options: slsDetectorDefs::readOutFlags
* (PARALLEL, NONPARALLEL (Default), SAFE)
* false for NonParallel (Default), true for Parallel
* @param detPos -1 for all detectors in list or specific detector position
* @returns mode register,
* result must be ANDED with PARALLEL/NONPARALLEL/SAFE to get mode
* @returns 1 for parallel, 0 for non parallel, -1 if different
*/
int setParallelMode(int value, int detPos = -1);
int setParallelMode(bool value, int detPos = -1);
/**
* Set overflow readout mode (Eiger in 32 bit)
* @param value readout mode (-1 gets)
* Options: 1(SHOW_OVERFLOW), 0(NOOVERFLOW) (Default)
* Options: true to Show overflow, false to not show overflow
* @param detPos -1 for all detectors in list or specific detector position
* @returns 1 if overflow mode else 0
* @returns 1 for overflow, 0 for no overflow, -1 if different
*/
int setOverflowMode(int value, int detPos = -1);
int setOverflowMode(bool value, int detPos = -1);
/**
* (Advanced user)