temlist and tempvalues added

This commit is contained in:
2020-08-20 15:16:28 +02:00
parent 5bfbc83a04
commit ffd694eda1
6 changed files with 119 additions and 2 deletions

View File

@ -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) {

View File

@ -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,

View File

@ -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) {