mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-29 01:20:02 +02:00
Merge branch 'developer' into j1.1fix
This commit is contained in:
commit
8aa7ced83e
@ -160,6 +160,10 @@ This document describes the differences between 6.0.0 and 5.2.0 releases.
|
|||||||
Command line: datastream, API: getDataStream/ setDataStream
|
Command line: datastream, API: getDataStream/ setDataStream
|
||||||
Enable or disable each port. Default: enabled
|
Enable or disable each port. Default: enabled
|
||||||
|
|
||||||
|
25. Changing TCP ports
|
||||||
|
This will only affect shared memory and will not try to change the
|
||||||
|
current tcp port of the control/stop server in detector.
|
||||||
|
|
||||||
Detector servers
|
Detector servers
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
@ -184,6 +188,11 @@ This document describes the differences between 6.0.0 and 5.2.0 releases.
|
|||||||
Frames caught by the master receiver is added to master file metadata.
|
Frames caught by the master receiver is added to master file metadata.
|
||||||
Hdf5 and Binary version numbers changed to 6.3
|
Hdf5 and Binary version numbers changed to 6.3
|
||||||
|
|
||||||
|
2. Removed Padding option for Deactivated half modules.
|
||||||
|
|
||||||
|
3. Changing Receiver TCP ports
|
||||||
|
This will only affect shared memory and will not try to change the
|
||||||
|
current tcp port of the receiver.
|
||||||
|
|
||||||
Gui
|
Gui
|
||||||
----
|
----
|
||||||
|
@ -6,6 +6,7 @@ pybind11_add_module(_slsdet
|
|||||||
src/network.cpp
|
src/network.cpp
|
||||||
src/pattern.cpp
|
src/pattern.cpp
|
||||||
src/scan.cpp
|
src/scan.cpp
|
||||||
|
src/current.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
target_link_libraries(_slsdet PUBLIC
|
target_link_libraries(_slsdet PUBLIC
|
||||||
|
11
python/examples/use_currentsource.py
Normal file
11
python/examples/use_currentsource.py
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
from slsdet import Detector, currentSrcParameters
|
||||||
|
|
||||||
|
s = currentSrcParameters()
|
||||||
|
s.enable_ = 1
|
||||||
|
s.fix_= 1
|
||||||
|
s.normal_ = 1
|
||||||
|
s.select_ = 10
|
||||||
|
|
||||||
|
|
||||||
|
d = Detector()
|
||||||
|
d.currentsource = s
|
@ -15,5 +15,7 @@ sp.dacSettleTime_ns = int(1e9)
|
|||||||
d = Mythen3()
|
d = Mythen3()
|
||||||
d.setScan(sp)
|
d.setScan(sp)
|
||||||
|
|
||||||
|
#or d.scan = sp
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -20,4 +20,5 @@ from .enums import *
|
|||||||
|
|
||||||
IpAddr = _slsdet.IpAddr
|
IpAddr = _slsdet.IpAddr
|
||||||
MacAddr = _slsdet.MacAddr
|
MacAddr = _slsdet.MacAddr
|
||||||
scanParameters = _slsdet.scanParameters
|
scanParameters = _slsdet.scanParameters
|
||||||
|
currentSrcParameters = _slsdet.currentSrcParameters
|
@ -362,6 +362,21 @@ class Detector(CppDetectorApi):
|
|||||||
"""
|
"""
|
||||||
return self.getNumberOfFramesFromStart()
|
return self.getNumberOfFramesFromStart()
|
||||||
|
|
||||||
|
|
||||||
|
@property
|
||||||
|
@element
|
||||||
|
def scan(self):
|
||||||
|
"""
|
||||||
|
Pass in a scanParameters object
|
||||||
|
see python/examples/use_scan.py
|
||||||
|
|
||||||
|
"""
|
||||||
|
return self.getScan()
|
||||||
|
|
||||||
|
@scan.setter
|
||||||
|
def scan(self, s):
|
||||||
|
ut.set_using_dict(self.setScan, s)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@element
|
@element
|
||||||
def powerchip(self):
|
def powerchip(self):
|
||||||
@ -1991,7 +2006,7 @@ class Detector(CppDetectorApi):
|
|||||||
return ut.reduce_time(self.getMeasuredSubFramePeriod())
|
return ut.reduce_time(self.getMeasuredSubFramePeriod())
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Jungfrau specific
|
------------------<<<Jungfrau specific>>>-------------------------
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@ -2212,6 +2227,20 @@ class Detector(CppDetectorApi):
|
|||||||
def gainmode(self, value):
|
def gainmode(self, value):
|
||||||
self.setGainMode(value)
|
self.setGainMode(value)
|
||||||
|
|
||||||
|
@property
|
||||||
|
@element
|
||||||
|
def currentsource(self):
|
||||||
|
"""
|
||||||
|
Pass in a currentSrcParameters object
|
||||||
|
see python/examples/use_currentsource.py
|
||||||
|
|
||||||
|
"""
|
||||||
|
return self.getCurrentSource()
|
||||||
|
|
||||||
|
@currentsource.setter
|
||||||
|
def currentsource(self, cs):
|
||||||
|
ut.set_using_dict(self.setCurrentSource, cs)
|
||||||
|
|
||||||
"""
|
"""
|
||||||
---------------------------<<<Gotthard2 specific>>>---------------------------
|
---------------------------<<<Gotthard2 specific>>>---------------------------
|
||||||
"""
|
"""
|
||||||
|
26
python/src/current.cpp
Normal file
26
python/src/current.cpp
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
#include <pybind11/chrono.h>
|
||||||
|
#include <pybind11/numpy.h>
|
||||||
|
#include <pybind11/operators.h>
|
||||||
|
#include <pybind11/pybind11.h>
|
||||||
|
#include <pybind11/stl.h>
|
||||||
|
|
||||||
|
// #include "sls/Pattern.h"
|
||||||
|
#include "sls/ToString.h"
|
||||||
|
#include "sls/sls_detector_defs.h"
|
||||||
|
|
||||||
|
namespace py = pybind11;
|
||||||
|
void init_source(py::module &m) {
|
||||||
|
|
||||||
|
using src = slsDetectorDefs::currentSrcParameters;
|
||||||
|
py::class_<src> currentSrcParameters(m, "currentSrcParameters");
|
||||||
|
|
||||||
|
currentSrcParameters.def(py::init());
|
||||||
|
currentSrcParameters.def_readwrite("enable_", &src::enable_);
|
||||||
|
currentSrcParameters.def_readwrite("fix_", &src::fix_);
|
||||||
|
currentSrcParameters.def_readwrite("normal_", &src::normal_);
|
||||||
|
currentSrcParameters.def_readwrite("select_", &src::select_);
|
||||||
|
currentSrcParameters.def(pybind11::self == pybind11::self);
|
||||||
|
|
||||||
|
currentSrcParameters.def("__repr__",
|
||||||
|
[](const src &a) { return sls::ToString(a); });
|
||||||
|
}
|
@ -160,6 +160,13 @@ void init_det(py::module &m) {
|
|||||||
(void (Detector::*)(const bool)) &
|
(void (Detector::*)(const bool)) &
|
||||||
Detector::setGapPixelsinCallback,
|
Detector::setGapPixelsinCallback,
|
||||||
py::arg())
|
py::arg())
|
||||||
|
.def("getFlipRows",
|
||||||
|
(Result<bool>(Detector::*)(sls::Positions) const) &
|
||||||
|
Detector::getFlipRows,
|
||||||
|
py::arg() = Positions{})
|
||||||
|
.def("setFlipRows",
|
||||||
|
(void (Detector::*)(bool, sls::Positions)) & Detector::setFlipRows,
|
||||||
|
py::arg(), py::arg() = Positions{})
|
||||||
.def("isVirtualDetectorServer",
|
.def("isVirtualDetectorServer",
|
||||||
(Result<bool>(Detector::*)(sls::Positions) const) &
|
(Result<bool>(Detector::*)(sls::Positions) const) &
|
||||||
Detector::isVirtualDetectorServer,
|
Detector::isVirtualDetectorServer,
|
||||||
@ -416,6 +423,39 @@ void init_det(py::module &m) {
|
|||||||
(void (Detector::*)(bool, sls::Positions)) &
|
(void (Detector::*)(bool, sls::Positions)) &
|
||||||
Detector::setParallelMode,
|
Detector::setParallelMode,
|
||||||
py::arg(), py::arg() = Positions{})
|
py::arg(), py::arg() = Positions{})
|
||||||
|
.def("getFilterResistor",
|
||||||
|
(Result<int>(Detector::*)(sls::Positions) const) &
|
||||||
|
Detector::getFilterResistor,
|
||||||
|
py::arg() = Positions{})
|
||||||
|
.def("setFilterResistor",
|
||||||
|
(void (Detector::*)(int, sls::Positions)) &
|
||||||
|
Detector::setFilterResistor,
|
||||||
|
py::arg(), py::arg() = Positions{})
|
||||||
|
.def("getCurrentSource",
|
||||||
|
(Result<defs::currentSrcParameters>(Detector::*)(sls::Positions)
|
||||||
|
const) &
|
||||||
|
Detector::getCurrentSource,
|
||||||
|
py::arg() = Positions{})
|
||||||
|
.def("setCurrentSource",
|
||||||
|
(void (Detector::*)(defs::currentSrcParameters, sls::Positions)) &
|
||||||
|
Detector::setCurrentSource,
|
||||||
|
py::arg(), py::arg() = Positions{})
|
||||||
|
.def("getDBITPipeline",
|
||||||
|
(Result<int>(Detector::*)(sls::Positions) const) &
|
||||||
|
Detector::getDBITPipeline,
|
||||||
|
py::arg() = Positions{})
|
||||||
|
.def("setDBITPipeline",
|
||||||
|
(void (Detector::*)(int, sls::Positions)) &
|
||||||
|
Detector::setDBITPipeline,
|
||||||
|
py::arg(), py::arg() = Positions{})
|
||||||
|
.def("getReadNRows",
|
||||||
|
(Result<int>(Detector::*)(sls::Positions) const) &
|
||||||
|
Detector::getReadNRows,
|
||||||
|
py::arg() = Positions{})
|
||||||
|
.def("setReadNRows",
|
||||||
|
(void (Detector::*)(const int, sls::Positions)) &
|
||||||
|
Detector::setReadNRows,
|
||||||
|
py::arg(), py::arg() = Positions{})
|
||||||
.def("acquire", (void (Detector::*)()) & Detector::acquire)
|
.def("acquire", (void (Detector::*)()) & Detector::acquire)
|
||||||
.def("clearAcquiringFlag",
|
.def("clearAcquiringFlag",
|
||||||
(void (Detector::*)()) & Detector::clearAcquiringFlag)
|
(void (Detector::*)()) & Detector::clearAcquiringFlag)
|
||||||
@ -516,6 +556,31 @@ void init_det(py::module &m) {
|
|||||||
(void (Detector::*)(const sls::MacAddr, sls::Positions)) &
|
(void (Detector::*)(const sls::MacAddr, sls::Positions)) &
|
||||||
Detector::setSourceUDPMAC2,
|
Detector::setSourceUDPMAC2,
|
||||||
py::arg(), py::arg() = Positions{})
|
py::arg(), py::arg() = Positions{})
|
||||||
|
.def("getDestinationUDPList",
|
||||||
|
(Result<sls::UdpDestination>(Detector::*)(const uint32_t,
|
||||||
|
sls::Positions) const) &
|
||||||
|
Detector::getDestinationUDPList,
|
||||||
|
py::arg(), py::arg() = Positions{})
|
||||||
|
.def("setDestinationUDPList",
|
||||||
|
(void (Detector::*)(const sls::UdpDestination, const int)) &
|
||||||
|
Detector::setDestinationUDPList,
|
||||||
|
py::arg(), py::arg())
|
||||||
|
.def("getNumberofUDPDestinations",
|
||||||
|
(Result<int>(Detector::*)(sls::Positions) const) &
|
||||||
|
Detector::getNumberofUDPDestinations,
|
||||||
|
py::arg() = Positions{})
|
||||||
|
.def("clearUDPDestinations",
|
||||||
|
(void (Detector::*)(sls::Positions)) &
|
||||||
|
Detector::clearUDPDestinations,
|
||||||
|
py::arg() = Positions{})
|
||||||
|
.def("getFirstUDPDestination",
|
||||||
|
(Result<int>(Detector::*)(sls::Positions) const) &
|
||||||
|
Detector::getFirstUDPDestination,
|
||||||
|
py::arg() = Positions{})
|
||||||
|
.def("setFirstUDPDestination",
|
||||||
|
(void (Detector::*)(const int, sls::Positions)) &
|
||||||
|
Detector::setFirstUDPDestination,
|
||||||
|
py::arg(), py::arg() = Positions{})
|
||||||
.def("getDestinationUDPIP",
|
.def("getDestinationUDPIP",
|
||||||
(Result<sls::IpAddr>(Detector::*)(sls::Positions) const) &
|
(Result<sls::IpAddr>(Detector::*)(sls::Positions) const) &
|
||||||
Detector::getDestinationUDPIP,
|
Detector::getDestinationUDPIP,
|
||||||
@ -852,13 +917,6 @@ void init_det(py::module &m) {
|
|||||||
(void (Detector::*)(bool, sls::Positions)) &
|
(void (Detector::*)(bool, sls::Positions)) &
|
||||||
Detector::setOverFlowMode,
|
Detector::setOverFlowMode,
|
||||||
py::arg(), py::arg() = Positions{})
|
py::arg(), py::arg() = Positions{})
|
||||||
.def("getFlipRows",
|
|
||||||
(Result<bool>(Detector::*)(sls::Positions) const) &
|
|
||||||
Detector::getFlipRows,
|
|
||||||
py::arg() = Positions{})
|
|
||||||
.def("setFlipRows",
|
|
||||||
(void (Detector::*)(bool, sls::Positions)) & Detector::setFlipRows,
|
|
||||||
py::arg(), py::arg() = Positions{})
|
|
||||||
.def("getRateCorrection",
|
.def("getRateCorrection",
|
||||||
(Result<sls::ns>(Detector::*)(sls::Positions) const) &
|
(Result<sls::ns>(Detector::*)(sls::Positions) const) &
|
||||||
Detector::getRateCorrection,
|
Detector::getRateCorrection,
|
||||||
@ -871,14 +929,6 @@ void init_det(py::module &m) {
|
|||||||
(void (Detector::*)(sls::ns, sls::Positions)) &
|
(void (Detector::*)(sls::ns, sls::Positions)) &
|
||||||
Detector::setRateCorrection,
|
Detector::setRateCorrection,
|
||||||
py::arg(), py::arg() = Positions{})
|
py::arg(), py::arg() = Positions{})
|
||||||
.def("getReadNRows",
|
|
||||||
(Result<int>(Detector::*)(sls::Positions) const) &
|
|
||||||
Detector::getReadNRows,
|
|
||||||
py::arg() = Positions{})
|
|
||||||
.def("setReadNRows",
|
|
||||||
(void (Detector::*)(const int, sls::Positions)) &
|
|
||||||
Detector::setReadNRows,
|
|
||||||
py::arg(), py::arg() = Positions{})
|
|
||||||
.def("getInterruptSubframe",
|
.def("getInterruptSubframe",
|
||||||
(Result<bool>(Detector::*)(sls::Positions) const) &
|
(Result<bool>(Detector::*)(sls::Positions) const) &
|
||||||
Detector::getInterruptSubframe,
|
Detector::getInterruptSubframe,
|
||||||
@ -903,14 +953,6 @@ void init_det(py::module &m) {
|
|||||||
(void (Detector::*)(const bool, sls::Positions)) &
|
(void (Detector::*)(const bool, sls::Positions)) &
|
||||||
Detector::setActive,
|
Detector::setActive,
|
||||||
py::arg(), py::arg() = Positions{})
|
py::arg(), py::arg() = Positions{})
|
||||||
.def("getRxPadDeactivatedMode",
|
|
||||||
(Result<bool>(Detector::*)(sls::Positions) const) &
|
|
||||||
Detector::getRxPadDeactivatedMode,
|
|
||||||
py::arg() = Positions{})
|
|
||||||
.def("setRxPadDeactivatedMode",
|
|
||||||
(void (Detector::*)(bool, sls::Positions)) &
|
|
||||||
Detector::setRxPadDeactivatedMode,
|
|
||||||
py::arg(), py::arg() = Positions{})
|
|
||||||
.def("getPartialReset",
|
.def("getPartialReset",
|
||||||
(Result<bool>(Detector::*)(sls::Positions) const) &
|
(Result<bool>(Detector::*)(sls::Positions) const) &
|
||||||
Detector::getPartialReset,
|
Detector::getPartialReset,
|
||||||
@ -1022,9 +1064,17 @@ void init_det(py::module &m) {
|
|||||||
Detector::getGainMode,
|
Detector::getGainMode,
|
||||||
py::arg() = Positions{})
|
py::arg() = Positions{})
|
||||||
.def("setGainMode",
|
.def("setGainMode",
|
||||||
(void (Detector::*)(defs::gainMode, sls::Positions)) &
|
(void (Detector::*)(const defs::gainMode, sls::Positions)) &
|
||||||
Detector::setGainMode,
|
Detector::setGainMode,
|
||||||
py::arg(), py::arg() = Positions{})
|
py::arg(), py::arg() = Positions{})
|
||||||
|
.def("getFilterCell",
|
||||||
|
(Result<int>(Detector::*)(sls::Positions) const) &
|
||||||
|
Detector::getFilterCell,
|
||||||
|
py::arg() = Positions{})
|
||||||
|
.def("setFilterCell",
|
||||||
|
(void (Detector::*)(int, sls::Positions)) &
|
||||||
|
Detector::setFilterCell,
|
||||||
|
py::arg(), py::arg() = Positions{})
|
||||||
.def("getROI",
|
.def("getROI",
|
||||||
(Result<defs::ROI>(Detector::*)(sls::Positions) const) &
|
(Result<defs::ROI>(Detector::*)(sls::Positions) const) &
|
||||||
Detector::getROI,
|
Detector::getROI,
|
||||||
@ -1100,30 +1150,6 @@ void init_det(py::module &m) {
|
|||||||
.def("setCDSGain",
|
.def("setCDSGain",
|
||||||
(void (Detector::*)(bool, sls::Positions)) & Detector::setCDSGain,
|
(void (Detector::*)(bool, sls::Positions)) & Detector::setCDSGain,
|
||||||
py::arg(), py::arg() = Positions{})
|
py::arg(), py::arg() = Positions{})
|
||||||
.def("getFilterResistor",
|
|
||||||
(Result<int>(Detector::*)(sls::Positions) const) &
|
|
||||||
Detector::getFilterResistor,
|
|
||||||
py::arg() = Positions{})
|
|
||||||
.def("setFilterResistor",
|
|
||||||
(void (Detector::*)(int, sls::Positions)) &
|
|
||||||
Detector::setFilterResistor,
|
|
||||||
py::arg(), py::arg() = Positions{})
|
|
||||||
.def("getFilterCell",
|
|
||||||
(Result<int>(Detector::*)(sls::Positions) const) &
|
|
||||||
Detector::getFilterCell,
|
|
||||||
py::arg() = Positions{})
|
|
||||||
.def("setFilterCell",
|
|
||||||
(void (Detector::*)(int, sls::Positions)) &
|
|
||||||
Detector::setFilterCell,
|
|
||||||
py::arg(), py::arg() = Positions{})
|
|
||||||
.def("getCurrentSource",
|
|
||||||
(Result<bool>(Detector::*)(sls::Positions) const) &
|
|
||||||
Detector::getCurrentSource,
|
|
||||||
py::arg() = Positions{})
|
|
||||||
.def("setCurrentSource",
|
|
||||||
(void (Detector::*)(bool, sls::Positions)) &
|
|
||||||
Detector::setCurrentSource,
|
|
||||||
py::arg(), py::arg() = Positions{})
|
|
||||||
.def("getTimingSource",
|
.def("getTimingSource",
|
||||||
(Result<defs::timingSourceType>(Detector::*)(sls::Positions)
|
(Result<defs::timingSourceType>(Detector::*)(sls::Positions)
|
||||||
const) &
|
const) &
|
||||||
@ -1315,14 +1341,6 @@ void init_det(py::module &m) {
|
|||||||
.def("setDBITClock",
|
.def("setDBITClock",
|
||||||
(void (Detector::*)(int, sls::Positions)) & Detector::setDBITClock,
|
(void (Detector::*)(int, sls::Positions)) & Detector::setDBITClock,
|
||||||
py::arg(), py::arg() = Positions{})
|
py::arg(), py::arg() = Positions{})
|
||||||
.def("getDBITPipeline",
|
|
||||||
(Result<int>(Detector::*)(sls::Positions) const) &
|
|
||||||
Detector::getDBITPipeline,
|
|
||||||
py::arg() = Positions{})
|
|
||||||
.def("setDBITPipeline",
|
|
||||||
(void (Detector::*)(int, sls::Positions)) &
|
|
||||||
Detector::setDBITPipeline,
|
|
||||||
py::arg(), py::arg() = Positions{})
|
|
||||||
.def("getMeasuredVoltage",
|
.def("getMeasuredVoltage",
|
||||||
(Result<int>(Detector::*)(defs::dacIndex, sls::Positions) const) &
|
(Result<int>(Detector::*)(defs::dacIndex, sls::Positions) const) &
|
||||||
Detector::getMeasuredVoltage,
|
Detector::getMeasuredVoltage,
|
||||||
|
@ -21,6 +21,7 @@ void init_det(py::module &);
|
|||||||
void init_network(py::module &);
|
void init_network(py::module &);
|
||||||
void init_pattern(py::module &);
|
void init_pattern(py::module &);
|
||||||
void init_scan(py::module &);
|
void init_scan(py::module &);
|
||||||
|
void init_source(py::module &);
|
||||||
PYBIND11_MODULE(_slsdet, m) {
|
PYBIND11_MODULE(_slsdet, m) {
|
||||||
m.doc() = R"pbdoc(
|
m.doc() = R"pbdoc(
|
||||||
C/C++ API
|
C/C++ API
|
||||||
@ -37,6 +38,7 @@ PYBIND11_MODULE(_slsdet, m) {
|
|||||||
init_network(m);
|
init_network(m);
|
||||||
init_pattern(m);
|
init_pattern(m);
|
||||||
init_scan(m);
|
init_scan(m);
|
||||||
|
init_source(m);
|
||||||
// init_experimental(m);
|
// init_experimental(m);
|
||||||
|
|
||||||
|
|
||||||
|
@ -87,7 +87,6 @@ int set_roi(int);
|
|||||||
int get_roi(int);
|
int get_roi(int);
|
||||||
int lock_server(int);
|
int lock_server(int);
|
||||||
int get_last_client_ip(int);
|
int get_last_client_ip(int);
|
||||||
int set_port(int);
|
|
||||||
int calibrate_pedestal(int);
|
int calibrate_pedestal(int);
|
||||||
int enable_ten_giga(int);
|
int enable_ten_giga(int);
|
||||||
int validateAndSetAllTrimbits(int arg);
|
int validateAndSetAllTrimbits(int arg);
|
||||||
|
@ -230,7 +230,6 @@ void function_table() {
|
|||||||
flist[F_GET_ROI] = &get_roi;
|
flist[F_GET_ROI] = &get_roi;
|
||||||
flist[F_LOCK_SERVER] = &lock_server;
|
flist[F_LOCK_SERVER] = &lock_server;
|
||||||
flist[F_GET_LAST_CLIENT_IP] = &get_last_client_ip;
|
flist[F_GET_LAST_CLIENT_IP] = &get_last_client_ip;
|
||||||
flist[F_SET_PORT] = &set_port;
|
|
||||||
flist[F_ENABLE_TEN_GIGA] = &enable_ten_giga;
|
flist[F_ENABLE_TEN_GIGA] = &enable_ten_giga;
|
||||||
flist[F_SET_ALL_TRIMBITS] = &set_all_trimbits;
|
flist[F_SET_ALL_TRIMBITS] = &set_all_trimbits;
|
||||||
flist[F_SET_PATTERN_IO_CONTROL] = &set_pattern_io_control;
|
flist[F_SET_PATTERN_IO_CONTROL] = &set_pattern_io_control;
|
||||||
@ -2880,43 +2879,6 @@ int get_last_client_ip(int file_des) {
|
|||||||
return Server_SendResult(file_des, INT32, &retval, sizeof(retval));
|
return Server_SendResult(file_des, INT32, &retval, sizeof(retval));
|
||||||
}
|
}
|
||||||
|
|
||||||
int set_port(int file_des) {
|
|
||||||
ret = OK;
|
|
||||||
memset(mess, 0, sizeof(mess));
|
|
||||||
int p_number = -1;
|
|
||||||
uint32_t oldLastClientIP = 0;
|
|
||||||
|
|
||||||
if (receiveData(file_des, &p_number, sizeof(p_number), INT32) < 0)
|
|
||||||
return printSocketReadError();
|
|
||||||
|
|
||||||
// set only
|
|
||||||
int sd = -1;
|
|
||||||
if ((Server_VerifyLock() == OK)) {
|
|
||||||
// port number too low
|
|
||||||
if (p_number < 1024) {
|
|
||||||
ret = FAIL;
|
|
||||||
sprintf(mess, "%s port Number (%d) too low\n",
|
|
||||||
(isControlServer ? "control" : "stop"), p_number);
|
|
||||||
LOG(logERROR, (mess));
|
|
||||||
} else {
|
|
||||||
LOG(logINFO, ("Setting %s port to %d\n",
|
|
||||||
(isControlServer ? "control" : "stop"), p_number));
|
|
||||||
oldLastClientIP = lastClientIP;
|
|
||||||
sd = bindSocket(p_number);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Server_SendResult(file_des, INT32, &p_number, sizeof(p_number));
|
|
||||||
// delete old socket
|
|
||||||
if (ret != FAIL) {
|
|
||||||
closeConnection(file_des);
|
|
||||||
exitServer(sockfd);
|
|
||||||
sockfd = sd;
|
|
||||||
lastClientIP = oldLastClientIP;
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
int enable_ten_giga(int file_des) {
|
int enable_ten_giga(int file_des) {
|
||||||
ret = OK;
|
ret = OK;
|
||||||
memset(mess, 0, sizeof(mess));
|
memset(mess, 0, sizeof(mess));
|
||||||
|
@ -1091,12 +1091,6 @@ class Detector {
|
|||||||
* send data or communicated with FEB or BEB */
|
* send data or communicated with FEB or BEB */
|
||||||
void setActive(const bool active, Positions pos = {});
|
void setActive(const bool active, Positions pos = {});
|
||||||
|
|
||||||
/** [Eiger] */
|
|
||||||
Result<bool> getRxPadDeactivatedMode(Positions pos = {}) const;
|
|
||||||
|
|
||||||
/** [Eiger] Pad deactivated modules in receiver. Enabled by default */
|
|
||||||
void setRxPadDeactivatedMode(bool pad, Positions pos = {});
|
|
||||||
|
|
||||||
/** [Eiger] Advanced */
|
/** [Eiger] Advanced */
|
||||||
Result<bool> getPartialReset(Positions pos = {}) const;
|
Result<bool> getPartialReset(Positions pos = {}) const;
|
||||||
|
|
||||||
|
@ -1669,50 +1669,6 @@ std::string CmdProxy::RateCorrection(int action) {
|
|||||||
return os.str();
|
return os.str();
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string CmdProxy::Activate(int action) {
|
|
||||||
std::ostringstream os;
|
|
||||||
os << cmd << ' ';
|
|
||||||
if (action == defs::HELP_ACTION) {
|
|
||||||
os << "[0, 1] [(optional) padding|nopadding]\n\t[Eiger] 1 is default. "
|
|
||||||
"0 deactivates readout and does not send data. \n\tPadding will "
|
|
||||||
"pad data files for deactivates readouts."
|
|
||||||
<< '\n';
|
|
||||||
} else if (action == defs::GET_ACTION) {
|
|
||||||
if (!args.empty()) {
|
|
||||||
WrongNumberOfParameters(0);
|
|
||||||
}
|
|
||||||
auto t = det->getActive(std::vector<int>{det_id});
|
|
||||||
auto p = det->getRxPadDeactivatedMode(std::vector<int>{det_id});
|
|
||||||
Result<std::string> pResult(p.size());
|
|
||||||
for (unsigned int i = 0; i < p.size(); ++i) {
|
|
||||||
pResult[i] = p[i] ? "padding" : "nopadding";
|
|
||||||
}
|
|
||||||
os << OutString(t) << ' ' << OutString(pResult) << '\n';
|
|
||||||
} else if (action == defs::PUT_ACTION) {
|
|
||||||
if (args.empty() || args.size() > 2) {
|
|
||||||
WrongNumberOfParameters(2);
|
|
||||||
}
|
|
||||||
int t = StringTo<int>(args[0]);
|
|
||||||
det->setActive(t, std::vector<int>{det_id});
|
|
||||||
os << args[0];
|
|
||||||
if (args.size() == 2) {
|
|
||||||
bool p = true;
|
|
||||||
if (args[1] == "nopadding") {
|
|
||||||
p = false;
|
|
||||||
} else if (args[1] != "padding") {
|
|
||||||
throw sls::RuntimeError(
|
|
||||||
"Unknown argument for deactivated padding.");
|
|
||||||
}
|
|
||||||
det->setRxPadDeactivatedMode(p, std::vector<int>{det_id});
|
|
||||||
os << ' ' << args[1];
|
|
||||||
}
|
|
||||||
os << '\n';
|
|
||||||
} else {
|
|
||||||
throw sls::RuntimeError("Unknown action");
|
|
||||||
}
|
|
||||||
return os.str();
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string CmdProxy::PulsePixel(int action) {
|
std::string CmdProxy::PulsePixel(int action) {
|
||||||
std::ostringstream os;
|
std::ostringstream os;
|
||||||
os << cmd << ' ';
|
os << cmd << ' ';
|
||||||
|
@ -925,7 +925,7 @@ class CmdProxy {
|
|||||||
{"interruptsubframe", &CmdProxy::interruptsubframe},
|
{"interruptsubframe", &CmdProxy::interruptsubframe},
|
||||||
{"measuredperiod", &CmdProxy::measuredperiod},
|
{"measuredperiod", &CmdProxy::measuredperiod},
|
||||||
{"measuredsubperiod", &CmdProxy::measuredsubperiod},
|
{"measuredsubperiod", &CmdProxy::measuredsubperiod},
|
||||||
{"activate", &CmdProxy::Activate},
|
{"activate", &CmdProxy::activate},
|
||||||
{"partialreset", &CmdProxy::partialreset},
|
{"partialreset", &CmdProxy::partialreset},
|
||||||
{"pulse", &CmdProxy::PulsePixel},
|
{"pulse", &CmdProxy::PulsePixel},
|
||||||
{"pulsenmove", &CmdProxy::PulsePixelAndMove},
|
{"pulsenmove", &CmdProxy::PulsePixelAndMove},
|
||||||
@ -1131,7 +1131,6 @@ class CmdProxy {
|
|||||||
std::string ZMQHWM(int action);
|
std::string ZMQHWM(int action);
|
||||||
/* Eiger Specific */
|
/* Eiger Specific */
|
||||||
std::string RateCorrection(int action);
|
std::string RateCorrection(int action);
|
||||||
std::string Activate(int action);
|
|
||||||
std::string PulsePixel(int action);
|
std::string PulsePixel(int action);
|
||||||
std::string PulsePixelAndMove(int action);
|
std::string PulsePixelAndMove(int action);
|
||||||
std::string PulseChip(int action);
|
std::string PulseChip(int action);
|
||||||
@ -1857,6 +1856,11 @@ class CmdProxy {
|
|||||||
"[(optional unit) ns|us|ms|s]\n\t[Eiger] Measured sub "
|
"[(optional unit) ns|us|ms|s]\n\t[Eiger] Measured sub "
|
||||||
"frame period between last sub frame and previous one.");
|
"frame period between last sub frame and previous one.");
|
||||||
|
|
||||||
|
|
||||||
|
INTEGER_COMMAND_VEC_ID(
|
||||||
|
activate, getActive, setActive, StringTo<int>,
|
||||||
|
"[0, 1] \n\t[Eiger] 1 is default. 0 deactivates readout and does not send data.");
|
||||||
|
|
||||||
INTEGER_COMMAND_VEC_ID(
|
INTEGER_COMMAND_VEC_ID(
|
||||||
partialreset, getPartialReset, setPartialReset, StringTo<int>,
|
partialreset, getPartialReset, setPartialReset, StringTo<int>,
|
||||||
"[0, 1]\n\t[Eiger] Sets up detector to do partial or complete reset at "
|
"[0, 1]\n\t[Eiger] Sets up detector to do partial or complete reset at "
|
||||||
|
@ -1430,13 +1430,6 @@ void Detector::setActive(const bool active, Positions pos) {
|
|||||||
pimpl->Parallel(&Module::setActivate, pos, active);
|
pimpl->Parallel(&Module::setActivate, pos, active);
|
||||||
}
|
}
|
||||||
|
|
||||||
Result<bool> Detector::getRxPadDeactivatedMode(Positions pos) const {
|
|
||||||
return pimpl->Parallel(&Module::getDeactivatedRxrPaddingMode, pos);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Detector::setRxPadDeactivatedMode(bool pad, Positions pos) {
|
|
||||||
pimpl->Parallel(&Module::setDeactivatedRxrPaddingMode, pos, pad);
|
|
||||||
}
|
|
||||||
|
|
||||||
Result<bool> Detector::getPartialReset(Positions pos) const {
|
Result<bool> Detector::getPartialReset(Positions pos) const {
|
||||||
return pimpl->Parallel(&Module::getCounterBit, pos);
|
return pimpl->Parallel(&Module::getCounterBit, pos);
|
||||||
|
@ -1215,12 +1215,7 @@ int Module::getReceiverPort() const { return shm()->rxTCPPort; }
|
|||||||
|
|
||||||
int Module::setReceiverPort(int port_number) {
|
int Module::setReceiverPort(int port_number) {
|
||||||
if (port_number >= 0 && port_number != shm()->rxTCPPort) {
|
if (port_number >= 0 && port_number != shm()->rxTCPPort) {
|
||||||
if (shm()->useReceiverFlag) {
|
shm()->rxTCPPort = port_number;
|
||||||
shm()->rxTCPPort =
|
|
||||||
sendToReceiver<int>(F_SET_RECEIVER_PORT, port_number);
|
|
||||||
} else {
|
|
||||||
shm()->rxTCPPort = port_number;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return shm()->rxTCPPort;
|
return shm()->rxTCPPort;
|
||||||
}
|
}
|
||||||
@ -1559,15 +1554,6 @@ void Module::setActivate(const bool enable) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Module::getDeactivatedRxrPaddingMode() const {
|
|
||||||
return sendToReceiver<int>(F_GET_RECEIVER_DEACTIVATED_PADDING);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Module::setDeactivatedRxrPaddingMode(bool padding) {
|
|
||||||
sendToReceiver(F_SET_RECEIVER_DEACTIVATED_PADDING,
|
|
||||||
static_cast<int>(padding), nullptr);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Module::getCounterBit() const {
|
bool Module::getCounterBit() const {
|
||||||
return (
|
return (
|
||||||
!static_cast<bool>(sendToDetector<int>(F_SET_COUNTER_BIT, GET_FLAG)));
|
!static_cast<bool>(sendToDetector<int>(F_SET_COUNTER_BIT, GET_FLAG)));
|
||||||
@ -2567,21 +2553,13 @@ void Module::setADCInvert(uint32_t value) {
|
|||||||
int Module::getControlPort() const { return shm()->controlPort; }
|
int Module::getControlPort() const { return shm()->controlPort; }
|
||||||
|
|
||||||
void Module::setControlPort(int port_number) {
|
void Module::setControlPort(int port_number) {
|
||||||
if (strlen(shm()->hostname) > 0) {
|
shm()->controlPort = port_number;
|
||||||
shm()->controlPort = sendToDetector<int>(F_SET_PORT, port_number);
|
|
||||||
} else {
|
|
||||||
shm()->controlPort = port_number;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int Module::getStopPort() const { return shm()->stopPort; }
|
int Module::getStopPort() const { return shm()->stopPort; }
|
||||||
|
|
||||||
void Module::setStopPort(int port_number) {
|
void Module::setStopPort(int port_number) {
|
||||||
if (strlen(shm()->hostname) > 0) {
|
shm()->stopPort = port_number;
|
||||||
shm()->stopPort = sendToDetectorStop<int>(F_SET_PORT, port_number);
|
|
||||||
} else {
|
|
||||||
shm()->stopPort = port_number;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Module::getLockDetector() const {
|
bool Module::getLockDetector() const {
|
||||||
|
@ -349,8 +349,6 @@ class Module : public virtual slsDetectorDefs {
|
|||||||
int64_t getMeasuredSubFramePeriod() const;
|
int64_t getMeasuredSubFramePeriod() const;
|
||||||
bool getActivate() const;
|
bool getActivate() const;
|
||||||
void setActivate(const bool enable);
|
void setActivate(const bool enable);
|
||||||
bool getDeactivatedRxrPaddingMode() const;
|
|
||||||
void setDeactivatedRxrPaddingMode(bool padding);
|
|
||||||
bool getCounterBit() const;
|
bool getCounterBit() const;
|
||||||
void setCounterBit(bool cb);
|
void setCounterBit(bool cb);
|
||||||
void pulsePixel(int n = 0, int x = 0, int y = 0);
|
void pulsePixel(int n = 0, int x = 0, int y = 0);
|
||||||
|
@ -190,7 +190,6 @@ TEST_CASE("rx_tcpport", "[.cmd][.rx]") {
|
|||||||
proxy.Call("rx_tcpport", {}, i, GET, oss);
|
proxy.Call("rx_tcpport", {}, i, GET, oss);
|
||||||
REQUIRE(oss.str() == "rx_tcpport " + std::to_string(port + i) + '\n');
|
REQUIRE(oss.str() == "rx_tcpport " + std::to_string(port + i) + '\n');
|
||||||
}
|
}
|
||||||
REQUIRE_THROWS(proxy.Call("rx_tcpport", {"15"}, -1, PUT));
|
|
||||||
port = 5754;
|
port = 5754;
|
||||||
proxy.Call("rx_tcpport", {std::to_string(port)}, -1, PUT);
|
proxy.Call("rx_tcpport", {std::to_string(port)}, -1, PUT);
|
||||||
for (int i = 0; i != det.size(); ++i) {
|
for (int i = 0; i != det.size(); ++i) {
|
||||||
|
@ -113,7 +113,6 @@ void ClientInterface::startTCPServer() {
|
|||||||
int ClientInterface::functionTable(){
|
int ClientInterface::functionTable(){
|
||||||
flist[F_LOCK_RECEIVER] = &ClientInterface::lock_receiver;
|
flist[F_LOCK_RECEIVER] = &ClientInterface::lock_receiver;
|
||||||
flist[F_GET_LAST_RECEIVER_CLIENT_IP] = &ClientInterface::get_last_client_ip;
|
flist[F_GET_LAST_RECEIVER_CLIENT_IP] = &ClientInterface::get_last_client_ip;
|
||||||
flist[F_SET_RECEIVER_PORT] = &ClientInterface::set_port;
|
|
||||||
flist[F_GET_RECEIVER_VERSION] = &ClientInterface::get_version;
|
flist[F_GET_RECEIVER_VERSION] = &ClientInterface::get_version;
|
||||||
flist[F_SETUP_RECEIVER] = &ClientInterface::setup_receiver;
|
flist[F_SETUP_RECEIVER] = &ClientInterface::setup_receiver;
|
||||||
flist[F_RECEIVER_SET_ROI] = &ClientInterface::set_roi;
|
flist[F_RECEIVER_SET_ROI] = &ClientInterface::set_roi;
|
||||||
@ -178,8 +177,6 @@ int ClientInterface::functionTable(){
|
|||||||
flist[F_GET_RECEIVER_DISCARD_POLICY] = &ClientInterface::get_discard_policy;
|
flist[F_GET_RECEIVER_DISCARD_POLICY] = &ClientInterface::get_discard_policy;
|
||||||
flist[F_SET_RECEIVER_PADDING] = &ClientInterface::set_padding_enable;
|
flist[F_SET_RECEIVER_PADDING] = &ClientInterface::set_padding_enable;
|
||||||
flist[F_GET_RECEIVER_PADDING] = &ClientInterface::get_padding_enable;
|
flist[F_GET_RECEIVER_PADDING] = &ClientInterface::get_padding_enable;
|
||||||
flist[F_SET_RECEIVER_DEACTIVATED_PADDING] = &ClientInterface::set_deactivated_padding_enable;
|
|
||||||
flist[F_GET_RECEIVER_DEACTIVATED_PADDING] = &ClientInterface::get_deactivated_padding_enable;
|
|
||||||
flist[F_RECEIVER_SET_READOUT_MODE] = &ClientInterface::set_readout_mode;
|
flist[F_RECEIVER_SET_READOUT_MODE] = &ClientInterface::set_readout_mode;
|
||||||
flist[F_RECEIVER_SET_ADC_MASK] = &ClientInterface::set_adc_mask;
|
flist[F_RECEIVER_SET_ADC_MASK] = &ClientInterface::set_adc_mask;
|
||||||
flist[F_SET_RECEIVER_DBIT_LIST] = &ClientInterface::set_dbit_list;
|
flist[F_SET_RECEIVER_DBIT_LIST] = &ClientInterface::set_dbit_list;
|
||||||
@ -302,21 +299,6 @@ int ClientInterface::get_last_client_ip(Interface &socket) {
|
|||||||
return socket.sendResult(server.getLastClient());
|
return socket.sendResult(server.getLastClient());
|
||||||
}
|
}
|
||||||
|
|
||||||
int ClientInterface::set_port(Interface &socket) {
|
|
||||||
auto p_number = socket.Receive<int>();
|
|
||||||
if (p_number < 1024)
|
|
||||||
throw RuntimeError("Port Number: " + std::to_string(p_number) +
|
|
||||||
" is too low (<1024)");
|
|
||||||
|
|
||||||
LOG(logINFO) << "TCP port set to " << p_number << std::endl;
|
|
||||||
sls::ServerSocket new_server(p_number);
|
|
||||||
new_server.setLockedBy(server.getLockedBy());
|
|
||||||
new_server.setLastClient(server.getThisClient());
|
|
||||||
server = std::move(new_server);
|
|
||||||
socket.sendResult(p_number);
|
|
||||||
return OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int ClientInterface::get_version(Interface &socket) {
|
int ClientInterface::get_version(Interface &socket) {
|
||||||
return socket.sendResult(getReceiverVersion());
|
return socket.sendResult(getReceiverVersion());
|
||||||
}
|
}
|
||||||
@ -1275,29 +1257,6 @@ int ClientInterface::get_padding_enable(Interface &socket) {
|
|||||||
return socket.sendResult(retval);
|
return socket.sendResult(retval);
|
||||||
}
|
}
|
||||||
|
|
||||||
int ClientInterface::set_deactivated_padding_enable(Interface &socket) {
|
|
||||||
auto enable = socket.Receive<int>();
|
|
||||||
if (detType != EIGER) {
|
|
||||||
functionNotImplemented();
|
|
||||||
}
|
|
||||||
if (enable < 0) {
|
|
||||||
throw RuntimeError("Invalid Deactivated padding: " +
|
|
||||||
std::to_string(enable));
|
|
||||||
}
|
|
||||||
verifyIdle(socket);
|
|
||||||
LOG(logDEBUG1) << "Setting deactivated padding enable: " << enable;
|
|
||||||
impl()->setDeactivatedPadding(enable > 0);
|
|
||||||
return socket.Send(OK);
|
|
||||||
}
|
|
||||||
|
|
||||||
int ClientInterface::get_deactivated_padding_enable(Interface &socket) {
|
|
||||||
if (detType != EIGER)
|
|
||||||
functionNotImplemented();
|
|
||||||
auto retval = static_cast<int>(impl()->getDeactivatedPadding());
|
|
||||||
LOG(logDEBUG1) << "Deactivated Padding Enable: " << retval;
|
|
||||||
return socket.sendResult(retval);
|
|
||||||
}
|
|
||||||
|
|
||||||
int ClientInterface::set_readout_mode(Interface &socket) {
|
int ClientInterface::set_readout_mode(Interface &socket) {
|
||||||
auto arg = socket.Receive<readoutMode>();
|
auto arg = socket.Receive<readoutMode>();
|
||||||
|
|
||||||
|
@ -62,7 +62,6 @@ class ClientInterface : private virtual slsDetectorDefs {
|
|||||||
|
|
||||||
int lock_receiver(sls::ServerInterface &socket);
|
int lock_receiver(sls::ServerInterface &socket);
|
||||||
int get_last_client_ip(sls::ServerInterface &socket);
|
int get_last_client_ip(sls::ServerInterface &socket);
|
||||||
int set_port(sls::ServerInterface &socket);
|
|
||||||
int get_version(sls::ServerInterface &socket);
|
int get_version(sls::ServerInterface &socket);
|
||||||
int setup_receiver(sls::ServerInterface &socket);
|
int setup_receiver(sls::ServerInterface &socket);
|
||||||
void setDetectorType(detectorType arg);
|
void setDetectorType(detectorType arg);
|
||||||
@ -129,8 +128,6 @@ class ClientInterface : private virtual slsDetectorDefs {
|
|||||||
int get_discard_policy(sls::ServerInterface &socket);
|
int get_discard_policy(sls::ServerInterface &socket);
|
||||||
int set_padding_enable(sls::ServerInterface &socket);
|
int set_padding_enable(sls::ServerInterface &socket);
|
||||||
int get_padding_enable(sls::ServerInterface &socket);
|
int get_padding_enable(sls::ServerInterface &socket);
|
||||||
int set_deactivated_padding_enable(sls::ServerInterface &socket);
|
|
||||||
int get_deactivated_padding_enable(sls::ServerInterface &socket);
|
|
||||||
int set_readout_mode(sls::ServerInterface &socket);
|
int set_readout_mode(sls::ServerInterface &socket);
|
||||||
int set_adc_mask(sls::ServerInterface &socket);
|
int set_adc_mask(sls::ServerInterface &socket);
|
||||||
int set_dbit_list(sls::ServerInterface &socket);
|
int set_dbit_list(sls::ServerInterface &socket);
|
||||||
|
@ -27,8 +27,7 @@
|
|||||||
const std::string DataProcessor::typeName_ = "DataProcessor";
|
const std::string DataProcessor::typeName_ = "DataProcessor";
|
||||||
|
|
||||||
DataProcessor::DataProcessor(int index, detectorType detectorType, Fifo *fifo,
|
DataProcessor::DataProcessor(int index, detectorType detectorType, Fifo *fifo,
|
||||||
bool *activated, bool *deactivatedPaddingEnable,
|
bool *activated, bool *dataStreamEnable,
|
||||||
bool *dataStreamEnable,
|
|
||||||
uint32_t *streamingFrequency,
|
uint32_t *streamingFrequency,
|
||||||
uint32_t *streamingTimerInMs,
|
uint32_t *streamingTimerInMs,
|
||||||
uint32_t *streamingStartFnum, bool *framePadding,
|
uint32_t *streamingStartFnum, bool *framePadding,
|
||||||
@ -36,7 +35,6 @@ DataProcessor::DataProcessor(int index, detectorType detectorType, Fifo *fifo,
|
|||||||
int *ctbAnalogDataBytes, std::mutex *hdf5Lib)
|
int *ctbAnalogDataBytes, std::mutex *hdf5Lib)
|
||||||
: ThreadObject(index, typeName_), fifo_(fifo), detectorType_(detectorType),
|
: ThreadObject(index, typeName_), fifo_(fifo), detectorType_(detectorType),
|
||||||
dataStreamEnable_(dataStreamEnable), activated_(activated),
|
dataStreamEnable_(dataStreamEnable), activated_(activated),
|
||||||
deactivatedPaddingEnable_(deactivatedPaddingEnable),
|
|
||||||
streamingFrequency_(streamingFrequency),
|
streamingFrequency_(streamingFrequency),
|
||||||
streamingTimerInMs_(streamingTimerInMs),
|
streamingTimerInMs_(streamingTimerInMs),
|
||||||
streamingStartFnum_(streamingStartFnum), framePadding_(framePadding),
|
streamingStartFnum_(streamingStartFnum), framePadding_(framePadding),
|
||||||
@ -169,13 +167,8 @@ void DataProcessor::CreateFirstFiles(
|
|||||||
overWriteEnable, silentMode, attr);
|
overWriteEnable, silentMode, attr);
|
||||||
}
|
}
|
||||||
|
|
||||||
// deactivated with padding enabled, dont write file
|
// deactivated (half module/ single port), dont write file
|
||||||
if (!*activated_ && !*deactivatedPaddingEnable_) {
|
if ((!*activated_) || (!detectorDataStream)) {
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// deactivated port, dont write file
|
|
||||||
if (!detectorDataStream) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -372,10 +365,6 @@ uint64_t DataProcessor::ProcessAnImage(char *buf) {
|
|||||||
if (*activated_ && *framePadding_ && nump < generalData_->packetsPerFrame)
|
if (*activated_ && *framePadding_ && nump < generalData_->packetsPerFrame)
|
||||||
PadMissingPackets(buf);
|
PadMissingPackets(buf);
|
||||||
|
|
||||||
// deactivated and padding enabled
|
|
||||||
else if (!*activated_ && *deactivatedPaddingEnable_)
|
|
||||||
PadMissingPackets(buf);
|
|
||||||
|
|
||||||
// rearrange ctb digital bits (if ctbDbitlist is not empty)
|
// rearrange ctb digital bits (if ctbDbitlist is not empty)
|
||||||
if (!(*ctbDbitList_).empty()) {
|
if (!(*ctbDbitList_).empty()) {
|
||||||
RearrangeDbitData(buf);
|
RearrangeDbitData(buf);
|
||||||
|
@ -26,8 +26,7 @@ class DataProcessor : private virtual slsDetectorDefs, public ThreadObject {
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
DataProcessor(int index, detectorType detectorType, Fifo *fifo,
|
DataProcessor(int index, detectorType detectorType, Fifo *fifo,
|
||||||
bool *activated, bool *deactivatedPaddingEnable,
|
bool *activated, bool *dataStreamEnable, uint32_t *streamingFrequency,
|
||||||
bool *dataStreamEnable, uint32_t *streamingFrequency,
|
|
||||||
uint32_t *streamingTimerInMs, uint32_t *streamingStartFnum,
|
uint32_t *streamingTimerInMs, uint32_t *streamingStartFnum,
|
||||||
bool *framePadding, std::vector<int> *ctbDbitList,
|
bool *framePadding, std::vector<int> *ctbDbitList,
|
||||||
int *ctbDbitOffset, int *ctbAnalogDataBytes,
|
int *ctbDbitOffset, int *ctbAnalogDataBytes,
|
||||||
@ -161,7 +160,6 @@ class DataProcessor : private virtual slsDetectorDefs, public ThreadObject {
|
|||||||
detectorType detectorType_;
|
detectorType detectorType_;
|
||||||
bool *dataStreamEnable_;
|
bool *dataStreamEnable_;
|
||||||
bool *activated_;
|
bool *activated_;
|
||||||
bool *deactivatedPaddingEnable_;
|
|
||||||
/** if 0, sending random images with a timer */
|
/** if 0, sending random images with a timer */
|
||||||
uint32_t *streamingFrequency_;
|
uint32_t *streamingFrequency_;
|
||||||
uint32_t *streamingTimerInMs_;
|
uint32_t *streamingTimerInMs_;
|
||||||
|
@ -167,9 +167,9 @@ void Implementation::setDetectorType(const detectorType d) {
|
|||||||
i, detType, fifo_ptr, &status, &udpPortNum[i], ð[i],
|
i, detType, fifo_ptr, &status, &udpPortNum[i], ð[i],
|
||||||
&numberOfTotalFrames, &udpSocketBufferSize,
|
&numberOfTotalFrames, &udpSocketBufferSize,
|
||||||
&actualUDPSocketBufferSize, &framesPerFile, &frameDiscardMode,
|
&actualUDPSocketBufferSize, &framesPerFile, &frameDiscardMode,
|
||||||
&activated, &detectorDataStream[i], &deactivatedPaddingEnable, &silentMode));
|
&activated, &detectorDataStream[i], &silentMode));
|
||||||
dataProcessor.push_back(sls::make_unique<DataProcessor>(
|
dataProcessor.push_back(sls::make_unique<DataProcessor>(
|
||||||
i, detType, fifo_ptr, &activated, &deactivatedPaddingEnable,
|
i, detType, fifo_ptr, &activated,
|
||||||
&dataStreamEnable, &streamingFrequency, &streamingTimerInMs,
|
&dataStreamEnable, &streamingFrequency, &streamingTimerInMs,
|
||||||
&streamingStartFnum, &framePadding, &ctbDbitList,
|
&streamingStartFnum, &framePadding, &ctbDbitList,
|
||||||
&ctbDbitOffset, &ctbAnalogDataBytes, &hdf5Lib));
|
&ctbDbitOffset, &ctbAnalogDataBytes, &hdf5Lib));
|
||||||
@ -880,12 +880,11 @@ void Implementation::setNumberofUDPInterfaces(const int n) {
|
|||||||
i, detType, fifo_ptr, &status, &udpPortNum[i], ð[i],
|
i, detType, fifo_ptr, &status, &udpPortNum[i], ð[i],
|
||||||
&numberOfTotalFrames, &udpSocketBufferSize,
|
&numberOfTotalFrames, &udpSocketBufferSize,
|
||||||
&actualUDPSocketBufferSize, &framesPerFile,
|
&actualUDPSocketBufferSize, &framesPerFile,
|
||||||
&frameDiscardMode, &activated, &detectorDataStream[i], &deactivatedPaddingEnable,
|
&frameDiscardMode, &activated, &detectorDataStream[i], &silentMode));
|
||||||
&silentMode));
|
|
||||||
listener[i]->SetGeneralData(generalData);
|
listener[i]->SetGeneralData(generalData);
|
||||||
|
|
||||||
dataProcessor.push_back(sls::make_unique<DataProcessor>(
|
dataProcessor.push_back(sls::make_unique<DataProcessor>(
|
||||||
i, detType, fifo_ptr, &activated, &deactivatedPaddingEnable,
|
i, detType, fifo_ptr, &activated,
|
||||||
&dataStreamEnable, &streamingFrequency, &streamingTimerInMs,
|
&dataStreamEnable, &streamingFrequency, &streamingTimerInMs,
|
||||||
&streamingStartFnum, &framePadding, &ctbDbitList,
|
&streamingStartFnum, &framePadding, &ctbDbitList,
|
||||||
&ctbDbitOffset, &ctbAnalogDataBytes, &hdf5Lib));
|
&ctbDbitOffset, &ctbAnalogDataBytes, &hdf5Lib));
|
||||||
@ -1530,16 +1529,6 @@ void Implementation::setDetectorDataStream(const portPosition port,
|
|||||||
<< " Port): " << sls::ToString(detectorDataStream[index]);
|
<< " Port): " << sls::ToString(detectorDataStream[index]);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Implementation::getDeactivatedPadding() const {
|
|
||||||
return deactivatedPaddingEnable;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Implementation::setDeactivatedPadding(bool enable) {
|
|
||||||
deactivatedPaddingEnable = enable;
|
|
||||||
LOG(logINFO) << "Deactivated Padding Enable: "
|
|
||||||
<< (deactivatedPaddingEnable ? "enabled" : "disabled");
|
|
||||||
}
|
|
||||||
|
|
||||||
int Implementation::getReadNRows() const { return readNRows; }
|
int Implementation::getReadNRows() const { return readNRows; }
|
||||||
|
|
||||||
void Implementation::setReadNRows(const int value) {
|
void Implementation::setReadNRows(const int value) {
|
||||||
|
@ -215,9 +215,6 @@ class Implementation : private virtual slsDetectorDefs {
|
|||||||
/** [Eiger] If datastream is disabled, receiver will create dummy data if deactivated
|
/** [Eiger] If datastream is disabled, receiver will create dummy data if deactivated
|
||||||
* padding for that port is enabled (as it will receive nothing from detector) */
|
* padding for that port is enabled (as it will receive nothing from detector) */
|
||||||
void setDetectorDataStream(const portPosition port, const bool enable);
|
void setDetectorDataStream(const portPosition port, const bool enable);
|
||||||
bool getDeactivatedPadding() const;
|
|
||||||
/* [Eiger] */
|
|
||||||
void setDeactivatedPadding(const bool enable);
|
|
||||||
int getReadNRows() const;
|
int getReadNRows() const;
|
||||||
/* [Eiger][Jungfrau] */
|
/* [Eiger][Jungfrau] */
|
||||||
void setReadNRows(const int value);
|
void setReadNRows(const int value);
|
||||||
@ -351,7 +348,6 @@ class Implementation : private virtual slsDetectorDefs {
|
|||||||
bool quadEnable{false};
|
bool quadEnable{false};
|
||||||
bool activated{true};
|
bool activated{true};
|
||||||
std::array<bool, 2> detectorDataStream = {{true, true}};
|
std::array<bool, 2> detectorDataStream = {{true, true}};
|
||||||
bool deactivatedPaddingEnable{true};
|
|
||||||
int readNRows{0};
|
int readNRows{0};
|
||||||
int thresholdEnergyeV{-1};
|
int thresholdEnergyeV{-1};
|
||||||
std::array<int, 3> thresholdAllEnergyeV = {{-1, -1, -1}};
|
std::array<int, 3> thresholdAllEnergyeV = {{-1, -1, -1}};
|
||||||
|
@ -22,11 +22,11 @@ const std::string Listener::TypeName = "Listener";
|
|||||||
Listener::Listener(int ind, detectorType dtype, Fifo *f,
|
Listener::Listener(int ind, detectorType dtype, Fifo *f,
|
||||||
std::atomic<runStatus> *s, uint32_t *portno, std::string *e,
|
std::atomic<runStatus> *s, uint32_t *portno, std::string *e,
|
||||||
uint64_t *nf, int *us, int *as, uint32_t *fpf,
|
uint64_t *nf, int *us, int *as, uint32_t *fpf,
|
||||||
frameDiscardPolicy *fdp, bool *act, bool* detds, bool *depaden, bool *sm)
|
frameDiscardPolicy *fdp, bool *act, bool* detds, bool *sm)
|
||||||
: ThreadObject(ind, TypeName), fifo(f), myDetectorType(dtype), status(s),
|
: ThreadObject(ind, TypeName), fifo(f), myDetectorType(dtype), status(s),
|
||||||
udpPortNumber(portno), eth(e), numImages(nf), udpSocketBufferSize(us),
|
udpPortNumber(portno), eth(e), numImages(nf), udpSocketBufferSize(us),
|
||||||
actualUDPSocketBufferSize(as), framesPerFile(fpf), frameDiscardMode(fdp),
|
actualUDPSocketBufferSize(as), framesPerFile(fpf), frameDiscardMode(fdp),
|
||||||
activated(act), detectorDataStream(detds), deactivatedPaddingEnable(depaden), silentMode(sm) {
|
activated(act), detectorDataStream(detds), silentMode(sm) {
|
||||||
LOG(logDEBUG) << "Listener " << ind << " created";
|
LOG(logDEBUG) << "Listener " << ind << " created";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -299,24 +299,7 @@ uint32_t Listener::ListenToAnImage(char *buf) {
|
|||||||
}
|
}
|
||||||
// deactivated (eiger)
|
// deactivated (eiger)
|
||||||
if (!(*activated)) {
|
if (!(*activated)) {
|
||||||
// no padding
|
return 0;
|
||||||
if (!(*deactivatedPaddingEnable))
|
|
||||||
return 0;
|
|
||||||
// padding without setting bitmask (all missing packets padded in
|
|
||||||
// dataProcessor)
|
|
||||||
if (currentFrameIndex >= *numImages)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
//(eiger) first fnum starts at 1
|
|
||||||
if (!currentFrameIndex) {
|
|
||||||
++currentFrameIndex;
|
|
||||||
}
|
|
||||||
new_header->detHeader.frameNumber = currentFrameIndex;
|
|
||||||
new_header->detHeader.row = row;
|
|
||||||
new_header->detHeader.column = column;
|
|
||||||
new_header->detHeader.detType = (uint8_t)generalData->myDetectorType;
|
|
||||||
new_header->detHeader.version = (uint8_t)SLS_DETECTOR_HEADER_VERSION;
|
|
||||||
return imageSize;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// look for carry over
|
// look for carry over
|
||||||
|
@ -38,13 +38,11 @@ class Listener : private virtual slsDetectorDefs, public ThreadObject {
|
|||||||
* @param fdp frame discard policy
|
* @param fdp frame discard policy
|
||||||
* @param act pointer to activated
|
* @param act pointer to activated
|
||||||
* @param detds pointer to detector data stream
|
* @param detds pointer to detector data stream
|
||||||
* @param depaden pointer to deactivated padding enable
|
|
||||||
* @param sm pointer to silent mode
|
* @param sm pointer to silent mode
|
||||||
*/
|
*/
|
||||||
Listener(int ind, detectorType dtype, Fifo *f, std::atomic<runStatus> *s,
|
Listener(int ind, detectorType dtype, Fifo *f, std::atomic<runStatus> *s,
|
||||||
uint32_t *portno, std::string *e, uint64_t *nf, int *us, int *as,
|
uint32_t *portno, std::string *e, uint64_t *nf, int *us, int *as,
|
||||||
uint32_t *fpf, frameDiscardPolicy *fdp, bool *act, bool* detds, bool *depaden,
|
uint32_t *fpf, frameDiscardPolicy *fdp, bool *act, bool* detds, bool *sm);
|
||||||
bool *sm);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Destructor
|
* Destructor
|
||||||
@ -191,9 +189,6 @@ class Listener : private virtual slsDetectorDefs, public ThreadObject {
|
|||||||
/** detector data stream */
|
/** detector data stream */
|
||||||
bool* detectorDataStream;
|
bool* detectorDataStream;
|
||||||
|
|
||||||
/** Deactivated padding enable */
|
|
||||||
bool *deactivatedPaddingEnable;
|
|
||||||
|
|
||||||
/** Silent Mode */
|
/** Silent Mode */
|
||||||
bool *silentMode;
|
bool *silentMode;
|
||||||
|
|
||||||
|
@ -69,7 +69,6 @@ enum detFuncs {
|
|||||||
F_GET_ROI,
|
F_GET_ROI,
|
||||||
F_LOCK_SERVER,
|
F_LOCK_SERVER,
|
||||||
F_GET_LAST_CLIENT_IP,
|
F_GET_LAST_CLIENT_IP,
|
||||||
F_SET_PORT,
|
|
||||||
F_ENABLE_TEN_GIGA,
|
F_ENABLE_TEN_GIGA,
|
||||||
F_SET_ALL_TRIMBITS,
|
F_SET_ALL_TRIMBITS,
|
||||||
F_SET_PATTERN_IO_CONTROL,
|
F_SET_PATTERN_IO_CONTROL,
|
||||||
@ -258,7 +257,6 @@ enum detFuncs {
|
|||||||
F_EXEC_RECEIVER_COMMAND,
|
F_EXEC_RECEIVER_COMMAND,
|
||||||
F_LOCK_RECEIVER,
|
F_LOCK_RECEIVER,
|
||||||
F_GET_LAST_RECEIVER_CLIENT_IP,
|
F_GET_LAST_RECEIVER_CLIENT_IP,
|
||||||
F_SET_RECEIVER_PORT,
|
|
||||||
F_GET_RECEIVER_VERSION,
|
F_GET_RECEIVER_VERSION,
|
||||||
F_RECEIVER_SET_ROI,
|
F_RECEIVER_SET_ROI,
|
||||||
F_RECEIVER_SET_NUM_FRAMES,
|
F_RECEIVER_SET_NUM_FRAMES,
|
||||||
@ -322,8 +320,6 @@ enum detFuncs {
|
|||||||
F_GET_RECEIVER_DISCARD_POLICY,
|
F_GET_RECEIVER_DISCARD_POLICY,
|
||||||
F_SET_RECEIVER_PADDING,
|
F_SET_RECEIVER_PADDING,
|
||||||
F_GET_RECEIVER_PADDING,
|
F_GET_RECEIVER_PADDING,
|
||||||
F_SET_RECEIVER_DEACTIVATED_PADDING,
|
|
||||||
F_GET_RECEIVER_DEACTIVATED_PADDING,
|
|
||||||
F_RECEIVER_SET_READOUT_MODE,
|
F_RECEIVER_SET_READOUT_MODE,
|
||||||
F_RECEIVER_SET_ADC_MASK,
|
F_RECEIVER_SET_ADC_MASK,
|
||||||
F_SET_RECEIVER_DBIT_LIST,
|
F_SET_RECEIVER_DBIT_LIST,
|
||||||
@ -427,7 +423,6 @@ const char* getFunctionNameFromEnum(enum detFuncs func) {
|
|||||||
case F_GET_ROI: return "F_GET_ROI";
|
case F_GET_ROI: return "F_GET_ROI";
|
||||||
case F_LOCK_SERVER: return "F_LOCK_SERVER";
|
case F_LOCK_SERVER: return "F_LOCK_SERVER";
|
||||||
case F_GET_LAST_CLIENT_IP: return "F_GET_LAST_CLIENT_IP";
|
case F_GET_LAST_CLIENT_IP: return "F_GET_LAST_CLIENT_IP";
|
||||||
case F_SET_PORT: return "F_SET_PORT";
|
|
||||||
case F_ENABLE_TEN_GIGA: return "F_ENABLE_TEN_GIGA";
|
case F_ENABLE_TEN_GIGA: return "F_ENABLE_TEN_GIGA";
|
||||||
case F_SET_ALL_TRIMBITS: return "F_SET_ALL_TRIMBITS";
|
case F_SET_ALL_TRIMBITS: return "F_SET_ALL_TRIMBITS";
|
||||||
case F_SET_PATTERN_IO_CONTROL: return "F_SET_PATTERN_IO_CONTROL";
|
case F_SET_PATTERN_IO_CONTROL: return "F_SET_PATTERN_IO_CONTROL";
|
||||||
@ -614,7 +609,6 @@ const char* getFunctionNameFromEnum(enum detFuncs func) {
|
|||||||
case F_EXEC_RECEIVER_COMMAND: return "F_EXEC_RECEIVER_COMMAND";
|
case F_EXEC_RECEIVER_COMMAND: return "F_EXEC_RECEIVER_COMMAND";
|
||||||
case F_LOCK_RECEIVER: return "F_LOCK_RECEIVER";
|
case F_LOCK_RECEIVER: return "F_LOCK_RECEIVER";
|
||||||
case F_GET_LAST_RECEIVER_CLIENT_IP: return "F_GET_LAST_RECEIVER_CLIENT_IP";
|
case F_GET_LAST_RECEIVER_CLIENT_IP: return "F_GET_LAST_RECEIVER_CLIENT_IP";
|
||||||
case F_SET_RECEIVER_PORT: return "F_SET_RECEIVER_PORT";
|
|
||||||
case F_GET_RECEIVER_VERSION: return "F_GET_RECEIVER_VERSION";
|
case F_GET_RECEIVER_VERSION: return "F_GET_RECEIVER_VERSION";
|
||||||
case F_RECEIVER_SET_ROI: return "F_RECEIVER_SET_ROI";
|
case F_RECEIVER_SET_ROI: return "F_RECEIVER_SET_ROI";
|
||||||
case F_RECEIVER_SET_NUM_FRAMES: return "F_RECEIVER_SET_NUM_FRAMES";
|
case F_RECEIVER_SET_NUM_FRAMES: return "F_RECEIVER_SET_NUM_FRAMES";
|
||||||
@ -678,8 +672,6 @@ const char* getFunctionNameFromEnum(enum detFuncs func) {
|
|||||||
case F_GET_RECEIVER_DISCARD_POLICY: return "F_GET_RECEIVER_DISCARD_POLICY";
|
case F_GET_RECEIVER_DISCARD_POLICY: return "F_GET_RECEIVER_DISCARD_POLICY";
|
||||||
case F_SET_RECEIVER_PADDING: return "F_SET_RECEIVER_PADDING";
|
case F_SET_RECEIVER_PADDING: return "F_SET_RECEIVER_PADDING";
|
||||||
case F_GET_RECEIVER_PADDING: return "F_GET_RECEIVER_PADDING";
|
case F_GET_RECEIVER_PADDING: return "F_GET_RECEIVER_PADDING";
|
||||||
case F_SET_RECEIVER_DEACTIVATED_PADDING: return "F_SET_RECEIVER_DEACTIVATED_PADDING";
|
|
||||||
case F_GET_RECEIVER_DEACTIVATED_PADDING: return "F_GET_RECEIVER_DEACTIVATED_PADDING";
|
|
||||||
case F_RECEIVER_SET_READOUT_MODE: return "F_RECEIVER_SET_READOUT_MODE";
|
case F_RECEIVER_SET_READOUT_MODE: return "F_RECEIVER_SET_READOUT_MODE";
|
||||||
case F_RECEIVER_SET_ADC_MASK: return "F_RECEIVER_SET_ADC_MASK";
|
case F_RECEIVER_SET_ADC_MASK: return "F_RECEIVER_SET_ADC_MASK";
|
||||||
case F_SET_RECEIVER_DBIT_LIST: return "F_SET_RECEIVER_DBIT_LIST";
|
case F_SET_RECEIVER_DBIT_LIST: return "F_SET_RECEIVER_DBIT_LIST";
|
||||||
|
Loading…
x
Reference in New Issue
Block a user