txdelay for all modules (#584)

* setting txdelay for all modules for eiger, jungfrau and m3
* added txdelay in python and renamed txndelay_ to txdelay_
* call in parallel
This commit is contained in:
Dhanya Thattil
2022-11-24 11:57:26 +01:00
committed by GitHub
parent 928d778fb1
commit 61c31ed44a
10 changed files with 250 additions and 21 deletions

View File

@ -2672,7 +2672,7 @@ TEST_CASE("txndelay_frame", "[.cmd]") {
det_type == defs::MYTHEN3) {
auto prev_val = det.getTransmissionDelayFrame();
auto val = 5000;
if (det_type == defs::JUNGFRAU) {
if (det_type == defs::JUNGFRAU || det_type == defs::MYTHEN3) {
val = 5;
}
std::string sval = std::to_string(val);
@ -2691,6 +2691,62 @@ TEST_CASE("txndelay_frame", "[.cmd]") {
}
}
TEST_CASE("txdelay", "[.cmd]") {
Detector det;
CmdProxy proxy(&det);
auto det_type = det.getDetectorType().squash();
if (det_type == defs::EIGER || det_type == defs::JUNGFRAU ||
det_type == defs::MYTHEN3) {
Result<int> prev_left, prev_right;
bool eiger = false;
if (det_type == defs::EIGER) {
eiger = true;
prev_left = det.getTransmissionDelayLeft();
prev_right = det.getTransmissionDelayRight();
}
auto prev_frame = det.getTransmissionDelayFrame();
auto val = 5000;
if (det_type == defs::JUNGFRAU || det_type == defs::MYTHEN3) {
val = 5;
}
std::string sval = std::to_string(val);
{
std::ostringstream oss1, oss2;
proxy.Call("txdelay", {sval}, -1, PUT, oss1);
REQUIRE(oss1.str() == "txdelay " + sval + "\n");
proxy.Call("txdelay", {}, -1, GET, oss2);
REQUIRE(oss2.str() == "txdelay " + sval + "\n");
}
// test other mods
for (int i = 0; i != det.size(); ++i) {
if (eiger) {
REQUIRE(det.getTransmissionDelayLeft({i}).squash(-1) ==
(3 * i * val));
REQUIRE(det.getTransmissionDelayRight({i}).squash(-1) ==
((3 * i + 1) * val));
REQUIRE(det.getTransmissionDelayFrame({i}).squash(-1) ==
((3 * i + 2) * val));
} else {
REQUIRE(det.getTransmissionDelayFrame({i}).squash(-1) ==
(i * val));
}
}
// not a module level command
REQUIRE_THROWS(proxy.Call("txdelay", {"5"}, 0, PUT));
REQUIRE_THROWS(proxy.Call("txdelay", {}, 0, GET));
for (int i = 0; i != det.size(); ++i) {
if (eiger) {
det.setTransmissionDelayLeft(prev_left[i]);
det.setTransmissionDelayRight(prev_right[i]);
}
det.setTransmissionDelayFrame(prev_frame[i]);
}
} else {
REQUIRE_THROWS(proxy.Call("txdelay", {}, -1, GET));
}
}
/* ZMQ Streaming Parameters (Receiver<->Client) */
TEST_CASE("zmqport", "[.cmd]") {