mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-21 03:10:02 +02:00
temlist and tempvalues added
This commit is contained in:
parent
5bfbc83a04
commit
ffd694eda1
@ -338,6 +338,9 @@ class Detector {
|
||||
* Only for virtual servers */
|
||||
void setImageTestMode(const int value, Positions pos = {});
|
||||
|
||||
/** gets list of temperature indices for this detector */
|
||||
std::vector<defs::dacIndex> getTemperatureList() const;
|
||||
|
||||
/**
|
||||
* (Degrees)
|
||||
* [Gotthard] Options: TEMPERATURE_ADC, TEMPERATURE_FPGA
|
||||
|
@ -850,6 +850,36 @@ std::string CmdProxy::ExternalSignal(int action) {
|
||||
}
|
||||
|
||||
/** temperature */
|
||||
std::string CmdProxy::TemperatureValues(int action) {
|
||||
std::ostringstream os;
|
||||
os << cmd << ' ';
|
||||
if (action == defs::HELP_ACTION) {
|
||||
os << "\n\tGets the values for every temperature for this detector."
|
||||
<< '\n';
|
||||
} else if (action == defs::GET_ACTION) {
|
||||
if (args.size() != 0) {
|
||||
WrongNumberOfParameters(0);
|
||||
}
|
||||
auto t = det->getTemperatureList();
|
||||
os << '[';
|
||||
if (t.size() > 0) {
|
||||
auto it = t.cbegin();
|
||||
os << ToString(*it) << ' ';
|
||||
os << OutString(det->getTemperature(*it++, {det_id})) << " °C";
|
||||
while (it != t.cend()) {
|
||||
os << ", " << ToString(*it) << ' ';
|
||||
os << OutString(det->getTemperature(*it++, {det_id})) << " °C";
|
||||
}
|
||||
}
|
||||
os << "]\n";
|
||||
} else if (action == defs::PUT_ACTION) {
|
||||
throw sls::RuntimeError("Cannot put");
|
||||
} else {
|
||||
throw sls::RuntimeError("Unknown action");
|
||||
}
|
||||
return os.str();
|
||||
}
|
||||
|
||||
/* dacs */
|
||||
std::string CmdProxy::Dac(int action) {
|
||||
std::ostringstream os;
|
||||
@ -902,7 +932,7 @@ std::string CmdProxy::DacValues(int action) {
|
||||
std::ostringstream os;
|
||||
os << cmd << ' ';
|
||||
if (action == defs::HELP_ACTION) {
|
||||
os << "[(optional unit) mv] \n\tGets the list of commands for every "
|
||||
os << "[(optional unit) mv] \n\tGets the values for every "
|
||||
"dac for this detector."
|
||||
<< '\n';
|
||||
} else if (action == defs::GET_ACTION) {
|
||||
|
@ -684,6 +684,8 @@ class CmdProxy {
|
||||
{"extsig", &CmdProxy::ExternalSignal},
|
||||
|
||||
/** temperature */
|
||||
{"templist", &CmdProxy::templist},
|
||||
{"tempvalues", &CmdProxy::TemperatureValues},
|
||||
{"temp_adc", &CmdProxy::temp_adc},
|
||||
{"temp_fpga", &CmdProxy::temp_fpga},
|
||||
{"temp_fpgaext", &CmdProxy::temp_fpgaext},
|
||||
@ -693,6 +695,7 @@ class CmdProxy {
|
||||
{"temp_sodr", &CmdProxy::temp_sodr},
|
||||
{"temp_fpgafl", &CmdProxy::temp_fpgafl},
|
||||
{"temp_fpgafr", &CmdProxy::temp_fpgafr},
|
||||
{"temp_slowadc", &CmdProxy::temp_slowadc},
|
||||
|
||||
/* dacs */
|
||||
{"vthreshold", &CmdProxy::vthreshold},
|
||||
@ -1031,6 +1034,7 @@ class CmdProxy {
|
||||
std::string ClockDivider(int action);
|
||||
std::string ExternalSignal(int action);
|
||||
/** temperature */
|
||||
std::string TemperatureValues(int action);
|
||||
/* dacs */
|
||||
std::string Dac(int action);
|
||||
std::string DacValues(int action);
|
||||
@ -1243,6 +1247,9 @@ class CmdProxy {
|
||||
"intensity incremented by 1. If 1, all pixels almost saturated.");
|
||||
|
||||
/** temperature */
|
||||
GET_COMMAND_NOID(
|
||||
templist, getTemperatureList,
|
||||
"\n\tList of temperature commands implemented for this detector.");
|
||||
|
||||
GET_IND_COMMAND(temp_adc, getTemperature, slsDetectorDefs::TEMPERATURE_ADC,
|
||||
" °C", "[n_value]\n\t[Jungfrau][Gotthard] ADC Temperature");
|
||||
@ -1279,6 +1286,10 @@ class CmdProxy {
|
||||
temp_fpgafr, getTemperature, slsDetectorDefs::TEMPERATURE_FPGA3, " °C",
|
||||
"[n_value]\n\t[Eiger]Temperature of the left front end board fpga");
|
||||
|
||||
GET_IND_COMMAND(temp_slowadc, getTemperature,
|
||||
slsDetectorDefs::SLOW_ADC_TEMP, " °C",
|
||||
"[n_value]\n\t[Ctb]Temperature of the slow adc");
|
||||
|
||||
/* dacs */
|
||||
|
||||
DAC_COMMAND(vthreshold, getDAC, setDAC, defs::VTHRESHOLD,
|
||||
|
@ -445,6 +445,26 @@ void Detector::setImageTestMode(int value, Positions pos) {
|
||||
pimpl->Parallel(&Module::setImageTestMode, pos, value);
|
||||
}
|
||||
|
||||
std::vector<defs::dacIndex> Detector::getTemperatureList() const {
|
||||
std::vector<defs::dacIndex> retval;
|
||||
switch (getDetectorType().squash()) {
|
||||
case defs::CHIPTESTBOARD:
|
||||
return std::vector<defs::dacIndex>{defs::SLOW_ADC_TEMP};
|
||||
case defs::JUNGFRAU:
|
||||
case defs::GOTTHARD:
|
||||
return std::vector<defs::dacIndex>{defs::TEMPERATURE_ADC,
|
||||
defs::TEMPERATURE_FPGA};
|
||||
case defs::EIGER:
|
||||
return std::vector<defs::dacIndex>{
|
||||
defs::TEMPERATURE_FPGA, defs::TEMPERATURE_FPGAEXT,
|
||||
defs::TEMPERATURE_10GE, defs::TEMPERATURE_DCDC,
|
||||
defs::TEMPERATURE_SODL, defs::TEMPERATURE_SODR,
|
||||
defs::TEMPERATURE_FPGA2, defs::TEMPERATURE_FPGA3};
|
||||
default:
|
||||
return std::vector<defs::dacIndex>{};
|
||||
}
|
||||
}
|
||||
|
||||
Result<int> Detector::getTemperature(defs::dacIndex index,
|
||||
Positions pos) const {
|
||||
switch (index) {
|
||||
|
@ -1047,6 +1047,20 @@ TEST_CASE("extsig", "[.cmd][.new]") {
|
||||
|
||||
/** temperature */
|
||||
|
||||
TEST_CASE("templist", "[.cmd][.new]") {
|
||||
Detector det;
|
||||
CmdProxy proxy(&det);
|
||||
REQUIRE_NOTHROW(proxy.Call("templist", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("templist", {}, -1, PUT));
|
||||
}
|
||||
|
||||
TEST_CASE("tempvalues", "[.cmd][.new]") {
|
||||
Detector det;
|
||||
CmdProxy proxy(&det);
|
||||
REQUIRE_NOTHROW(proxy.Call("tempvalues", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("tempvalues", {}, -1, PUT));
|
||||
}
|
||||
|
||||
TEST_CASE("temp_adc", "[.cmd][.new]") {
|
||||
Detector det;
|
||||
CmdProxy proxy(&det);
|
||||
|
@ -515,6 +515,26 @@ std::string ToString(const defs::dacIndex s) {
|
||||
return std::string("highvoltage");
|
||||
case defs::IO_DELAY:
|
||||
return std::string("iodelay");
|
||||
case defs::TEMPERATURE_ADC:
|
||||
return std::string("temp_adc");
|
||||
case defs::TEMPERATURE_FPGA:
|
||||
return std::string("temp_fpga");
|
||||
case defs::TEMPERATURE_FPGAEXT:
|
||||
return std::string("temp_fpgaext");
|
||||
case defs::TEMPERATURE_10GE:
|
||||
return std::string("temp_10ge");
|
||||
case defs::TEMPERATURE_DCDC:
|
||||
return std::string("temp_dcdc");
|
||||
case defs::TEMPERATURE_SODL:
|
||||
return std::string("temp_sodl");
|
||||
case defs::TEMPERATURE_SODR:
|
||||
return std::string("temp_sodr");
|
||||
case defs::TEMPERATURE_FPGA2:
|
||||
return std::string("temp_fpgafl");
|
||||
case defs::TEMPERATURE_FPGA3:
|
||||
return std::string("temp_fpgafr");
|
||||
case defs::SLOW_ADC_TEMP:
|
||||
return std::string("temp_slowadc");
|
||||
default:
|
||||
return std::string("Unknown");
|
||||
}
|
||||
@ -874,7 +894,26 @@ template <> defs::dacIndex StringTo(const std::string &s) {
|
||||
return defs::HIGH_VOLTAGE;
|
||||
if (s == "iodelay")
|
||||
return defs::IO_DELAY;
|
||||
|
||||
if (s == "temp_adc")
|
||||
return defs::TEMPERATURE_ADC;
|
||||
if (s == "temp_fpga")
|
||||
return defs::TEMPERATURE_FPGA;
|
||||
if (s == "temp_fpgaext")
|
||||
return defs::TEMPERATURE_FPGAEXT;
|
||||
if (s == "temp_10ge")
|
||||
return defs::TEMPERATURE_10GE;
|
||||
if (s == "temp_dcdc")
|
||||
return defs::TEMPERATURE_DCDC;
|
||||
if (s == "temp_sodl")
|
||||
return defs::TEMPERATURE_SODL;
|
||||
if (s == "temp_sodr")
|
||||
return defs::TEMPERATURE_SODR;
|
||||
if (s == "temp_fpgafl")
|
||||
return defs::TEMPERATURE_FPGA2;
|
||||
if (s == "temp_fpgafr")
|
||||
return defs::TEMPERATURE_FPGA3;
|
||||
if (s == "temp_slowadc")
|
||||
return defs::SLOW_ADC_TEMP;
|
||||
throw sls::RuntimeError("Unknown dac Index " + s);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user