From 6fcdba56a466f6d51515da9e9876c21ad3215b1f Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Mon, 21 Oct 2024 16:39:50 +0200 Subject: [PATCH] Dev/document autocomplete (#1004) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fixed the gendoc to reflect the new parser, updated documentation to include info about autocomplete in the command line part, error in createing docs * fixed list deprecated, fixed command help (to show properly on a html, fixed other help warnings * minor indents --------- Co-authored-by: Erik Fröjdh --- docs/src/commandline.rst | 12 +- docs/src/gendoc.cpp | 10 +- docs/src/slsreceiver.rst | 2 +- docs/src/udpheader.rst | 2 + slsDetectorSoftware/generator/Caller.in.h | 1 + slsDetectorSoftware/generator/commands.yaml | 18 +- .../generator/extended_commands.yaml | 52 +-- slsDetectorSoftware/generator/gen_commands.py | 1 - slsDetectorSoftware/src/Caller.cpp | 375 +++--------------- slsDetectorSoftware/src/Caller.h | 1 + slsDetectorSoftware/src/CallerSpecial.cpp | 37 +- zsh_autocomplete.sh | 1 + 12 files changed, 137 insertions(+), 375 deletions(-) create mode 120000 zsh_autocomplete.sh diff --git a/docs/src/commandline.rst b/docs/src/commandline.rst index d7433c4d0..4b54da9b9 100644 --- a/docs/src/commandline.rst +++ b/docs/src/commandline.rst @@ -8,7 +8,7 @@ Commands can be used either with sls_detector_get or sls_detector_put .. code-block:: - sls_detector_get vrf + sls_detector_get exptime Help -------- @@ -24,6 +24,16 @@ Help # get help for a particular command sls_detector_get -h fpath sls_detector_help fpath + + # list of deprecated commands + list deprecated + + # autocompletion + # bash_autocomplete.sh or zsh_autocomplete.sh must be sourced from the + # main package folder to enable auto completion of commands and arguments + # for the command line on that shell. + source bash_autocomplete.sh + Commands diff --git a/docs/src/gendoc.cpp b/docs/src/gendoc.cpp index 86dc3a6ad..2854f6d22 100644 --- a/docs/src/gendoc.cpp +++ b/docs/src/gendoc.cpp @@ -11,7 +11,7 @@ #include #include -#include "CmdProxy.h" +#include "Caller.h" #include "sls/Detector.h" #include "sls/sls_detector_defs.h" @@ -37,8 +37,8 @@ int main() { std::cout << "Generating command line documentation!\n"; - sls::CmdProxy proxy(nullptr); - auto commands = proxy.GetProxyCommands(); + sls::Caller caller(nullptr); + auto commands = caller.getAllCommands(); std::ofstream fs("commands.rst"); fs << ".. glossary::\n"; @@ -46,7 +46,7 @@ int main() { for (const auto &cmd : commands) { std::ostringstream os; std::cout << cmd << '\n'; - proxy.Call(cmd, {}, -1, slsDetectorDefs::HELP_ACTION, os); + caller.call(cmd, {}, -1, slsDetectorDefs::HELP_ACTION, os); auto tmp = os.str().erase(0, cmd.size()); auto usage = tmp.substr(0, tmp.find_first_of('\n')); @@ -57,7 +57,7 @@ int main() { std::ofstream fs2("deprecated.csv"); fs2 << "Old, New\n"; - auto cmds = proxy.GetDeprecatedCommands(); + auto cmds = caller.GetDeprecatedCommands(); for (auto it : cmds) { fs2 << it.first << ", " << it.second << '\n'; } diff --git a/docs/src/slsreceiver.rst b/docs/src/slsreceiver.rst index 0cccaf012..09f9f782f 100644 --- a/docs/src/slsreceiver.rst +++ b/docs/src/slsreceiver.rst @@ -213,7 +213,7 @@ ZMQ: Json Header Format | | [From detector udp header] | +--------------+----------------------------------------------+ | detType | Detector type enum | - | detSpec3 | See :ref:`Detector enum` | + | detSpec3 | See :ref:`Detector enum` | | | [From detector udp header] | +--------------+----------------------------------------------+ | version | Detector header version. At 2 | diff --git a/docs/src/udpheader.rst b/docs/src/udpheader.rst index 04f3a5a6a..720aff2a9 100644 --- a/docs/src/udpheader.rst +++ b/docs/src/udpheader.rst @@ -63,6 +63,8 @@ Description * **version**: current version of the detector header (0x2). +.. _detector enum: + Detector Enum -------------- diff --git a/slsDetectorSoftware/generator/Caller.in.h b/slsDetectorSoftware/generator/Caller.in.h index 79043d514..fafe99edd 100644 --- a/slsDetectorSoftware/generator/Caller.in.h +++ b/slsDetectorSoftware/generator/Caller.in.h @@ -55,6 +55,7 @@ class Caller { } std::vector getAllCommands(); + std::map GetDeprecatedCommands(); std::string list(int action); // THIS COMMENT TO BE REPLACED BY THE ACTUAL CODE (1) diff --git a/slsDetectorSoftware/generator/commands.yaml b/slsDetectorSoftware/generator/commands.yaml index 2fd5b3ed5..75fc3ef02 100644 --- a/slsDetectorSoftware/generator/commands.yaml +++ b/slsDetectorSoftware/generator/commands.yaml @@ -793,7 +793,7 @@ selinterface: input_types: [ bool ] udp_firstdst: - help: "\n[0 - 31 (or number of udp destinations)]\n\t[Jungfrau][Moench][Gotthard2]\n[0-63]\n\t[Mythen3]\n\n\t One can set which is the first destination that the detector will stream images out from in a round robin fashion. The entry must not have been empty. Default: 0" + help: "\n\t[0 - N]\n\twhere N is the max number of udp destinations - 1.\n\t[Jungfrau][Moench][Gotthard2] Max number of udp destinations is 32.\n\t[Mythen3] Max number of udp destination is 64.\n\t One can set which is the first destination that the detector will stream images out from in a round robin fashion. The entry must not have been empty. Default: 0" inherit_actions: INTEGER_COMMAND_VEC_ID actions: GET: @@ -1074,7 +1074,7 @@ interruptsubframe: input_types: [ bool ] activate: - help: "[0, 1] \n\t[Eiger] 1 is default. 0 deactivates readout and does not send data." + help: "[0, 1]\n\t[Eiger] 1 is default. 0 deactivates readout and does not send data." inherit_actions: INTEGER_COMMAND_VEC_ID actions: GET: @@ -1779,7 +1779,7 @@ udp_validate: clearroi: inherit_actions: EXECUTE_SET_COMMAND - help: "[Gotthard] Resets Region of interest in detector. All channels enabled. Default is all channels enabled." + help: "\n\t[Gotthard] Resets Region of interest in detector. All channels enabled. Default is all channels enabled." actions: PUT: function: clearROI @@ -2034,7 +2034,7 @@ framecounter: ################# GET_COMMAND_HEX ############################ serialnumber: inherit_actions: GET_COMMAND - help: "\n\t[Jungfrau][Moench][Gotthard][Mythen3][Gotthard2][Ctb]\nSerial number of detector." + help: "\n\t[Jungfrau][Moench][Gotthard][Mythen3][Gotthard2][Ctb]\n\tSerial number of detector." actions: GET: function: getSerialNumber @@ -3429,7 +3429,7 @@ udp_dstlist: output: [ ToString(args) ] txdelay: - help: "[n_delay]\n\t[Eiger][Jungfrau][Moench][Mythen3] Set transmission delay for all modules in the detector using the step size provided.Sets up \n\t\t[Eiger] txdelay_left to (2 * mod_index * n_delay), \n\t\t[Eiger] txdelay_right to ((2 * mod_index + 1) * n_delay) and \n\t\t[Eiger] txdelay_frame to (2 *num_modules * n_delay) \n\t\t[Jungfrau][Moench][Mythen3] txdelay_frame to (num_modules * n_delay) \nfor every module." + help: "[n_delay]\n\t[Eiger][Jungfrau][Moench][Mythen3] Set transmission delay for all modules in the detector using the step size provided.Sets up \n\t[Eiger] txdelay_left to (2 * mod_index * n_delay), \n\t[Eiger] txdelay_right to ((2 * mod_index + 1) * n_delay) and \n\t[Eiger] txdelay_frame to (2 *num_modules * n_delay)\n\t[Jungfrau][Moench][Mythen3] txdelay_frame to (num_modules * n_delay) for every module." actions: GET: argc: 0 @@ -3963,7 +3963,7 @@ patloop: output: [level,"' '" , "'['" , "ToStringHex(start, 4)" , '", "' , "ToStringHex(stop, 4)", "']'" ] patloop0: - help: "Deprecated command. Use patloop." + help: "\n\tDeprecated command. Use patloop." inherit_actions: patloop actions: GET: @@ -4010,7 +4010,7 @@ patnloop: output: [ level,"' '" , nloops ] patnloop0: - help: "Deprecated command. Use patnloop." + help: "\n\tDeprecated command. Use patnloop." inherit_actions: patnloop actions: GET: @@ -4056,7 +4056,7 @@ patwait: output: [level,"' '" , "ToStringHex(addr, 4)" ] patwait0: - help: "Deprecated command. Use patwait." + help: "\n\tDeprecated command. Use patwait." inherit_actions: patwait actions: GET: @@ -4102,7 +4102,7 @@ patwaittime: output: [level,"' '" , "waittime" ] patwaittime0: - help: "Deprecated command. Use patwaittime." + help: "\n\tDeprecated command. Use patwaittime." inherit_actions: patwaittime actions: GET: diff --git a/slsDetectorSoftware/generator/extended_commands.yaml b/slsDetectorSoftware/generator/extended_commands.yaml index d60e205d2..91e3b3a4a 100644 --- a/slsDetectorSoftware/generator/extended_commands.yaml +++ b/slsDetectorSoftware/generator/extended_commands.yaml @@ -67,8 +67,7 @@ activate: store_result_in_t: false command_name: activate function_alias: activate - help: "[0, 1] \n\t[Eiger] 1 is default. 0 deactivates readout and does not send\ - \ data." + help: "[0, 1]\n\t[Eiger] 1 is default. 0 deactivates readout and does not send data." infer_action: true template: true adcclk: @@ -1206,8 +1205,8 @@ clearroi: store_result_in_t: false command_name: clearroi function_alias: clearroi - help: '[Gotthard] Resets Region of interest in detector. All channels enabled. Default - is all channels enabled.' + help: "\n\t[Gotthard] Resets Region of interest in detector. All channels enabled.\ + \ Default is all channels enabled." infer_action: true template: true clientversion: @@ -6078,7 +6077,7 @@ patloop0: store_result_in_t: false command_name: patloop0 function_alias: patloop0 - help: Deprecated command. Use patloop. + help: "\n\tDeprecated command. Use patloop." infer_action: true patloop1: actions: @@ -6147,7 +6146,7 @@ patloop1: store_result_in_t: false command_name: patloop1 function_alias: patloop1 - help: Deprecated command. Use patloop. + help: "\n\tDeprecated command. Use patloop." infer_action: true patloop2: actions: @@ -6216,7 +6215,7 @@ patloop2: store_result_in_t: false command_name: patloop2 function_alias: patloop2 - help: Deprecated command. Use patloop. + help: "\n\tDeprecated command. Use patloop." infer_action: true patmask: actions: @@ -6377,7 +6376,7 @@ patnloop0: store_result_in_t: false command_name: patnloop0 function_alias: patnloop0 - help: Deprecated command. Use patnloop. + help: "\n\tDeprecated command. Use patnloop." infer_action: true patnloop1: actions: @@ -6435,7 +6434,7 @@ patnloop1: store_result_in_t: false command_name: patnloop1 function_alias: patnloop1 - help: Deprecated command. Use patnloop. + help: "\n\tDeprecated command. Use patnloop." infer_action: true patnloop2: actions: @@ -6493,7 +6492,7 @@ patnloop2: store_result_in_t: false command_name: patnloop2 function_alias: patnloop2 - help: Deprecated command. Use patnloop. + help: "\n\tDeprecated command. Use patnloop." infer_action: true patsetbit: actions: @@ -6700,7 +6699,7 @@ patwait0: store_result_in_t: false command_name: patwait0 function_alias: patwait0 - help: Deprecated command. Use patwait. + help: "\n\tDeprecated command. Use patwait." infer_action: true patwait1: actions: @@ -6758,7 +6757,7 @@ patwait1: store_result_in_t: false command_name: patwait1 function_alias: patwait1 - help: Deprecated command. Use patwait. + help: "\n\tDeprecated command. Use patwait." infer_action: true patwait2: actions: @@ -6816,7 +6815,7 @@ patwait2: store_result_in_t: false command_name: patwait2 function_alias: patwait2 - help: Deprecated command. Use patwait. + help: "\n\tDeprecated command. Use patwait." infer_action: true patwaittime: actions: @@ -6937,7 +6936,7 @@ patwaittime0: store_result_in_t: false command_name: patwaittime0 function_alias: patwaittime0 - help: Deprecated command. Use patwaittime. + help: "\n\tDeprecated command. Use patwaittime." infer_action: true patwaittime1: actions: @@ -6995,7 +6994,7 @@ patwaittime1: store_result_in_t: false command_name: patwaittime1 function_alias: patwaittime1 - help: Deprecated command. Use patwaittime. + help: "\n\tDeprecated command. Use patwaittime." infer_action: true patwaittime2: actions: @@ -7053,7 +7052,7 @@ patwaittime2: store_result_in_t: false command_name: patwaittime2 function_alias: patwaittime2 - help: Deprecated command. Use patwaittime. + help: "\n\tDeprecated command. Use patwaittime." infer_action: true patword: actions: @@ -9754,7 +9753,7 @@ serialnumber: store_result_in_t: true command_name: serialnumber function_alias: serialnumber - help: "\n\t[Jungfrau][Moench][Gotthard][Mythen3][Gotthard2][Ctb]\nSerial number\ + help: "\n\t[Jungfrau][Moench][Gotthard][Mythen3][Gotthard2][Ctb]\n\tSerial number\ \ of detector." infer_action: true template: true @@ -11913,11 +11912,11 @@ txdelay: command_name: txdelay function_alias: txdelay help: "[n_delay]\n\t[Eiger][Jungfrau][Moench][Mythen3] Set transmission delay for\ - \ all modules in the detector using the step size provided.Sets up \n\t\t[Eiger]\ - \ txdelay_left to (2 * mod_index * n_delay), \n\t\t[Eiger] txdelay_right to ((2\ - \ * mod_index + 1) * n_delay) and \n\t\t[Eiger] txdelay_frame to (2 *num_modules\ - \ * n_delay) \n\t\t[Jungfrau][Moench][Mythen3] txdelay_frame to (num_modules\ - \ * n_delay) \nfor every module." + \ all modules in the detector using the step size provided.Sets up \n\t[Eiger]\ + \ txdelay_left to (2 * mod_index * n_delay), \n\t[Eiger] txdelay_right to ((2\ + \ * mod_index + 1) * n_delay) and \n\t[Eiger] txdelay_frame to (2 *num_modules\ + \ * n_delay)\n\t[Jungfrau][Moench][Mythen3] txdelay_frame to (num_modules * n_delay)\ + \ for every module." infer_action: true txdelay_frame: actions: @@ -12417,10 +12416,11 @@ udp_firstdst: store_result_in_t: false command_name: udp_firstdst function_alias: udp_firstdst - help: "\n[0 - 31 (or number of udp destinations)]\n\t[Jungfrau][Moench][Gotthard2]\n\ - [0-63]\n\t[Mythen3]\n\n\t One can set which is the first destination that the\ - \ detector will stream images out from in a round robin fashion. The entry must\ - \ not have been empty. Default: 0" + help: "\n\t[0 - N]\n\twhere N is the max number of udp destinations - 1.\n\t[Jungfrau][Moench][Gotthard2]\ + \ Max number of udp destinations is 32.\n\t[Mythen3] Max number of udp destination\ + \ is 64.\n\t One can set which is the first destination that the detector will\ + \ stream images out from in a round robin fashion. The entry must not have been\ + \ empty. Default: 0" infer_action: true template: true udp_numdst: diff --git a/slsDetectorSoftware/generator/gen_commands.py b/slsDetectorSoftware/generator/gen_commands.py index 764f087a4..cc1aedf09 100644 --- a/slsDetectorSoftware/generator/gen_commands.py +++ b/slsDetectorSoftware/generator/gen_commands.py @@ -60,7 +60,6 @@ def generate( if command["help"].startswith('code:'): codegen.write_line(command["help"].strip('code:')) else: - codegen.write_line(f'os << "Command: {command_name}" << std::endl;') codegen.write_line(f'os << R"V0G0N({command["help"]} )V0G0N" << std::endl;') codegen.write_line('return os.str();') diff --git a/slsDetectorSoftware/src/Caller.cpp b/slsDetectorSoftware/src/Caller.cpp index a7913d2a2..d1ea4d30f 100644 --- a/slsDetectorSoftware/src/Caller.cpp +++ b/slsDetectorSoftware/src/Caller.cpp @@ -10,8 +10,7 @@ std::string Caller::activate(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: activate" << std::endl; - os << R"V0G0N([0, 1] + os << R"V0G0N([0, 1] [Eiger] 1 is default. 0 deactivates readout and does not send data. )V0G0N" << std::endl; return os.str(); @@ -73,7 +72,6 @@ std::string Caller::adcclk(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: adcclk" << std::endl; os << R"V0G0N([n_clk in MHz] [Ctb] ADC clock frequency in MHz. )V0G0N" << std::endl; @@ -136,7 +134,6 @@ std::string Caller::adcenable(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: adcenable" << std::endl; os << R"V0G0N([bitmask] [Ctb] ADC Enable Mask for 1Gb Enable for each 32 ADC channel. )V0G0N" << std::endl; @@ -199,7 +196,6 @@ std::string Caller::adcenable10g(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: adcenable10g" << std::endl; os << R"V0G0N([bitmask] [Ctb] ADC Enable Mask for 10Gb mode for each 32 ADC channel. However, if any of a consecutive 4 bits are enabled, the complete 4 bits are enabled. )V0G0N" << std::endl; @@ -262,7 +258,6 @@ std::string Caller::adcindex(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: adcindex" << std::endl; os << R"V0G0N([name] [Ctb][Xilinx_Ctb] Get the adc index for the given name. )V0G0N" << std::endl; @@ -311,7 +306,6 @@ std::string Caller::adcinvert(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: adcinvert" << std::endl; os << R"V0G0N([bitmask] [Ctb][Jungfrau][Moench] ADC Inversion Mask. [Jungfrau][Moench] Inversions on top of the default mask. )V0G0N" @@ -375,7 +369,6 @@ std::string Caller::adclist(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: adclist" << std::endl; os << R"V0G0N([adcname1 adcname2 .. adcname32] [Ctb][Xilinx_Ctb] Set the list of adc names for this board. )V0G0N" << std::endl; @@ -452,7 +445,6 @@ std::string Caller::adcname(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: adcname" << std::endl; os << R"V0G0N([0-31][name] [Ctb][Xilinx_Ctb] Set the adc at the given position to the given name. )V0G0N" << std::endl; @@ -539,7 +531,6 @@ std::string Caller::adcphase(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: adcphase" << std::endl; os << R"V0G0N([n_value] [(optional)deg] [Jungfrau][Moench][Ctb][Gotthard] Phase shift of ADC clock. [Jungfrau][Moench] Absolute phase shift. If deg used, then shift in degrees. Changing Speed also resets adcphase to recommended defaults. @@ -671,7 +662,6 @@ std::string Caller::adcpipeline(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: adcpipeline" << std::endl; os << R"V0G0N([n_value] [Ctb][Moench] Pipeline for ADC clock. )V0G0N" << std::endl; @@ -734,7 +724,6 @@ std::string Caller::adcreg(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: adcreg" << std::endl; os << R"V0G0N([address] [value] [Jungfrau][Moench][Ctb][Gotthard] Writes to an adc register in hex. Advanced user Function! )V0G0N" << std::endl; @@ -786,7 +775,6 @@ std::string Caller::adcvpp(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: adcvpp" << std::endl; os << R"V0G0N([dac or mV value][(optional unit) mV] [Ctb] Vpp of ADC. 0 -> 1V ; 1 -> 1.14V ; 2 -> 1.33V ; 3 -> 1.6V ; 4 -> 2V. @@ -905,7 +893,6 @@ std::string Caller::apulse(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: apulse" << std::endl; os << R"V0G0N([0, 1] [Mythen3] Enables or disables analog pulsing. Default is disabled )V0G0N" << std::endl; @@ -968,7 +955,6 @@ std::string Caller::asamples(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: asamples" << std::endl; os << R"V0G0N([n_samples] [Ctb] Number of analog samples expected. )V0G0N" << std::endl; @@ -1031,7 +1017,6 @@ std::string Caller::autocompdisable(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: autocompdisable" << std::endl; os << R"V0G0N([0, 1] [Jungfrau] Auto comparator disable mode. By default, the on-chip gain switching is active during the entire exposure.This mode disables the on - chip gain switching comparator automatically after 93.75% (only for chipv1.0) of exposure time (only for longer than 100us). It is possible to set the duration for chipv1.1 using compdisabletime command. Default is 0 or this mode disabled(comparator enabled throughout). 1 enables mode. 0 disables mode. )V0G0N" @@ -1095,7 +1080,6 @@ std::string Caller::blockingtrigger(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: blockingtrigger" << std::endl; os << R"V0G0N( [Eiger][Jungfrau][Moench] Sends software trigger signal to detector and blocks till the frames are sent out for that trigger. )V0G0N" << std::endl; @@ -1141,7 +1125,6 @@ std::string Caller::burstperiod(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: burstperiod" << std::endl; os << R"V0G0N([duration] [(optional unit) ns|us|ms|s] [Gotthard2] Period between 2 bursts. Only in burst mode and auto timing mode. )V0G0N" << std::endl; @@ -1230,7 +1213,6 @@ std::string Caller::bursts(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: bursts" << std::endl; os << R"V0G0N([n_bursts] [Gotthard2] Number of bursts per aquire. Only in auto timing mode and burst mode. Use timing command to set timing mode and burstmode command to set burst mode. )V0G0N" << std::endl; @@ -1296,7 +1278,6 @@ std::string Caller::burstsl(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: burstsl" << std::endl; os << R"V0G0N( [Gotthard2] Number of bursts left in acquisition. Only in burst auto mode. )V0G0N" << std::endl; @@ -1336,7 +1317,6 @@ std::string Caller::bustest(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: bustest" << std::endl; os << R"V0G0N( [Jungfrau][Moench][Gotthard][Mythen3][Gotthard2][Ctb] Bus test, ie. Writes different values in a R/W register and confirms the writes to check bus. Advanced User function! )V0G0N" @@ -1377,7 +1357,6 @@ std::string Caller::cdsgain(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: cdsgain" << std::endl; os << R"V0G0N([0, 1] [Gotthard2] Enable or disable CDS gain. Default is disabled. )V0G0N" << std::endl; @@ -1440,7 +1419,6 @@ std::string Caller::chipversion(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: chipversion" << std::endl; os << R"V0G0N( [Jungfrau] Returns chip version. Can be 1.0 or 1.1 )V0G0N" << std::endl; @@ -1480,7 +1458,6 @@ std::string Caller::clearbit(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: clearbit" << std::endl; os << R"V0G0N([reg address in hex] [bit index] Clears bit in address. Use --validate to force validation. )V0G0N" @@ -1575,7 +1552,6 @@ std::string Caller::clearbusy(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: clearbusy" << std::endl; os << R"V0G0N( If acquisition aborted during acquire command, use this to clear acquiring flag in shared memory before starting next acquisition )V0G0N" << std::endl; @@ -1618,8 +1594,8 @@ std::string Caller::clearroi(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: clearroi" << std::endl; - os << R"V0G0N([Gotthard] Resets Region of interest in detector. All channels enabled. Default is all channels enabled. )V0G0N" + os << R"V0G0N( + [Gotthard] Resets Region of interest in detector. All channels enabled. Default is all channels enabled. )V0G0N" << std::endl; return os.str(); } @@ -1657,7 +1633,6 @@ std::string Caller::clientversion(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: clientversion" << std::endl; os << R"V0G0N( Client software version )V0G0N" << std::endl; @@ -1697,7 +1672,6 @@ std::string Caller::clkdiv(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: clkdiv" << std::endl; os << R"V0G0N([n_clock] [n_divider] [Gotthard2][Mythen3] Clock Divider of clock n_clock. Must be greater than 1.n [Gotthard2] Clock index range: 0-5 [Mythen3] Clock index range: 0 )V0G0N" @@ -1791,7 +1765,6 @@ std::string Caller::clkfreq(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: clkfreq" << std::endl; os << R"V0G0N([n_clock] [freq_in_Hz] [Gotthard2][Mythen3] Frequency of clock n_clock in Hz. Use clkdiv to set frequency. [Gotthard2] Clock index range: 0-5 @@ -1849,7 +1822,6 @@ std::string Caller::clkphase(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: clkphase" << std::endl; os << R"V0G0N([n_clock] [phase] [deg (optional)] [Gotthard2][Mythen3] Phase of clock n_clock. If deg, then phase shift in degrees, else absolute phase shift values.n [Gotthard2] Clock index range: 0-5 [Mythen3] Clock index range: 0 )V0G0N" @@ -2008,7 +1980,6 @@ std::string Caller::collectionmode(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: collectionmode" << std::endl; os << R"V0G0N([hole|electron] [Jungfrau] Sets collection mode to hole or electron. Default is hole. )V0G0N" << std::endl; @@ -2072,7 +2043,6 @@ std::string Caller::column(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: column" << std::endl; os << R"V0G0N([value] Set Detector column (udp header) to value. Gui uses it to rearrange for complete image )V0G0N" @@ -2136,7 +2106,6 @@ std::string Caller::compdisabletime(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: compdisabletime" << std::endl; os << R"V0G0N([duration] [(optional unit) ns|us|ms|s] [Jungfrau] Time before end of exposure when comparator is disabled. It is only possible for chipv1.1. )V0G0N" << std::endl; @@ -2227,7 +2196,6 @@ std::string Caller::confadc(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: confadc" << std::endl; os << R"V0G0N([chip index 0-9, -1 for all] [adc index 0-31, -1 for all] [7 bit configuration value in hex] [Gotthard2] Sets configuration for specific chip and adc, but configures 1 chip (all adcs for that chip) at a time. )V0G0N" << std::endl; @@ -2317,7 +2285,6 @@ std::string Caller::config(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: config" << std::endl; os << R"V0G0N( Frees shared memory before loading configuration file. Set up once. )V0G0N" << std::endl; @@ -2360,7 +2327,6 @@ std::string Caller::configtransceiver(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: configtransceiver" << std::endl; os << R"V0G0N( [Xilinx Ctb] Waits for transceiver to be aligned. Chip had to be configured (powered on) before this. )V0G0N" << std::endl; @@ -2593,7 +2559,6 @@ std::string Caller::dacindex(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: dacindex" << std::endl; os << R"V0G0N([name] [Ctb][Xilinx_Ctb] Get the dac index for the given name. )V0G0N" << std::endl; @@ -2644,7 +2609,6 @@ std::string Caller::daclist(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: daclist" << std::endl; os << R"V0G0N([dacname1 dacname2 .. dacname18] [Ctb][Xilinx_Ctb] Set the list of dac names for this detector. [All] Gets the list of dac names for every dac for this detector. )V0G0N" @@ -2722,7 +2686,6 @@ std::string Caller::dacname(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: dacname" << std::endl; os << R"V0G0N([0-17][name] [Ctb][Xilinx_Ctb] Set the dac at the given position to the given name. )V0G0N" << std::endl; @@ -2804,7 +2767,6 @@ std::string Caller::datastream(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: datastream" << std::endl; os << R"V0G0N([left|right] [0, 1] [Eiger] Enables or disables data streaming from left or/and right side of detector for 10 GbE mode. 1 (enabled) by default. )V0G0N" << std::endl; @@ -2881,7 +2843,6 @@ std::string Caller::dbitclk(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: dbitclk" << std::endl; os << R"V0G0N([n_clk in MHz] [Ctb] Clock for latching the digital bits in MHz. )V0G0N" << std::endl; @@ -2944,7 +2905,6 @@ std::string Caller::dbitphase(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: dbitphase" << std::endl; os << R"V0G0N([n_value] [(optional)deg] [Ctb][Jungfrau] Phase shift of clock to latch digital bits. Absolute phase shift. If deg used, then shift in degrees. [Ctb]Changing dbitclk also resets dbitphase and sets to previous values. )V0G0N" @@ -3074,7 +3034,6 @@ std::string Caller::dbitpipeline(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: dbitpipeline" << std::endl; os << R"V0G0N([n_value] [Ctb][Gotthard2] Pipeline of the clock for latching digital bits. [Gotthard2] Options: 0-7 @@ -3139,7 +3098,6 @@ std::string Caller::defaultdac(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: defaultdac" << std::endl; os << R"V0G0N([dac name][value][(optional)setting] Sets the default for that dac to this value. [Jungfrau][Moench][Mythen3] When settings is provided, it sets the default value only for that setting )V0G0N" @@ -3267,7 +3225,6 @@ std::string Caller::defaultpattern(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: defaultpattern" << std::endl; os << R"V0G0N( [Mythen3] Loads and runs default pattern in pattern generator. It is to go back to initial settings. )V0G0N" << std::endl; @@ -3307,7 +3264,6 @@ std::string Caller::delay(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: delay" << std::endl; os << R"V0G0N([duration] [(optional unit) ns|us|ms|s] [Jungfrau][Moench][Gotthard][Mythen3][Gotthard2][Ctb][Moench][Xilinx Ctb] Delay after trigger )V0G0N" << std::endl; @@ -3396,7 +3352,6 @@ std::string Caller::delayl(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: delayl" << std::endl; os << R"V0G0N( [Gotthard][Jungfrau][Moench][Mythen3][Gotthard2][Ctb][Xilinx Ctb] Delay Left in Acquisition. [Gotthard2] only in continuous mode. )V0G0N" @@ -3445,7 +3400,6 @@ std::string Caller::detectorserverversion(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: detectorserverversion" << std::endl; os << R"V0G0N( On-board detector server software version )V0G0N" << std::endl; @@ -3485,7 +3439,6 @@ std::string Caller::detsize(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: detsize" << std::endl; os << R"V0G0N([nx] [ny] Detector size, ie. Number of channels in x and y dim. This is used to calculate module coordinates included in UDP data. By default, it adds module in y dimension for 2d detectors and in x dimension for 1d detectors packet header. )V0G0N" @@ -3544,7 +3497,6 @@ std::string Caller::diodelay(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: diodelay" << std::endl; os << R"V0G0N([0-775] [Ctb] Delay for diode. Delay is in ps and max of 775 ps. Resolution is 25 ps. )V0G0N" << std::endl; @@ -3596,7 +3548,6 @@ std::string Caller::dpulse(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: dpulse" << std::endl; os << R"V0G0N([0, 1] [Mythen3] Enables or disables digital pulsing. Default is disabled )V0G0N" << std::endl; @@ -3659,7 +3610,6 @@ std::string Caller::dr(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: dr" << std::endl; os << R"V0G0N([value] Dynamic Range or number of bits per pixel in detector. [Eiger] Options: 4, 8, 12, 16, 32. If set to 32, also sets clkdivider to 2, else to 0. @@ -3728,7 +3678,6 @@ std::string Caller::drlist(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: drlist" << std::endl; os << R"V0G0N( Gets the list of dynamic ranges for this detector. )V0G0N" << std::endl; @@ -3768,7 +3717,6 @@ std::string Caller::dsamples(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: dsamples" << std::endl; os << R"V0G0N([n_value] [Ctb] Number of digital samples expected. )V0G0N" << std::endl; @@ -3831,7 +3779,6 @@ std::string Caller::exptime(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: exptime" << std::endl; os << R"V0G0N([duration] [(optional unit) ns|us|ms|s] [Eiger][Jungfrau][Moench][Gotthard][Gotthard2][Ctb][Xilinx Ctb] Exposure time [Mythen3] Exposure time of all gate signals in auto and trigger mode (internal gating). To specify gate index, use exptime1, exptime2, exptime3. )V0G0N" @@ -3938,7 +3885,6 @@ std::string Caller::exptime1(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: exptime1" << std::endl; os << R"V0G0N([n_value] [Mythen3] Exposure time of gate signal 1 in auto and trigger mode (internal gating). )V0G0N" << std::endl; @@ -4037,7 +3983,6 @@ std::string Caller::exptime2(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: exptime2" << std::endl; os << R"V0G0N([n_value] [Mythen3] Exposure time of gate signal 2 in auto and trigger mode (internal gating). )V0G0N" << std::endl; @@ -4136,7 +4081,6 @@ std::string Caller::exptime3(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: exptime3" << std::endl; os << R"V0G0N([n_value] [Mythen3] Exposure time of gate signal 3 in auto and trigger mode (internal gating). )V0G0N" << std::endl; @@ -4235,7 +4179,6 @@ std::string Caller::exptimel(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: exptimel" << std::endl; os << R"V0G0N([(optional unit) ns|us|ms|s] [Gotthard] Exposure time left for current frame. )V0G0N" << std::endl; @@ -4283,7 +4226,6 @@ std::string Caller::extrastoragecells(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: extrastoragecells" << std::endl; os << R"V0G0N([0-15] [Jungfrau] Only for chipv1.0. Number of additional storage cells. Default is 0. For advanced users only. The #images = #frames x #triggers x (#extrastoragecells + 1). )V0G0N" @@ -4352,7 +4294,6 @@ std::string Caller::extsampling(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: extsampling" << std::endl; os << R"V0G0N([0, 1] [Ctb] Enable for external sampling signal for digital data to signal by extsampling src command. For advanced users only. )V0G0N" << std::endl; @@ -4415,7 +4356,6 @@ std::string Caller::extsamplingsrc(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: extsamplingsrc" << std::endl; os << R"V0G0N([0-63] [Ctb] Sampling source signal for digital data. For advanced users only. )V0G0N" << std::endl; @@ -4478,7 +4418,6 @@ std::string Caller::extsig(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: extsig" << std::endl; os << R"V0G0N([n_signal] [signal_type] [Gotthard][Mythen3] External signal mode for trigger timing mode. [Gotthard] [0] [trigger_in_rising_edge|trigger_in_falling_edge] @@ -4558,7 +4497,6 @@ std::string Caller::fformat(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: fformat" << std::endl; os << R"V0G0N([binary|hdf5] File format of data file. For HDF5, package must be compiled with HDF5 flags. Default is binary. )V0G0N" << std::endl; @@ -4622,7 +4560,6 @@ std::string Caller::filtercells(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: filtercells" << std::endl; os << R"V0G0N([0-12] [Jungfrau] Set Filter Cell. Only for chipv1.1. Advanced user Command )V0G0N" << std::endl; @@ -4685,7 +4622,6 @@ std::string Caller::filterresistor(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: filterresistor" << std::endl; os << R"V0G0N([value] [Gotthard2][Jungfrau] Set filter resistor. Increasing values for increasing resistance. [Gotthard2] Options: [0|1|2|3]. Default is 0. [Jungfrau] Options: [0|1]. Default is 1. )V0G0N" @@ -4749,7 +4685,6 @@ std::string Caller::findex(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: findex" << std::endl; os << R"V0G0N([n_value] File or Acquisition index. )V0G0N" << std::endl; @@ -4812,7 +4747,6 @@ std::string Caller::firmwaretest(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: firmwaretest" << std::endl; os << R"V0G0N( [Jungfrau][Moench][Gotthard][Mythen3][Gotthard2][Ctb][Xilinx Ctb] Firmware test, ie. reads a read fixed pattern from a register. )V0G0N" << std::endl; @@ -4852,7 +4786,6 @@ std::string Caller::firmwareversion(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: firmwareversion" << std::endl; os << R"V0G0N( Firmware version of detector in format [0xYYMMDD] or an increasing 2 digit number for Eiger. )V0G0N" << std::endl; @@ -4904,7 +4837,6 @@ std::string Caller::fliprows(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: fliprows" << std::endl; os << R"V0G0N([0, 1] [Eiger] flips rows paramater sent to slsreceiver to stream as json parameter to flip rows in gui [Jungfrau][Moench] flips rows in the detector itself. For bottom module and number of interfaces must be set to 2. slsReceiver and slsDetectorGui does not handle. )V0G0N" @@ -4968,7 +4900,6 @@ std::string Caller::flowcontrol10g(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: flowcontrol10g" << std::endl; os << R"V0G0N([0, 1] [Eiger][Jungfrau][Moench] 10GbE Flow Control. )V0G0N" << std::endl; @@ -5031,7 +4962,6 @@ std::string Caller::fmaster(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: fmaster" << std::endl; os << R"V0G0N([0, 1] Enable or disable receiver master file. Default is 1. )V0G0N" << std::endl; @@ -5100,7 +5030,6 @@ std::string Caller::fname(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: fname" << std::endl; os << R"V0G0N([name] File name prefix for output data file. Default is run. File name: [file name prefix]_d[detector index]_f[sub file index]_[acquisition/file index].raw. )V0G0N" << std::endl; @@ -5157,7 +5086,6 @@ std::string Caller::foverwrite(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: foverwrite" << std::endl; os << R"V0G0N([0, 1] Enable or disable file overwriting. Default is 1. )V0G0N" << std::endl; @@ -5220,7 +5148,6 @@ std::string Caller::fpath(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: fpath" << std::endl; os << R"V0G0N([path] Directory where output data files are written in receiver. Default is '/'. If path does not exist and fwrite enabled, it will try to create it at start of acquisition. )V0G0N" @@ -5278,7 +5205,6 @@ std::string Caller::framecounter(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: framecounter" << std::endl; os << R"V0G0N( [Jungfrau][Moench][Mythen3][Gotthard2][Ctb][Xilinx Ctb] Number of frames from start run control. [Gotthard2] only in continuous mode. )V0G0N" @@ -5319,7 +5245,6 @@ std::string Caller::frames(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: frames" << std::endl; os << R"V0G0N([n_frames] Number of frames per acquisition. In trigger mode, number of frames per trigger. Cannot be set in modular level. @@ -5388,7 +5313,6 @@ std::string Caller::framesl(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: framesl" << std::endl; os << R"V0G0N( [Gotthard][Jungfrau][Moench][Mythen3][Gotthard2][Ctb][Xilinx Ctb] Number of frames left in acquisition. [Gotthard2] only in continuous auto mode. )V0G0N" @@ -5429,7 +5353,6 @@ std::string Caller::frametime(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: frametime" << std::endl; os << R"V0G0N([(optional unit) ns|us|ms|s] [Jungfrau][Moench][Mythen3][Gotthard2][Ctb][Xilinx Ctb] Timestamp at a frame start. [Gotthard2] not in burst and auto mode. )V0G0N" @@ -5478,7 +5401,6 @@ std::string Caller::fwrite(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: fwrite" << std::endl; os << R"V0G0N([0, 1] Enable or disable receiver file write. Default is 0. )V0G0N" << std::endl; @@ -5541,7 +5463,6 @@ std::string Caller::gainmode(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: gainmode" << std::endl; os << R"V0G0N([dynamic|forceswitchg1|forceswitchg2|fixg1|fixg2|fixg0] [Jungfrau] Gain mode. CAUTION: Do not use fixg0 without caution, you can damage the detector!!! )V0G0N" @@ -5606,7 +5527,6 @@ std::string Caller::gappixels(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: gappixels" << std::endl; os << R"V0G0N([0, 1] [Eiger][Jungfrau][Moench] Include Gap pixels in client data call back in Detecor api. Will not be in detector streaming, receiver file or streaming. Default is 0. )V0G0N" << std::endl; @@ -5675,7 +5595,6 @@ std::string Caller::gatedelay(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: gatedelay" << std::endl; os << R"V0G0N([duration] [(optional unit) ns|us|ms|s] [Mythen3] Gate Delay of all gate signals in auto and trigger mode (internal gating). )V0G0N" << std::endl; @@ -5770,7 +5689,6 @@ std::string Caller::gatedelay1(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: gatedelay1" << std::endl; os << R"V0G0N([duration] [(optional unit) ns|us|ms|s] [Mythen3] Gate Delay of gate signal 1 in auto and trigger mode (internal gating). )V0G0N" << std::endl; @@ -5869,7 +5787,6 @@ std::string Caller::gatedelay2(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: gatedelay2" << std::endl; os << R"V0G0N([duration] [(optional unit) ns|us|ms|s] [Mythen3] Gate Delay of gate signal 2 in auto and trigger mode (internal gating). )V0G0N" << std::endl; @@ -5968,7 +5885,6 @@ std::string Caller::gatedelay3(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: gatedelay3" << std::endl; os << R"V0G0N([duration] [(optional unit) ns|us|ms|s] [Mythen3] Gate Delay of gate signal 3 in auto and trigger mode (internal gating). )V0G0N" << std::endl; @@ -6067,7 +5983,6 @@ std::string Caller::gates(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: gates" << std::endl; os << R"V0G0N([n_gates] [Mythen3] Number of external gates in gating or trigger_gating mode (external gating). )V0G0N" << std::endl; @@ -6130,7 +6045,6 @@ std::string Caller::getbit(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: getbit" << std::endl; os << R"V0G0N([reg address in hex] [bit index] Gets bit in address. )V0G0N" << std::endl; @@ -6185,7 +6099,6 @@ std::string Caller::hardwareversion(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: hardwareversion" << std::endl; os << R"V0G0N( Hardware version of detector. [Eiger] Hardware version of front FPGA on detector. )V0G0N" @@ -6226,7 +6139,6 @@ std::string Caller::highvoltage(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: highvoltage" << std::endl; os << R"V0G0N([n_value] High voltage to the sensor in Voltage. [Gotthard] [0|90|110|120|150|180|200] @@ -6292,7 +6204,6 @@ std::string Caller::im_a(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: im_a" << std::endl; os << R"V0G0N( [Ctb] Measured current of power supply a in mA. )V0G0N" << std::endl; @@ -6333,7 +6244,6 @@ std::string Caller::im_b(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: im_b" << std::endl; os << R"V0G0N( [Ctb] Measured current of power supply b in mA. )V0G0N" << std::endl; @@ -6374,7 +6284,6 @@ std::string Caller::im_c(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: im_c" << std::endl; os << R"V0G0N( [Ctb] Measured current of power supply c in mA. )V0G0N" << std::endl; @@ -6415,7 +6324,6 @@ std::string Caller::im_d(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: im_d" << std::endl; os << R"V0G0N( [Ctb] Measured current of power supply d in mA. )V0G0N" << std::endl; @@ -6456,7 +6364,6 @@ std::string Caller::im_io(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: im_io" << std::endl; os << R"V0G0N( [Ctb] Measured current of power supply io in mA. )V0G0N" << std::endl; @@ -6497,7 +6404,6 @@ std::string Caller::imagetest(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: imagetest" << std::endl; os << R"V0G0N([0, 1] [Gotthard] 1 adds channel intensity with precalculated values when taking an acquisition. Default is 0. [Eiger][Jungfrau][Moench] Only for Virtual servers. If 0, each pixel intensity incremented by 1. If 1, all pixels almost saturated. )V0G0N" @@ -6561,7 +6467,6 @@ std::string Caller::initialchecks(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: initialchecks" << std::endl; os << R"V0G0N([0, 1] [Mythen3][Gotthard2] Enable or disable intial compatibility and other checks at detector start up. It is enabled by default. Must come before 'hostname' command to take effect. Can be used to reprogram fpga when current firmware is incompatible. Advanced User function! )V0G0N" @@ -6633,7 +6538,6 @@ std::string Caller::inj_ch(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: inj_ch" << std::endl; os << R"V0G0N([offset] [increment] [Gotthard2] Inject channels with current source for calibration. Offset is starting channel that is injected, increment determines succeeding channels to be injected. )V0G0N" << std::endl; @@ -6702,7 +6606,6 @@ std::string Caller::interpolation(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: interpolation" << std::endl; os << R"V0G0N([0, 1] [Mythen3] Enables or disables interpolation. Default is disabled. Interpolation mode enables all counters and disables vth3. Disabling sets back counter mask and vth3. )V0G0N" << std::endl; @@ -6765,7 +6668,6 @@ std::string Caller::interruptsubframe(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: interruptsubframe" << std::endl; os << R"V0G0N([0, 1] [Eiger] 1 interrupts last subframe at required exposure time. 0 will wait for last sub frame to finish exposing. 0 is default. )V0G0N" << std::endl; @@ -6828,7 +6730,6 @@ std::string Caller::kernelversion(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: kernelversion" << std::endl; os << R"V0G0N( Get kernel version on the detector including time and date. )V0G0N" << std::endl; @@ -6868,7 +6769,6 @@ std::string Caller::lastclient(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: lastclient" << std::endl; os << R"V0G0N( Client IP Address that last communicated with the detector. )V0G0N" << std::endl; @@ -6908,7 +6808,6 @@ std::string Caller::led(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: led" << std::endl; os << R"V0G0N([0, 1] [Ctb] Switches on/off all LEDs. )V0G0N" << std::endl; @@ -6971,7 +6870,6 @@ std::string Caller::lock(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: lock" << std::endl; os << R"V0G0N([0, 1] Lock detector to one IP, 1: locks. Default is unlocked )V0G0N" << std::endl; @@ -7034,7 +6932,6 @@ std::string Caller::master(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: master" << std::endl; os << R"V0G0N([0, 1] [Eiger][Gotthard2][Jungfrau][Moench] Sets (half) module to master and other(s) to slaves. [Gotthard][Gotthard2][Mythen3][Eiger][Jungfrau][Moench] Gets if the current (half) module is master. )V0G0N" @@ -7098,7 +6995,6 @@ std::string Caller::maxadcphaseshift(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: maxadcphaseshift" << std::endl; os << R"V0G0N( [Jungfrau][Moench][Ctb] Absolute maximum Phase shift of ADC clock. )V0G0N" << std::endl; @@ -7138,7 +7034,6 @@ std::string Caller::maxclkphaseshift(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: maxclkphaseshift" << std::endl; os << R"V0G0N([n_clock] [Gotthard2][Mythen3] Absolute Maximum Phase shift of clock n_clock.n [Gotthard2] Clock index range: 0-5 [Mythen3] Clock index range: 0 )V0G0N" @@ -7195,7 +7090,6 @@ std::string Caller::maxdbitphaseshift(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: maxdbitphaseshift" << std::endl; os << R"V0G0N( [Ctb][Jungfrau] Absolute maximum Phase shift of of the clock to latch digital bits. )V0G0N" << std::endl; @@ -7235,7 +7129,6 @@ std::string Caller::measuredperiod(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: measuredperiod" << std::endl; os << R"V0G0N([(optional unit) ns|us|ms|s] [Eiger] Measured frame period between last frame and previous one. Can be measured with minimum 2 frames in an acquisition. )V0G0N" << std::endl; @@ -7283,7 +7176,6 @@ std::string Caller::measuredsubperiod(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: measuredsubperiod" << std::endl; os << R"V0G0N([(optional unit) ns|us|ms|s] [Eiger] Measured sub frame period between last sub frame and previous one. )V0G0N" << std::endl; @@ -7331,7 +7223,6 @@ std::string Caller::moduleid(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: moduleid" << std::endl; os << R"V0G0N( [Gotthard2][Eiger][Mythen3][Jungfrau][Moench] 16 bit value (ideally unique) that is streamed out in the UDP header of the detector. Picked up from a file on the module. )V0G0N" << std::endl; @@ -7371,7 +7262,6 @@ std::string Caller::nextframenumber(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: nextframenumber" << std::endl; os << R"V0G0N([n_value] [Eiger][Jungfrau][Moench][Ctb][Xilinx Ctb][Gotthard2] Next frame number. Stopping acquisition might result in different frame numbers for different modules. So, after stopping, next frame number (max + 1) is set for all the modules afterwards. )V0G0N" << std::endl; @@ -7434,7 +7324,6 @@ std::string Caller::nmod(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: nmod" << std::endl; os << R"V0G0N( Number of modules in shared memory. )V0G0N" << std::endl; @@ -7474,7 +7363,6 @@ std::string Caller::numinterfaces(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: numinterfaces" << std::endl; os << R"V0G0N([1, 2] [Jungfrau][Moench] Number of udp interfaces to stream data from detector. Default: 1. Also enables second interface in receiver for listening (Writes a file per interface if writing enabled). @@ -7540,7 +7428,6 @@ std::string Caller::overflow(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: overflow" << std::endl; os << R"V0G0N([0, 1] [Eiger] Enable or disable show overflow flag in 32 bit mode. Default is disabled. )V0G0N" << std::endl; @@ -7603,7 +7490,6 @@ std::string Caller::packageversion(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: packageversion" << std::endl; os << R"V0G0N( Package version. )V0G0N" << std::endl; @@ -7643,7 +7529,6 @@ std::string Caller::parallel(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: parallel" << std::endl; os << R"V0G0N([0, 1] [Eiger][Mythen3][Gotthard2][Moench] Enable or disable parallel mode. [Mythen3] If exptime is too short, the acquisition will return ERROR status and take fewer frames than expected. @@ -7709,7 +7594,6 @@ std::string Caller::parameters(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: parameters" << std::endl; os << R"V0G0N( Sets detector measurement parameters to those contained in fname. Set up per measurement. )V0G0N" << std::endl; @@ -7752,7 +7636,6 @@ std::string Caller::partialreset(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: partialreset" << std::endl; os << R"V0G0N([0, 1] [Eiger] Sets up detector to do partial or complete reset at start of acquisition. 0 complete reset, 1 partial reset. Default is complete reset. Advanced function! )V0G0N" << std::endl; @@ -7815,7 +7698,6 @@ std::string Caller::patfname(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: patfname" << std::endl; os << R"V0G0N( [Ctb][Mythen3][Xilinx Ctb] Gets the pattern file name including path of the last pattern uploaded. Returns an empty if nothing was uploaded or via a server default file )V0G0N" << std::endl; @@ -7855,7 +7737,6 @@ std::string Caller::patioctrl(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: patioctrl" << std::endl; os << R"V0G0N([64 bit mask] [Ctb] 64 bit mask defining input (0) and output (1) signals. )V0G0N" << std::endl; @@ -7918,7 +7799,6 @@ std::string Caller::patlimits(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: patlimits" << std::endl; os << R"V0G0N([start addr] [stop addr] [Ctb][Mythen3][Xilinx Ctb] Limits of complete pattern )V0G0N" << std::endl; @@ -7971,7 +7851,6 @@ std::string Caller::patloop(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: patloop" << std::endl; os << R"V0G0N([0-6] [start addr] [stop addr] [Ctb][Mythen3][Xilinx Ctb] Limits of the loop level provided. [Mythen3] Level options: 0-3 only. )V0G0N" @@ -8029,8 +7908,9 @@ std::string Caller::patloop0(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: patloop0" << std::endl; - os << R"V0G0N(Deprecated command. Use patloop. )V0G0N" << std::endl; + os << R"V0G0N( + Deprecated command. Use patloop. )V0G0N" + << std::endl; return os.str(); } @@ -8084,8 +7964,9 @@ std::string Caller::patloop1(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: patloop1" << std::endl; - os << R"V0G0N(Deprecated command. Use patloop. )V0G0N" << std::endl; + os << R"V0G0N( + Deprecated command. Use patloop. )V0G0N" + << std::endl; return os.str(); } @@ -8139,8 +8020,9 @@ std::string Caller::patloop2(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: patloop2" << std::endl; - os << R"V0G0N(Deprecated command. Use patloop. )V0G0N" << std::endl; + os << R"V0G0N( + Deprecated command. Use patloop. )V0G0N" + << std::endl; return os.str(); } @@ -8194,7 +8076,6 @@ std::string Caller::patmask(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: patmask" << std::endl; os << R"V0G0N([64 bit mask] [Ctb][Mythen3][Xilinx Ctb] Selects the bits that will have a pattern mask applied to the selected patmask for every pattern. )V0G0N" << std::endl; @@ -8257,7 +8138,6 @@ std::string Caller::patnloop(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: patnloop" << std::endl; os << R"V0G0N([0-6] [n_cycles] [Ctb][Mythen3][Xilinx Ctb] Number of cycles of the loop level provided. [Mythen3] Level options: 0-3 only. )V0G0N" @@ -8313,8 +8193,9 @@ std::string Caller::patnloop0(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: patnloop0" << std::endl; - os << R"V0G0N(Deprecated command. Use patnloop. )V0G0N" << std::endl; + os << R"V0G0N( + Deprecated command. Use patnloop. )V0G0N" + << std::endl; return os.str(); } @@ -8366,8 +8247,9 @@ std::string Caller::patnloop1(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: patnloop1" << std::endl; - os << R"V0G0N(Deprecated command. Use patnloop. )V0G0N" << std::endl; + os << R"V0G0N( + Deprecated command. Use patnloop. )V0G0N" + << std::endl; return os.str(); } @@ -8419,8 +8301,9 @@ std::string Caller::patnloop2(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: patnloop2" << std::endl; - os << R"V0G0N(Deprecated command. Use patnloop. )V0G0N" << std::endl; + os << R"V0G0N( + Deprecated command. Use patnloop. )V0G0N" + << std::endl; return os.str(); } @@ -8472,7 +8355,6 @@ std::string Caller::patsetbit(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: patsetbit" << std::endl; os << R"V0G0N([64 bit mask] [Ctb][Mythen3][Xilinx Ctb] Sets the mask applied to every pattern to the selected bits. )V0G0N" << std::endl; @@ -8535,7 +8417,6 @@ std::string Caller::pattern(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: patternX" << std::endl; os << R"V0G0N([fname] [Mythen3][Ctb][Xilinx Ctb] Loads ASCII pattern file directly to server (instead of executing line by line) )V0G0N" << std::endl; @@ -8575,7 +8456,6 @@ std::string Caller::patternstart(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: patternstart" << std::endl; os << R"V0G0N( [Mythen3] Starts Pattern )V0G0N" << std::endl; @@ -8615,7 +8495,6 @@ std::string Caller::patwait(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: patwait" << std::endl; os << R"V0G0N([0-6] [addr] [Ctb][Mythen3][Xilinx Ctb] Wait address for loop level provided. [Mythen3] Level options: 0-3 only. )V0G0N" @@ -8670,8 +8549,9 @@ std::string Caller::patwait0(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: patwait0" << std::endl; - os << R"V0G0N(Deprecated command. Use patwait. )V0G0N" << std::endl; + os << R"V0G0N( + Deprecated command. Use patwait. )V0G0N" + << std::endl; return os.str(); } @@ -8722,8 +8602,9 @@ std::string Caller::patwait1(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: patwait1" << std::endl; - os << R"V0G0N(Deprecated command. Use patwait. )V0G0N" << std::endl; + os << R"V0G0N( + Deprecated command. Use patwait. )V0G0N" + << std::endl; return os.str(); } @@ -8774,8 +8655,9 @@ std::string Caller::patwait2(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: patwait2" << std::endl; - os << R"V0G0N(Deprecated command. Use patwait. )V0G0N" << std::endl; + os << R"V0G0N( + Deprecated command. Use patwait. )V0G0N" + << std::endl; return os.str(); } @@ -8826,7 +8708,6 @@ std::string Caller::patwaittime(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: patwaittime" << std::endl; os << R"V0G0N([0-6] [n_clk] [Ctb][Mythen3][Xilinx Ctb] Wait time in clock cycles for the loop provided. [Mythen3] Level options: 0-3 only. )V0G0N" @@ -8881,8 +8762,9 @@ std::string Caller::patwaittime0(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: patwaittime0" << std::endl; - os << R"V0G0N(Deprecated command. Use patwaittime. )V0G0N" << std::endl; + os << R"V0G0N( + Deprecated command. Use patwaittime. )V0G0N" + << std::endl; return os.str(); } @@ -8933,8 +8815,9 @@ std::string Caller::patwaittime1(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: patwaittime1" << std::endl; - os << R"V0G0N(Deprecated command. Use patwaittime. )V0G0N" << std::endl; + os << R"V0G0N( + Deprecated command. Use patwaittime. )V0G0N" + << std::endl; return os.str(); } @@ -8985,8 +8868,9 @@ std::string Caller::patwaittime2(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: patwaittime2" << std::endl; - os << R"V0G0N(Deprecated command. Use patwaittime. )V0G0N" << std::endl; + os << R"V0G0N( + Deprecated command. Use patwaittime. )V0G0N" + << std::endl; return os.str(); } @@ -9037,7 +8921,6 @@ std::string Caller::patword(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: patword" << std::endl; os << R"V0G0N([step or address] [64 bit mask] [Ctb][Mythen3][Xilinx Ctb] 64 bit pattern at address of pattern memory. [Ctb] read is same as executing pattern )V0G0N" @@ -9115,7 +8998,6 @@ std::string Caller::pedestalmode(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: pedestalmode" << std::endl; os << R"V0G0N( [frames] [loops] [Jungfrau] Enable pedestal mode. The number of frames or triggers is overwritten by: @@ -9196,7 +9078,6 @@ std::string Caller::period(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: period" << std::endl; os << R"V0G0N([duration] [(optional unit) ns|us|ms|s] Period between frames )V0G0N" << std::endl; @@ -9285,7 +9166,6 @@ std::string Caller::periodl(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: periodl" << std::endl; os << R"V0G0N( [Gotthard][Jungfrau][Moench][Ctb][Mythen3][Gotthard2][Xilinx Ctb] Period left for current frame. [Gotthard2] only in continuous mode. )V0G0N" @@ -9334,7 +9214,6 @@ std::string Caller::polarity(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: polarity" << std::endl; os << R"V0G0N([pos|neg] [Mythen3] Sets negative or positive polarity. Default is positive )V0G0N" << std::endl; @@ -9398,7 +9277,6 @@ std::string Caller::port(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: port" << std::endl; os << R"V0G0N([n] Port number of the control server on detector for detector-client tcp interface. Default is 1952. Normally unchanged. Set different ports for virtual servers on same pc. )V0G0N" << std::endl; @@ -9461,7 +9339,6 @@ std::string Caller::powerchip(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: powerchip" << std::endl; os << R"V0G0N([0, 1] [Jungfrau][Moench][Mythen3][Gotthard2][Xilinx Ctb] Power the chip. [Jungfrau][Moench] Default is 0. Get will return power status. Can be off if temperature event occured (temperature over temp_threshold with temp_control enabled. Will configure chip (only chip v1.1) @@ -9527,7 +9404,6 @@ std::string Caller::powerindex(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: powerindex" << std::endl; os << R"V0G0N([name] [Ctb][Xilinx_Ctb] Get the power index for the given name. )V0G0N" << std::endl; @@ -9578,7 +9454,6 @@ std::string Caller::powerlist(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: powerlist" << std::endl; os << R"V0G0N([powername1 powername2 .. powername4] [Ctb][Xilinx_Ctb] Set the list of power names for this board. )V0G0N" << std::endl; @@ -9655,7 +9530,6 @@ std::string Caller::powername(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: powername" << std::endl; os << R"V0G0N([0-4][name] [Ctb][Xilinx_Ctb] Set the power at the given position to the given name. )V0G0N" << std::endl; @@ -9737,7 +9611,6 @@ std::string Caller::powervalues(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: powervalues" << std::endl; os << R"V0G0N([name] [Ctb][Xilinx_Ctb] Get values of all powers. )V0G0N" << std::endl; @@ -9797,7 +9670,6 @@ std::string Caller::programfpga(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: programfpga" << std::endl; os << R"V0G0N([fname.pof | fname.rbf (full path)][(opitonal)--force-delete-normal-file] [Jungfrau][Moench][Ctb] Programs FPGA from pof file (full path). Then, detector controller is rebooted. Use --force-delete-normal-file argument, if normal file found in device tree, it must be deleted, a new device drive created and programming continued. @@ -9863,7 +9735,6 @@ std::string Caller::pulse(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: pulse" << std::endl; os << R"V0G0N([n_times] [x] [y] [Eiger] Pulse pixel n number of times at coordinates (x, y). Advanced User! )V0G0N" << std::endl; @@ -9913,7 +9784,6 @@ std::string Caller::pulsechip(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: pulsechip" << std::endl; os << R"V0G0N([n_times] [Eiger] Pulse chip n times. If n is -1, resets to normal mode (reset chip completely at start of acquisition, where partialreset = 0). Advanced User! )V0G0N" << std::endl; @@ -9959,7 +9829,6 @@ std::string Caller::pulsenmove(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: pulsenmove" << std::endl; os << R"V0G0N([n_times] [x] [y] [Eiger] Pulse pixel n number of times and moves relatively by (x, y). Advanced User! )V0G0N" << std::endl; @@ -10009,7 +9878,6 @@ std::string Caller::pumpprobe(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: pumpprobe" << std::endl; os << R"V0G0N([0, 1] [Mythen3] Enables or disables pump probe mode. Default is disabled. Pump probe mode only enables vth2. Disabling sets back to previous value. )V0G0N" << std::endl; @@ -10072,7 +9940,6 @@ std::string Caller::quad(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: quad" << std::endl; os << R"V0G0N([0, 1] [Eiger] Sets detector size to a quad. 0 (disabled) is default. (Specific hardware required). )V0G0N" << std::endl; @@ -10138,7 +10005,6 @@ std::string Caller::readnrows(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: readnrows" << std::endl; os << R"V0G0N( [1-256] [Eiger] Number of rows to readout per half module starting from the centre. Options: 0 - 256. 256 is default. The permissible values depend on dynamic range and 10Gbe enabled. @@ -10205,7 +10071,6 @@ std::string Caller::readout(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: readout" << std::endl; os << R"V0G0N( [Mythen3] Starts detector readout. Status changes to TRANSMITTING and automatically returns to idle at the end of readout. )V0G0N" << std::endl; @@ -10248,7 +10113,6 @@ std::string Caller::readoutspeed(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: readoutspeed" << std::endl; os << R"V0G0N( [0 or full_speed|1 or half_speed|2 or quarter_speed] [Eiger][Jungfrau][Moench][Mythen3] Readout speed of chip. @@ -10336,7 +10200,6 @@ std::string Caller::readoutspeedlist(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: readoutspeedlist" << std::endl; os << R"V0G0N( List of readout speed levels implemented for this detector. )V0G0N" << std::endl; @@ -10376,7 +10239,6 @@ std::string Caller::rebootcontroller(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: rebootcontroller" << std::endl; os << R"V0G0N( [Jungfrau][Moench][Ctb][Gotthard][Mythen3][Gotthard2][Xilinx Ctb] Reboot controller of detector. )V0G0N" << std::endl; @@ -10416,7 +10278,6 @@ std::string Caller::reg(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: reg" << std::endl; os << R"V0G0N([address] [32 bit value][(optional)--validate] [Mythen3][Gotthard2] Reads/writes to a 32 bit register in hex. Advanced Function! Goes to stop server. Hence, can be called while calling blocking acquire(). @@ -10530,7 +10391,6 @@ std::string Caller::resetdacs(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: resetdacs" << std::endl; os << R"V0G0N([(optional) hard] [Eiger][Jungfrau][Moench][Gotthard][Gotthard2][Mythen3]Reset dac values to the defaults. A 'hard' optional reset will reset the dacs to the hardcoded defaults in on-board detector server. )V0G0N" << std::endl; @@ -10582,7 +10442,6 @@ std::string Caller::resetfpga(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: resetfpga" << std::endl; os << R"V0G0N( [Jungfrau][Moench][Ctb][Xilinx Ctb] Reset FPGA. )V0G0N" << std::endl; @@ -10622,7 +10481,6 @@ std::string Caller::roi(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: roi" << std::endl; os << R"V0G0N([xmin] [xmax] [Gotthard] Region of interest in detector. Options: Only a single ROI per module. @@ -10688,7 +10546,6 @@ std::string Caller::romode(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: romode" << std::endl; os << R"V0G0N([analog|digital|analog_digital|transceiver|digital_transceiver] [Ctb][xilinx Ctb] Readout mode. [Ctb] Default is analog. [Xilinx Ctb] Default is Transceiver (only one implemented so far) )V0G0N" << std::endl; @@ -10752,7 +10609,6 @@ std::string Caller::row(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: row" << std::endl; os << R"V0G0N([value] Set Detector row (udp header) to value. Gui uses it to rearrange for complete image )V0G0N" @@ -10816,7 +10672,6 @@ std::string Caller::runclk(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: runclk" << std::endl; os << R"V0G0N([n_clk in MHz] [Ctb] Run clock in MHz. )V0G0N" << std::endl; @@ -10879,7 +10734,6 @@ std::string Caller::runtime(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: runtime" << std::endl; os << R"V0G0N([(optional unit) ns|us|ms|s] [Jungfrau][Moench][Mythen3][Gotthard2][Ctb][Xilinx Ctb] Time from detector start up. [Gotthard2] not in burst and auto mode. )V0G0N" @@ -10928,7 +10782,6 @@ std::string Caller::rx_arping(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: rx_arping" << std::endl; os << R"V0G0N([0, 1] Starts a thread in slsReceiver to arping the interface it is listening to every minute. Useful in 10G mode. )V0G0N" << std::endl; @@ -10991,7 +10844,6 @@ std::string Caller::rx_clearroi(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: rx_clearroi" << std::endl; os << R"V0G0N(Resets Region of interest in receiver. Default is all channels/pixels enabled. )V0G0N" << std::endl; return os.str(); @@ -11034,7 +10886,6 @@ std::string Caller::rx_dbitoffset(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: rx_dbitoffset" << std::endl; os << R"V0G0N([n_bytes] [Ctb] Offset in bytes in digital data to skip in receiver. )V0G0N" << std::endl; @@ -11097,7 +10948,6 @@ std::string Caller::rx_discardpolicy(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: rx_discardpolicy" << std::endl; os << R"V0G0N([nodiscard (default)|discardempty|discardpartial(fastest)] Frame discard policy of receiver. nodiscard does not discard frames, discardempty discards empty frames, discardpartial discards partial frames. )V0G0N" << std::endl; @@ -11161,7 +11011,6 @@ std::string Caller::rx_fifodepth(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: rx_fifodepth" << std::endl; os << R"V0G0N([n_frames] Set the number of frames in the receiver fifo depth (buffer between listener and writer threads). )V0G0N" << std::endl; @@ -11224,7 +11073,6 @@ std::string Caller::rx_frameindex(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: rx_frameindex" << std::endl; os << R"V0G0N( Current frame index received for each port in receiver during acquisition. )V0G0N" << std::endl; @@ -11264,7 +11112,6 @@ std::string Caller::rx_framescaught(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: rx_framescaught" << std::endl; os << R"V0G0N( Number of frames caught by each port in receiver. )V0G0N" << std::endl; @@ -11304,7 +11151,6 @@ std::string Caller::rx_framesperfile(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: rx_framesperfile" << std::endl; os << R"V0G0N([n_frames] Number of frames per file in receiver in an acquisition. Default depends on detector type. 0 is infinite or all frames in single file. )V0G0N" << std::endl; @@ -11367,7 +11213,6 @@ std::string Caller::rx_jsonpara(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: rx_jsonpara" << std::endl; os << R"V0G0N([key1] [value1] [Receiver] Additional json header parameter streamed out from receiver. If not found in header, the pair is appended. An empty values deletes parameter. Max 20 characters for each key/value. )V0G0N" << std::endl; @@ -11435,7 +11280,6 @@ std::string Caller::rx_lastclient(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: rx_lastclient" << std::endl; os << R"V0G0N( Client IP Address that last communicated with the receiver. )V0G0N" << std::endl; @@ -11475,7 +11319,6 @@ std::string Caller::rx_lock(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: rx_lock" << std::endl; os << R"V0G0N([0, 1] Lock receiver to one client IP, 1 locks, 0 unlocks. Default is unlocked. )V0G0N" << std::endl; @@ -11538,7 +11381,6 @@ std::string Caller::rx_missingpackets(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: rx_missingpackets" << std::endl; os << R"V0G0N( Number of missing packets for receiver. If negative, they are packets in excess. )V0G0N" << std::endl; @@ -11578,7 +11420,6 @@ std::string Caller::rx_padding(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: rx_padding" << std::endl; os << R"V0G0N([0, 1] Partial frames padding enable in the receiver. Default: enabled. Disabling is fastest. )V0G0N" << std::endl; @@ -11641,7 +11482,6 @@ std::string Caller::rx_printconfig(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: rx_printconfig" << std::endl; os << R"V0G0N( Prints the receiver configuration. )V0G0N" << std::endl; @@ -11681,7 +11521,6 @@ std::string Caller::rx_realudpsocksize(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: rx_realudpsocksize" << std::endl; os << R"V0G0N( Actual udp socket buffer size. Double the size of rx_udpsocksize due to kernel bookkeeping. )V0G0N" << std::endl; @@ -11722,7 +11561,6 @@ std::string Caller::rx_silent(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: rx_silent" << std::endl; os << R"V0G0N([0, 1] Switch on or off receiver text output during acquisition. )V0G0N" << std::endl; @@ -11785,7 +11623,6 @@ std::string Caller::rx_start(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: rx_start" << std::endl; os << R"V0G0N( Starts receiver listener for detector data packets and create a data file (if file write enabled). )V0G0N" << std::endl; @@ -11828,7 +11665,6 @@ std::string Caller::rx_status(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: rx_status" << std::endl; os << R"V0G0N([running, idle, transmitting] Receiver listener status. )V0G0N" << std::endl; @@ -11882,7 +11718,6 @@ std::string Caller::rx_stop(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: rx_stop" << std::endl; os << R"V0G0N( Stops receiver listener for detector data packets and closes current data file (if file write enabled). )V0G0N" << std::endl; @@ -11925,7 +11760,6 @@ std::string Caller::rx_tcpport(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: rx_tcpport" << std::endl; os << R"V0G0N([port] TCP port for client-receiver communication. Default is 1954. Must be different if multiple receivers on same pc. Must be first command to set a receiver parameter. Multi command will automatically increment for individual modules. )V0G0N" << std::endl; @@ -11988,7 +11822,6 @@ std::string Caller::rx_threads(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: rx_threads" << std::endl; os << R"V0G0N( Get kernel thread ids from the receiver in order of [parent, tcp, listener 0, processor 0, streamer 0, listener 1, processor 1, streamer 1, arping]. If no streamer yet or there is no second interface, it gives 0 in its place. )V0G0N" << std::endl; @@ -12028,7 +11861,6 @@ std::string Caller::rx_udpsocksize(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: rx_udpsocksize" << std::endl; os << R"V0G0N([n_size] UDP socket buffer size in receiver. Tune rmem_default and rmem_max accordingly. Max value is INT_MAX/2. )V0G0N" << std::endl; @@ -12091,7 +11923,6 @@ std::string Caller::rx_version(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: rx_version" << std::endl; os << R"V0G0N( Receiver version )V0G0N" << std::endl; @@ -12131,7 +11962,6 @@ std::string Caller::rx_zmqfreq(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: rx_zmqfreq" << std::endl; os << R"V0G0N([nth frame] Frequency of frames streamed out from receiver via zmq Default: 1, Means every frame is streamed out. @@ -12197,7 +12027,6 @@ std::string Caller::rx_zmqhwm(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: rx_zmqhwm" << std::endl; os << R"V0G0N([n_value] Receiver's zmq send high water mark. Default is the zmq library's default (1000). This is a high number and can be set to 2 for gui purposes. One must also set the client's receive high water mark to similar value. Final effect is sum of them. Also restarts receiver zmq streaming if enabled. Can set to -1 to set default value. )V0G0N" << std::endl; @@ -12263,7 +12092,6 @@ std::string Caller::rx_zmqport(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: rx_zmqport" << std::endl; os << R"V0G0N([port] Zmq port for data to be streamed out of the receiver. Also restarts receiver zmq streaming if enabled. Default is 30001. Modified only when using an intermediate process between receiver and client(gui). Must be different for every detector (and udp port). Multi command will automatically increment for individual modules. )V0G0N" << std::endl; @@ -12326,7 +12154,6 @@ std::string Caller::rx_zmqstartfnum(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: rx_zmqstartfnum" << std::endl; os << R"V0G0N([fnum] The starting frame index to stream out. 0 by default, which streams the first frame in an acquisition, and then depending on the rx zmq frequency/ timer )V0G0N" << std::endl; @@ -12389,7 +12216,6 @@ std::string Caller::rx_zmqstream(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: rx_zmqstream" << std::endl; os << R"V0G0N([0, 1] Enable/ disable data streaming from receiver via zmq (eg. to GUI or to another process for further processing). This creates/ destroys zmq streamer threads in receiver. Switching to Gui automatically enables data streaming in receiver. @@ -12454,7 +12280,6 @@ std::string Caller::savepattern(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: savepattern" << std::endl; os << R"V0G0N( [Ctb][Mythen3][Xilinx Ctb] Saves pattern to file (ascii). [Ctb] Also executes pattern. )V0G0N" @@ -12499,7 +12324,6 @@ std::string Caller::scan(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: scan" << std::endl; os << R"V0G0N([dac_name|0|trimbits] [start_val] [stop_val] [step_size] [dac settling time ns|us|ms|s] Enables/ disables scans for dac and trimbits Enabling scan sets number of frames to number of steps in receiver. @@ -12602,7 +12426,6 @@ std::string Caller::scanerrmsg(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: scanerrmsg" << std::endl; os << R"V0G0N( Gets Scan error message if scan ended in error for non blocking acquisitions. )V0G0N" << std::endl; @@ -12642,7 +12465,6 @@ std::string Caller::selinterface(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: selinterface" << std::endl; os << R"V0G0N([0, 1] [Jungfrau][Moench] The udp interface to stream data from detector. Effective only when number of interfaces is 1. Default: 0 (outer) )V0G0N" << std::endl; @@ -12705,10 +12527,9 @@ std::string Caller::serialnumber(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: serialnumber" << std::endl; os << R"V0G0N( [Jungfrau][Moench][Gotthard][Mythen3][Gotthard2][Ctb] -Serial number of detector. )V0G0N" + Serial number of detector. )V0G0N" << std::endl; return os.str(); } @@ -12746,7 +12567,6 @@ std::string Caller::setbit(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: setbit" << std::endl; os << R"V0G0N([reg address in hex] [bit index] Sets bit in address. Use --validate to force validation. )V0G0N" @@ -12841,7 +12661,6 @@ std::string Caller::settings(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: settings" << std::endl; os << R"V0G0N([standard, fast, highgain, dynamicgain, lowgain, mediumgain, veryhighgain, highgain0, fixgain1, fixgain2, forceswitchg1, forceswitchg2, verylowgain, g1_hg, g1_lg, g2_hc_hg, g2_hc_lg, g2_lc_hg, g2_lc_lg, g4_hg, g4_lg, gain0] Detector Settings [Jungfrau] - [ gain0 | highgain0] @@ -12913,7 +12732,6 @@ std::string Caller::settingslist(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: settingslist" << std::endl; os << R"V0G0N( List of settings implemented for this detector. )V0G0N" << std::endl; @@ -12953,7 +12771,6 @@ std::string Caller::settingspath(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: settingspath" << std::endl; os << R"V0G0N([path] [Eiger][Mythen3] Directory where settings files are loaded from/to. )V0G0N" << std::endl; @@ -13010,7 +12827,6 @@ std::string Caller::signalindex(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: signalindex" << std::endl; os << R"V0G0N([name] [Ctb][Xilinx_Ctb] Get the signal index for the given name. )V0G0N" << std::endl; @@ -13060,7 +12876,6 @@ std::string Caller::signallist(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: signallist" << std::endl; os << R"V0G0N([signalname1 signalname2 .. signalname63] [Ctb][Xilinx_Ctb] Set the list of signal names for this board. )V0G0N" << std::endl; @@ -13137,7 +12952,6 @@ std::string Caller::signalname(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: signalname" << std::endl; os << R"V0G0N([0-63][name] [Ctb][Xilinx_Ctb] Set the signal at the given position to the given name. )V0G0N" << std::endl; @@ -13224,7 +13038,6 @@ std::string Caller::slowadcindex(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: slowadcindex" << std::endl; os << R"V0G0N([name] [Ctb][Xilinx_Ctb] Get the slowadc index for the given name. )V0G0N" << std::endl; @@ -13276,7 +13089,6 @@ std::string Caller::slowadclist(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: slowadclist" << std::endl; os << R"V0G0N([slowadcname1 slowadcname2 .. slowadcname7] [Ctb][Xilinx_Ctb] Set the list of slowadc names for this board. )V0G0N" << std::endl; @@ -13354,7 +13166,6 @@ std::string Caller::slowadcname(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: slowadcname" << std::endl; os << R"V0G0N([0-7][name] [Ctb][Xilinx_Ctb] Set the slowadc at the given position to the given name. )V0G0N" << std::endl; @@ -13438,7 +13249,6 @@ std::string Caller::slowadcvalues(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: slowadcvalues" << std::endl; os << R"V0G0N([name] [Ctb][Xilinx_Ctb] Get values of all slow adcs. )V0G0N" << std::endl; @@ -13499,7 +13309,6 @@ std::string Caller::start(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: start" << std::endl; os << R"V0G0N( Starts detector acquisition. Status changes to RUNNING or WAITING and automatically returns to idle at the end of acquisition. If the acquisition was abruptly stopped, some detectors come back to STOPPED. )V0G0N" << std::endl; @@ -13539,7 +13348,6 @@ std::string Caller::status(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: status" << std::endl; os << R"V0G0N([running, error, transmitting, finished, waiting, idle] Detector status. Goes to stop server. )V0G0N" << std::endl; @@ -13593,7 +13401,6 @@ std::string Caller::stop(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: stop" << std::endl; os << R"V0G0N( Abort detector acquisition. Status changes to IDLE or STOPPED. Goes to stop server. )V0G0N" << std::endl; @@ -13633,7 +13440,6 @@ std::string Caller::stopport(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: stopport" << std::endl; os << R"V0G0N([n] Port number of the stop server on detector for detector-client tcp interface. Default is 1953. Normally unchanged. )V0G0N" << std::endl; @@ -13696,7 +13502,6 @@ std::string Caller::storagecell_delay(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: storagecell_delay" << std::endl; os << R"V0G0N([duration (0-1638375 ns)] [(optional unit) ns|us|ms|s] [Jungfrau] Additional time delay between 2 consecutive exposures in burst mode (resolution of 25ns). Only applicable for chipv1.0. For advanced users only. )V0G0N" << std::endl; @@ -13785,7 +13590,6 @@ std::string Caller::storagecell_start(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: storagecell_start" << std::endl; os << R"V0G0N([0-max] [Jungfrau] Storage cell that stores the first acquisition of the series. max is 15 (default) for chipv1.0 and 3 (default) for chipv1.1. For advanced users only. )V0G0N" << std::endl; @@ -13848,7 +13652,6 @@ std::string Caller::subdeadtime(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: subdeadtime" << std::endl; os << R"V0G0N([duration] [(optional unit) ns|us|ms|s] [Eiger] Dead time of EIGER subframes in 32 bit mode. Subperiod = subexptime + subdeadtime. )V0G0N" << std::endl; @@ -13937,7 +13740,6 @@ std::string Caller::subexptime(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: subexptime" << std::endl; os << R"V0G0N([duration] [(optional unit) ns|us|ms|s] [Eiger] Exposure time of EIGER subframes in 32 bit mode. )V0G0N" << std::endl; @@ -14026,7 +13828,6 @@ std::string Caller::sync(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: sync" << std::endl; os << R"V0G0N([0, 1] [Jungfrau][Moench] Enables or disables synchronization between modules. Sync mode requires at least one master configured. Also requires flatband cabling between master and slave with termination board. )V0G0N" << std::endl; @@ -14092,7 +13893,6 @@ std::string Caller::syncclk(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: syncclk" << std::endl; os << R"V0G0N([n_clk in MHz] [Ctb] Sync clock in MHz. )V0G0N" << std::endl; @@ -14132,7 +13932,6 @@ std::string Caller::temp_10ge(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: temp_10ge" << std::endl; os << R"V0G0N([n_value] [Eiger]Temperature close to the 10GbE )V0G0N" << std::endl; @@ -14173,7 +13972,6 @@ std::string Caller::temp_adc(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: temp_adc" << std::endl; os << R"V0G0N([n_value] [Jungfrau][Moench][Gotthard] ADC Temperature )V0G0N" << std::endl; @@ -14214,7 +14012,6 @@ std::string Caller::temp_control(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: temp_control" << std::endl; os << R"V0G0N([0, 1] [Jungfrau][Moench] Temperature control enable. Default is 0 (disabled). If temperature crosses threshold temperature and temperature control is enabled, power to chip will be switched off and temperature event occurs. To power on chip again, temperature has to be less than threshold temperature and temperature event has to be cleared. )V0G0N" << std::endl; @@ -14277,7 +14074,6 @@ std::string Caller::temp_dcdc(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: temp_dcdc" << std::endl; os << R"V0G0N([n_value] [Eiger]Temperature close to the dc dc converter )V0G0N" << std::endl; @@ -14318,7 +14114,6 @@ std::string Caller::temp_event(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: temp_event" << std::endl; os << R"V0G0N([0] [Jungfrau][Moench] 1, if a temperature event occured. To clear this event, set it to 0. If temperature crosses threshold temperature and temperature control is enabled, power to chip will be switched off and temperature event occurs. To power on chip again, temperature has to be less than threshold temperature and temperature event has to be cleared. )V0G0N" @@ -14381,7 +14176,6 @@ std::string Caller::temp_fpga(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: temp_fpga" << std::endl; os << R"V0G0N([n_value] [Eiger][Jungfrau][Moench][Gotthard][Mythen3][Gotthard2][Xilinx CTB] FPGA Temperature )V0G0N" << std::endl; @@ -14422,7 +14216,6 @@ std::string Caller::temp_fpgaext(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: temp_fpgaext" << std::endl; os << R"V0G0N([n_value] [Eiger]Temperature close to the FPGA )V0G0N" << std::endl; @@ -14463,7 +14256,6 @@ std::string Caller::temp_fpgafl(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: temp_fpgafl" << std::endl; os << R"V0G0N([n_value] [Eiger]Temperature of the left front end board fpga. )V0G0N" << std::endl; @@ -14504,7 +14296,6 @@ std::string Caller::temp_fpgafr(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: temp_fpgafr" << std::endl; os << R"V0G0N([n_value] [Eiger]Temperature of the right front end board fpga. )V0G0N" << std::endl; @@ -14545,7 +14336,6 @@ std::string Caller::temp_slowadc(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: temp_slowadc" << std::endl; os << R"V0G0N([n_value] [Ctb]Temperature of the slow adc )V0G0N" << std::endl; @@ -14586,7 +14376,6 @@ std::string Caller::temp_sodl(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: temp_sodl" << std::endl; os << R"V0G0N([n_value] [Eiger]Temperature close to the left so-dimm memory )V0G0N" << std::endl; @@ -14627,7 +14416,6 @@ std::string Caller::temp_sodr(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: temp_sodr" << std::endl; os << R"V0G0N([n_value] [Eiger]Temperature close to the right so-dimm memory )V0G0N" << std::endl; @@ -14668,7 +14456,6 @@ std::string Caller::temp_threshold(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: temp_threshold" << std::endl; os << R"V0G0N([n_temp (in degrees)] [Jungfrau][Moench] Threshold temperature in degrees. If temperature crosses threshold temperature and temperature control is enabled, power to chip will be switched off and temperature event occurs. To power on chip again, temperature has to be less than threshold temperature and temperature event has to be cleared. )V0G0N" << std::endl; @@ -14731,7 +14518,6 @@ std::string Caller::templist(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: templist" << std::endl; os << R"V0G0N( List of temperature commands implemented for this detector. )V0G0N" << std::endl; @@ -14771,7 +14557,6 @@ std::string Caller::tempvalues(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: tempvalues" << std::endl; os << R"V0G0N( Gets the values for every temperature for this detector. )V0G0N" << std::endl; @@ -14829,7 +14614,6 @@ std::string Caller::tengiga(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: tengiga" << std::endl; os << R"V0G0N([0, 1] [Eiger][Ctb][Mythen3] 10GbE Enable. )V0G0N" << std::endl; @@ -14892,7 +14676,6 @@ std::string Caller::timing(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: timing" << std::endl; os << R"V0G0N([auto|trigger|gating|burst_trigger] Timing Mode of detector. [Jungfrau][Moench][Gotthard][Ctb][Gotthard2][Xilinx Ctb] [auto|trigger] @@ -14959,7 +14742,6 @@ std::string Caller::timing_info_decoder(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: timing_info_decoder" << std::endl; os << R"V0G0N([swissfel|shine] [Jungfrau] Advanced Command and only for Swissfel and Shine. Sets the bunch id or timing info decoder. Default is swissfel. )V0G0N" << std::endl; @@ -15023,7 +14805,6 @@ std::string Caller::timinglist(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: timinglist" << std::endl; os << R"V0G0N( Gets the list of timing modes for this detector. )V0G0N" << std::endl; @@ -15063,7 +14844,6 @@ std::string Caller::timingsource(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: timingsource" << std::endl; os << R"V0G0N([internal|external] [Gotthard2] Timing source. Internal is crystal and external is system timing. Default is internal. )V0G0N" << std::endl; @@ -15127,7 +14907,6 @@ std::string Caller::top(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: top" << std::endl; os << R"V0G0N([0, 1] [Eiger] Sets half module to top (1), else bottom. )V0G0N" << std::endl; @@ -15190,7 +14969,6 @@ std::string Caller::transceiverenable(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: transceiverenable" << std::endl; os << R"V0G0N([bitmask] [Ctb][Xilinx Ctb] Transceiver Enable Mask. Enable for each 4 Transceiver channel. )V0G0N" << std::endl; @@ -15253,7 +15031,6 @@ std::string Caller::trigger(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: trigger" << std::endl; os << R"V0G0N( [Eiger][Mythen3][Jungfrau][Moench] Sends software trigger signal to detector )V0G0N" << std::endl; @@ -15298,7 +15075,6 @@ std::string Caller::triggers(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: triggers" << std::endl; os << R"V0G0N([n_triggers] Number of triggers per aquire. Set timing mode to use triggers. )V0G0N" << std::endl; @@ -15364,7 +15140,6 @@ std::string Caller::triggersl(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: triggersl" << std::endl; os << R"V0G0N( [Gotthard][Jungfrau][Moench][Mythen3][Gotthard2][Ctb][Xilinx Ctb] Number of triggers left in acquisition. Only when external trigger used. )V0G0N" << std::endl; @@ -15404,7 +15179,6 @@ std::string Caller::trimbits(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: trimbits" << std::endl; os << R"V0G0N([fname] [Eiger][Mythen3] Put will load the trimbit file to detector. If no extension specified, serial number of each module is attached. Get will save the trimbits from the detector to file with serial number added to file name. )V0G0N" << std::endl; @@ -15461,7 +15235,6 @@ std::string Caller::trimval(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: trimval" << std::endl; os << R"V0G0N([n_trimval] [Eiger][Mythen3] All trimbits set to this value. Returns -1 if all trimbits are different values. )V0G0N" << std::endl; @@ -15524,7 +15297,6 @@ std::string Caller::tsamples(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: tsamples" << std::endl; os << R"V0G0N([n_value] [Ctb][Xilinx Ctb] Number of transceiver samples expected. )V0G0N" << std::endl; @@ -15588,14 +15360,12 @@ std::string Caller::txdelay(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: txdelay" << std::endl; os << R"V0G0N([n_delay] [Eiger][Jungfrau][Moench][Mythen3] Set transmission delay for all modules in the detector using the step size provided.Sets up - [Eiger] txdelay_left to (2 * mod_index * n_delay), - [Eiger] txdelay_right to ((2 * mod_index + 1) * n_delay) and - [Eiger] txdelay_frame to (2 *num_modules * n_delay) - [Jungfrau][Moench][Mythen3] txdelay_frame to (num_modules * n_delay) -for every module. )V0G0N" + [Eiger] txdelay_left to (2 * mod_index * n_delay), + [Eiger] txdelay_right to ((2 * mod_index + 1) * n_delay) and + [Eiger] txdelay_frame to (2 *num_modules * n_delay) + [Jungfrau][Moench][Mythen3] txdelay_frame to (num_modules * n_delay) for every module. )V0G0N" << std::endl; return os.str(); } @@ -15662,7 +15432,6 @@ std::string Caller::txdelay_frame(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: txdelay_frame" << std::endl; os << R"V0G0N([n_delay] [Eiger][Jungfrau][Moench][Mythen3] Transmission delay of first udp packet being streamed out of the module. [Jungfrau][Moench] [0-31] Each value represents 1 ms @@ -15728,7 +15497,6 @@ std::string Caller::txdelay_left(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: txdelay_left" << std::endl; os << R"V0G0N([n_delay] [Eiger] Transmission delay of first packet in an image being streamed out of the module's left UDP port. Each value represents 10ns. Typical value is 50000. )V0G0N" << std::endl; @@ -15791,7 +15559,6 @@ std::string Caller::txdelay_right(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: txdelay_right" << std::endl; os << R"V0G0N([n_delay] [Eiger] Transmission delay of first packet in an image being streamed out of the module's right UDP port. Each value represents 10ns. Typical value is 50000. )V0G0N" << std::endl; @@ -15854,7 +15621,6 @@ std::string Caller::type(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: type" << std::endl; os << R"V0G0N( Returns detector type. Can be Eiger, Jungfrau, Gotthard, Moench, Mythen3, Gotthard2, ChipTestBoard, Xilinx_ChipTestBoard )V0G0N" << std::endl; @@ -15894,7 +15660,6 @@ std::string Caller::udp_cleardst(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: udp_cleardst" << std::endl; os << R"V0G0N( Clears udp destination details on the detector. )V0G0N" << std::endl; @@ -15934,7 +15699,6 @@ std::string Caller::udp_dstlist(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: udp_dstlist" << std::endl; os << R"V0G0N([ip=x.x.x.x] [(optional)ip2=x.x.x.x] [mac=xx:xx:xx:xx:xx:xx] [(optional)mac2=xx:xx:xx:xx:xx:xx] [port=value] [(optional)port2=value] @@ -16009,7 +15773,6 @@ std::string Caller::udp_dstmac(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: udp_dstmac" << std::endl; os << R"V0G0N([x:x:x:x:x:x] Mac address of the receiver (destination) udp interface. Not mandatory to set as udp_dstip retrieves it from slsReceiver process, but must be set if you use a custom receiver (not slsReceiver). Use router mac if router between detector and receiver. )V0G0N" << std::endl; @@ -16067,7 +15830,6 @@ std::string Caller::udp_dstmac2(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: udp_dstmac2" << std::endl; os << R"V0G0N([x:x:x:x:x:x] [Jungfrau][Moench] Mac address of the receiver (destination) udp interface 2. Not mandatory to set as udp_dstip2 retrieves it from slsReceiver process but must be set if you use a custom receiver (not slsReceiver). [Jungfrau][Moench] top half or inner interface @@ -16127,7 +15889,6 @@ std::string Caller::udp_dstport(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: udp_dstport" << std::endl; os << R"V0G0N([n] Port number of the receiver (destination) udp interface. Default is 50001. If multi command, ports for each module is calculated (incremented by 1 if no 2nd interface) )V0G0N" @@ -16191,7 +15952,6 @@ std::string Caller::udp_dstport2(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: udp_dstport2" << std::endl; os << R"V0G0N([n] [Jungfrau][Moench][Eiger][Gotthard2] Port number of the receiver (destination) udp interface 2. Default is 50002. If multi command, ports for each module is calculated (incremented by 2) @@ -16258,13 +16018,11 @@ std::string Caller::udp_firstdst(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: udp_firstdst" << std::endl; os << R"V0G0N( -[0 - 31 (or number of udp destinations)] - [Jungfrau][Moench][Gotthard2] -[0-63] - [Mythen3] - + [0 - N] + where N is the max number of udp destinations - 1. + [Jungfrau][Moench][Gotthard2] Max number of udp destinations is 32. + [Mythen3] Max number of udp destination is 64. One can set which is the first destination that the detector will stream images out from in a round robin fashion. The entry must not have been empty. Default: 0 )V0G0N" << std::endl; return os.str(); @@ -16326,7 +16084,6 @@ std::string Caller::udp_numdst(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: udp_numdst" << std::endl; os << R"V0G0N( [Jungfrau][Moench][Eiger][Mythen3][Gotthard2] One can enter upto 32 (64 for Mythen3) destinations that the detector will stream images out in a round robin fashion. This is get only command. Default: 1 )V0G0N" << std::endl; @@ -16366,7 +16123,6 @@ std::string Caller::udp_reconfigure(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: udp_reconfigure" << std::endl; os << R"V0G0N( Reconfigures Detector with UDP destination. More for debugging as the configuration is done automatically when the detector has sufficient UDP details. )V0G0N" << std::endl; @@ -16406,7 +16162,6 @@ std::string Caller::udp_srcmac(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: udp_srcmac" << std::endl; os << R"V0G0N([x:x:x:x:x:x] Mac address of the detector (source) udp interface. [Eiger] Do not set as detector will replace with its own DHCP Mac (1G) or DHCP Mac + 1 (10G). )V0G0N" @@ -16464,7 +16219,6 @@ std::string Caller::udp_srcmac2(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: udp_srcmac2" << std::endl; os << R"V0G0N([x:x:x:x:x:x] [Jungfrau][Moench] Mac address of the top half or inner (source) udp interface. )V0G0N" << std::endl; @@ -16521,7 +16275,6 @@ std::string Caller::udp_validate(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: udp_validate" << std::endl; os << R"V0G0N( Validates that UDP configuration in the detector is valid. If not configured, it will throw with error message requesting missing udp information. )V0G0N" << std::endl; @@ -16561,7 +16314,6 @@ std::string Caller::update(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: update" << std::endl; os << R"V0G0N( Without tftp: [server_name (incl fullpath)] [fname.pof (incl full path)] This does not use tftp. [Jungfrau][Moench][Gotthard][Ctb] Updates the firmware, detector server, deletes old server, creates the symbolic link and then reboots detector controller. @@ -16610,7 +16362,6 @@ std::string Caller::updatedetectorserver(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: updatedetectorserver" << std::endl; os << R"V0G0N([server_name with full path] [Jungfrau][Moench][Eiger][Ctb][Mythen3][Gotthard2] Copies detector server via TCP (without tftp). Makes a symbolic link with a shorter name (without vx.x.x). Then, detector controller reboots (except Eiger). [Jungfrau][Moench][Ctb]Also changes respawn server to the link, which is effective after a reboot. )V0G0N" @@ -16651,7 +16402,6 @@ std::string Caller::updatekernel(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: updatekernel" << std::endl; os << R"V0G0N([kernel_name with full path] [Jungfrau][Moench][Ctb][Mythen3][Gotthard2] Advanced Command!! You could damage the detector. Please use with caution. Updates the kernel image. Then, detector controller reboots with new kernel. )V0G0N" @@ -16692,7 +16442,6 @@ std::string Caller::updatemode(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: updatemode" << std::endl; os << R"V0G0N([0|1] Restart the detector server in update mode or not. This is useful when server-firmware compatibility is at its worst and server cannot start up normally )V0G0N" << std::endl; @@ -16755,7 +16504,6 @@ std::string Caller::user(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: user" << std::endl; os << R"V0G0N( User details from shared memory (hostname, type, PID, User, Date). )V0G0N" << std::endl; @@ -16798,7 +16546,6 @@ std::string Caller::v_a(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: v_a" << std::endl; os << R"V0G0N([n_value] [Ctb][Xilinx Ctb] Power supply a in mV. )V0G0N" << std::endl; @@ -16861,7 +16608,6 @@ std::string Caller::v_b(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: v_b" << std::endl; os << R"V0G0N([n_value] [Ctb][Xilinx Ctb] Power supply b in mV. )V0G0N" << std::endl; @@ -16924,7 +16670,6 @@ std::string Caller::v_c(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: v_c" << std::endl; os << R"V0G0N([n_value] [Ctb][Xilinx Ctb] Power supply c in mV. )V0G0N" << std::endl; @@ -16987,7 +16732,6 @@ std::string Caller::v_chip(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: v_chip" << std::endl; os << R"V0G0N([n_value] [Ctb] Power supply chip in mV. Do not use it unless you are completely sure you will not fry the board. )V0G0N" << std::endl; @@ -17051,7 +16795,6 @@ std::string Caller::v_d(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: v_d" << std::endl; os << R"V0G0N([n_value] [Ctb][Xilinx Ctb] Power supply d in mV. )V0G0N" << std::endl; @@ -17114,7 +16857,6 @@ std::string Caller::v_io(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: v_io" << std::endl; os << R"V0G0N([n_value] [Ctb][Xilinx Ctb] Power supply io in mV. Minimum 1200 mV. Must be the first power regulator to be set after fpga reset (on-board detector server start up). )V0G0N" << std::endl; @@ -17177,7 +16919,6 @@ std::string Caller::v_limit(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: v_limit" << std::endl; os << R"V0G0N([n_value] [Ctb][Xilinx Ctb] Soft limit for power supplies (ctb only) and DACS in mV. )V0G0N" << std::endl; @@ -17240,7 +16981,6 @@ std::string Caller::vchip_comp_adc(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: vchip_comp_adc" << std::endl; os << R"V0G0N([chip index 0-9, -1 for all][10 bit hex value] [Gotthard2] On chip Dac for comparator current of ADC. )V0G0N" << std::endl; @@ -17317,7 +17057,6 @@ std::string Caller::vchip_comp_fe(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: vchip_comp_fe" << std::endl; os << R"V0G0N([chip index 0-9, -1 for all][10 bit hex value] [Gotthard2] On chip Dac for comparator current of analogue front end. )V0G0N" << std::endl; @@ -17394,7 +17133,6 @@ std::string Caller::vchip_cs(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: vchip_cs" << std::endl; os << R"V0G0N([chip index 0-9, -1 for all][10 bit hex value] [Gotthard2] On chip Dac for current injection into preamplifier. )V0G0N" << std::endl; @@ -17471,7 +17209,6 @@ std::string Caller::vchip_opa_1st(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: vchip_opa_1st" << std::endl; os << R"V0G0N([chip index 0-9, -1 for all][10 bit hex value] [Gotthard2] On chip Dac for opa current for driving the other DACs in chip. )V0G0N" << std::endl; @@ -17548,7 +17285,6 @@ std::string Caller::vchip_opa_fd(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: vchip_opa_fd" << std::endl; os << R"V0G0N([chip index 0-9, -1 for all][10 bit hex value] [Gotthard2] On chip Dac current for CDS opa stage. )V0G0N" << std::endl; @@ -17625,7 +17361,6 @@ std::string Caller::vchip_ref_comp_fe(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: vchip_ref_comp_fe" << std::endl; os << R"V0G0N([chip index 0-9, -1 for all][10 bit hex value] [Gotthard2] On chip Dac for reference voltage of the comparator of analogue front end. )V0G0N" << std::endl; @@ -17702,7 +17437,6 @@ std::string Caller::veto(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: veto" << std::endl; os << R"V0G0N([0, 1] [Gotthard2] Enable or disable veto data data from chip. Default is 0. )V0G0N" << std::endl; @@ -17765,7 +17499,6 @@ std::string Caller::vetoalg(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: vetoalg" << std::endl; os << R"V0G0N([hits|raw] [lll|10gbe] [Gotthard2] Set the veto algorithm. Default is hits. )V0G0N" << std::endl; @@ -17840,7 +17573,6 @@ std::string Caller::vetofile(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: vetofile" << std::endl; os << R"V0G0N([chip index 0-9, -1 for all] [file name] [Gotthard2] Set veto reference for each 128 channels for specific chip. The file should have 128 rows of gain index and 12 bit value in dec )V0G0N" << std::endl; @@ -17899,7 +17631,6 @@ std::string Caller::vetophoton(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: vetophoton" << std::endl; os << R"V0G0N([ichip] [#photons] [energy in keV] [reference file] [Gotthard2] Set veto reference for 128 channels for chip ichip according to reference file and #photons and energy in keV. [ichip] [output file] @@ -17983,7 +17714,6 @@ std::string Caller::vetoref(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: vetoref" << std::endl; os << R"V0G0N([gain index] [12 bit value] [Gotthard2] Set veto reference for all 128 channels for all chips. )V0G0N" << std::endl; @@ -18048,7 +17778,6 @@ std::string Caller::virtualFunction(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: virtual" << std::endl; os << R"V0G0N([n_servers] [starting_port_number] Connecs to n virtual server at local host starting at specific control port. Every virtual server will have a stop port (control port + 1) )V0G0N" << std::endl; @@ -18103,7 +17832,6 @@ std::string Caller::vm_a(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: vm_a" << std::endl; os << R"V0G0N( [Ctb] Measured voltage of power supply a in mV. )V0G0N" << std::endl; @@ -18144,7 +17872,6 @@ std::string Caller::vm_b(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: vm_b" << std::endl; os << R"V0G0N( [Ctb] Measured voltage of power supply b in mV. )V0G0N" << std::endl; @@ -18185,7 +17912,6 @@ std::string Caller::vm_c(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: vm_c" << std::endl; os << R"V0G0N( [Ctb] Measured voltage of power supply c in mV. )V0G0N" << std::endl; @@ -18226,7 +17952,6 @@ std::string Caller::vm_d(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: vm_d" << std::endl; os << R"V0G0N( [Ctb] Measured voltage of power supply d in mV. )V0G0N" << std::endl; @@ -18267,7 +17992,6 @@ std::string Caller::vm_io(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: vm_io" << std::endl; os << R"V0G0N( [Ctb] Measured voltage of power supply io in mV. )V0G0N" << std::endl; @@ -18308,7 +18032,6 @@ std::string Caller::zmqhwm(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: zmqhwm" << std::endl; os << R"V0G0N([n_limit] Client's zmq receive high water mark. Default is the zmq library's default (1000), can also be set here using -1. This is a high number and can be set to 2 for gui purposes. @@ -18374,7 +18097,6 @@ std::string Caller::zmqip(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: zmqip" << std::endl; os << R"V0G0N([x.x.x.x] Ip Address to listen to zmq data streamed out from receiver or intermediate process. Default connects to receiver zmq Ip Address (from rx_hostname). Modified only when using an intermediate process between receiver and client(gui). Also restarts client zmq streaming if enabled. )V0G0N" << std::endl; @@ -18431,7 +18153,6 @@ std::string Caller::zmqport(int action) { std::ostringstream os; // print help if (action == slsDetectorDefs::HELP_ACTION) { - os << "Command: zmqport" << std::endl; os << R"V0G0N([port] Zmq port in client(gui) or intermediate process for data to be streamed to from receiver. Default connects to receiver zmq streaming out port (30001). Modified only when using an intermediate process between receiver and client(gui). Also restarts client zmq streaming if enabled. Must be different for every detector (and udp port). Multi command will automatically increment for individual modules. )V0G0N" << std::endl; diff --git a/slsDetectorSoftware/src/Caller.h b/slsDetectorSoftware/src/Caller.h index d9c74800e..b1f1e58b3 100644 --- a/slsDetectorSoftware/src/Caller.h +++ b/slsDetectorSoftware/src/Caller.h @@ -55,6 +55,7 @@ class Caller { } std::vector getAllCommands(); + std::map GetDeprecatedCommands(); std::string list(int action); std::string acquire(int action); diff --git a/slsDetectorSoftware/src/CallerSpecial.cpp b/slsDetectorSoftware/src/CallerSpecial.cpp index a5881a778..80b2a9867 100644 --- a/slsDetectorSoftware/src/CallerSpecial.cpp +++ b/slsDetectorSoftware/src/CallerSpecial.cpp @@ -16,6 +16,10 @@ std::vector Caller::getAllCommands() { return ret; } +std::map Caller::GetDeprecatedCommands() { + return deprecated_functions; +} + void Caller::call(const std::string &command, const std::vector &arguments, int detector_id, int action, std::ostream &os, int receiver_id) { @@ -63,12 +67,35 @@ bool Caller::ReplaceIfDeprecated(std::string &command) { } std::string Caller::list(int action) { - std::string ret = "free\n"; - for (auto &f : functions) { - ret += f.first + "\n"; + if (action == defs::HELP_ACTION) { + return "[deprecated(optional)]\n\tlists all available commands, list " + "deprecated - list deprecated commands\n"; + } + if (args.empty()) { + std::string ret = "free\n"; + for (auto &f : functions) { + ret += f.first + "\n"; + } + return ret; + } else if (args.size() == 1) { + if (args[0] == "deprecated") { + std::ostringstream os; + os << "The following " << deprecated_functions.size() + << " commands are deprecated\n"; + const size_t field_width = 20; + for (const auto &it : deprecated_functions) { + os << std::right << std::setw(field_width) << it.first << " -> " + << it.second << '\n'; + } + return os.str(); + } else { + throw RuntimeError( + "Could not decode argument. Possible options: deprecated"); + } + } else { + WrongNumberOfParameters(0); + return ""; } - - return ret; } /* Network Configuration (Detector<->Receiver) */ diff --git a/zsh_autocomplete.sh b/zsh_autocomplete.sh new file mode 120000 index 000000000..143520002 --- /dev/null +++ b/zsh_autocomplete.sh @@ -0,0 +1 @@ +slsDetectorSoftware/generator/autocomplete/zsh_autocomplete.sh \ No newline at end of file