dac tests

This commit is contained in:
2020-02-26 09:29:06 +01:00
parent dca2d098a9
commit 2fcb2bff75
7 changed files with 281 additions and 506 deletions

View File

@@ -4,6 +4,7 @@
#include "sls_detector_defs.h"
#include <sstream>
#include "test-CmdProxy-global.h"
#include "tests/globals.h"
#include "versionAPI.h"
@@ -157,76 +158,78 @@ TEST_CASE("resetfpga", "[.cmd]") {
}
// void test_dac(defs::dacIndex index, const std::string &dacname, int dacvalue)
// {
// Detector det;
// CmdProxy proxy(&det);
// std::ostringstream oss_set, oss_get;
// auto dacstr = std::to_string(dacvalue);
// auto previous = det.getDAC(index, false);
// proxy.Call(dacname, {dacstr}, -1, PUT, oss_set);
// REQUIRE(oss_set.str() == dacname + " " + dacstr + "\n");
// proxy.Call(dacname, {}, -1, GET, oss_get);
// REQUIRE(oss_set.str() == dacname + " " + dacstr + "\n");
// // Reset all dacs to previous value
// for (int i = 0; i != det.size(); ++i) {
// det.setDAC(index, previous[i], false, {i});
// }
// }
// TEST_CASE("Setting and reading back EIGER dacs", "[.cmd]") {
// // vsvp, vtr, vrf, vrs, vsvn, vtgstv, vcmp_ll, vcmp_lr, vcal, vcmp_rl,
// // rxb_rb, rxb_lb, vcmp_rr, vcp, vcn, vis, vthreshold
// Detector det;
// CmdProxy proxy(&det);
// auto det_type = det.getDetectorType().squash();
// if (det_type == defs::EIGER) {
// SECTION("vsvp") { test_dac(defs::SVP, "vsvp", 5); }
// SECTION("vtr") { test_dac(defs::VRF, "vtr", 1200); }
// SECTION("vrf") { test_dac(defs::VRF, "vrf", 1500); }
// SECTION("vrs") { test_dac(defs::VRF, "vrs", 1510); }
// SECTION("vsvn") { test_dac(defs::SVN, "vsvn", 3800); }
// SECTION("vtgstv") { test_dac(defs::VTGSTV, "vtgstv", 2550); }
// SECTION("vcmp_ll") { test_dac(defs::VCMP_LL, "vcmp_ll", 1400); }
// SECTION("vcmp_lr") { test_dac(defs::VCMP_LR, "vcmp_lr", 1400); }
// SECTION("vcal") { test_dac(defs::CAL, "vcal", 1400); }
// SECTION("vcmp_rl") { test_dac(defs::VCMP_RL, "vcmp_rl", 1400); }
// SECTION("rxb_rb") { test_dac(defs::RXB_RB, "rxb_rb", 1400); }
// SECTION("rxb_lb") { test_dac(defs::RXB_LB, "rxb_lb", 1400); }
// SECTION("vcmp_rr") { test_dac(defs::VCMP_RR, "vcmp_rr", 1400); }
// SECTION("vcp") { test_dac(defs::VCP, "vcp", 1400); }
// SECTION("vcn") { test_dac(defs::VCN, "vcn", 1400); }
// SECTION("vis") { test_dac(defs::VIS, "vis", 1400); }
// SECTION("iodelay") { test_dac(defs::IO_DELAY, "iodelay", 1400); }
// SECTION("vthreshold") {
// // Read out individual vcmp to be able to reset after
// // the test is done
// auto vcmp_ll = det.getDAC(defs::VCMP_LL, false);
// auto vcmp_lr = det.getDAC(defs::VCMP_LR, false);
// auto vcmp_rl = det.getDAC(defs::VCMP_RL, false);
// auto vcmp_rr = det.getDAC(defs::VCMP_RR, false);
// auto vcp = det.getDAC(defs::VCP, false);
// {
// std::ostringstream oss;
// proxy.Call("vthreshold", {"1234"}, -1, PUT, oss);
// REQUIRE(oss.str() == "vthreshold 1234\n");
// }
// {
// std::ostringstream oss;
// proxy.Call("vthreshold", {}, -1, GET, oss);
// REQUIRE(oss.str() == "vthreshold 1234\n");
// }
// // Reset dacs after test
// for (int i = 0; i != det.size(); ++i) {
// det.setDAC(defs::VCMP_LL, vcmp_ll[i], false, {i});
// det.setDAC(defs::VCMP_LR, vcmp_ll[i], false, {i});
// det.setDAC(defs::VCMP_RL, vcmp_ll[i], false, {i});
// det.setDAC(defs::VCMP_RR, vcmp_ll[i], false, {i});
// det.setDAC(defs::VCP, vcp[i], false, {i});
// }
// }
// }
// }
TEST_CASE("Setting and reading back Jungfrau dacs", "[.cmd]") {
// vb_comp, vdd_prot, vin_com, vref_prech, vb_pixbuf, vb_ds, vref_ds, vref_comp
Detector det;
CmdProxy proxy(&det);
auto det_type = det.getDetectorType().squash();
if (det_type == defs::JUNGFRAU) {
SECTION("vb_comp") { test_dac(defs::VB_COMP, "vb_comp", 1220); }
SECTION("vdd_prot") { test_dac(defs::VDD_PROT, "vdd_prot", 3000); }
SECTION("vin_com") { test_dac(defs::VIN_COM, "vin_com", 1053); }
SECTION("vref_prech") { test_dac(defs::VREF_PRECH, "vref_prech", 1450); }
SECTION("vb_pixbuf") { test_dac(defs::VB_PIXBUF, "vb_pixbuf", 750); }
SECTION("vb_ds") { test_dac(defs::VB_DS, "vb_ds", 1000); }
SECTION("vref_ds") { test_dac(defs::VREF_DS, "vref_ds", 480); }
SECTION("vref_comp") { test_dac(defs::VREF_COMP, "vref_comp", 420); }
// eiger
REQUIRE_THROWS(proxy.Call("vthreshold", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("vsvp", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("vsvn", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("vtr", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("vrf", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("vrs", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("vtgstv", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcmp_ll", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcmp_lr", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcal", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcmp_rl", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcmp_rr", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("rxb_rb", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("rxb_lb", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcp", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcn", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("vis", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("iodelay", {}, -1, GET));
// gotthard
// REQUIRE_THROWS(proxy.Call("vref_ds", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcascn_pb", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcascp_pb", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("vout_cm", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcasc_out", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("vin_cm", {}, -1, GET));
// REQUIRE_THROWS(proxy.Call("vref_comp", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("ib_test_c", {}, -1, GET));
// mythen3
REQUIRE_THROWS(proxy.Call("vpreamp", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("vshaper", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("vshaperneg", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("vipre", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("viinsh", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("vdcsh", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("vth1", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("vth2", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("vth3", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("vpl", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("vph", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("vtrim", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcassh", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcas", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("vicin", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("vipre_out", {}, -1, GET));
// gotthard2
REQUIRE_THROWS(proxy.Call("vref_h_adc", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("vb_comp_fe", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("vb_comp_adc", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcom_cds", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("vref_rstore", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("vb_opa_1st", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("vref_comp_fe", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcom_adc1", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("vref_l_adc", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("vref_cds", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("vb_cs", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("vb_opa_fd", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcom_adc2", {}, -1, GET));
}
}