mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-23 01:58:00 +02:00
Xilinx ctb (#884)
* updated registers, arm64 * compiler set to aarch64 for xilinx server * updated RegisterDefs.h * merge into generate branch and resolving conflicts and adding the xilinx changes to callerspecial and commands.yaml * compiles and can print firmware version (using a different csp0 address) * fixing other servers (gotthard, jungfrau, moench, mythen3) that it returns in case of mapping failure, xilinxctb: added that it checks type, prints proper fw version, checks kernel date, added armprocessor define to use in common places, added specifiers to supress overflow and truncation warnings * added detector ip and mac adddress to the printout * fixed tests and recompiled servers
This commit is contained in:
@ -311,19 +311,27 @@ CTB_NAMED_LIST:
|
||||
infer_action: true
|
||||
actions:
|
||||
GET:
|
||||
check_det_id: true
|
||||
extra_variables:
|
||||
- name: det_type
|
||||
type: auto
|
||||
value: det->getDetectorType().squash(defs::GENERIC);
|
||||
exceptions:
|
||||
- condition: 'cmd != "daclist" && det->getDetectorType().squash() != defs::CHIPTESTBOARD'
|
||||
- condition: 'cmd != "daclist" && det_type != defs::CHIPTESTBOARD && det_type != defs::XILINX_CHIPTESTBOARD'
|
||||
message: 'cmd + " only allowed for CTB."'
|
||||
check_det_id: true
|
||||
argc: 0
|
||||
output: [ 'ToString(t)' ]
|
||||
PUT:
|
||||
check_det_id: true
|
||||
extra_variables:
|
||||
- name: det_type
|
||||
type: auto
|
||||
value: det->getDetectorType().squash(defs::GENERIC);
|
||||
exceptions:
|
||||
- condition: 'cmd != "daclist" && det->getDetectorType().squash() != defs::CHIPTESTBOARD'
|
||||
- condition: 'cmd != "daclist" && det_type != defs::CHIPTESTBOARD && det_type != defs::XILINX_CHIPTESTBOARD'
|
||||
message: 'cmd + " only allowed for CTB."'
|
||||
- condition: 'cmd == "daclist" && det->getDetectorType().squash() != defs::CHIPTESTBOARD'
|
||||
- condition: 'cmd == "daclist" && det_type != defs::CHIPTESTBOARD && det_type != defs::XILINX_CHIPTESTBOARD'
|
||||
message: '"This detector already has fixed dac names. Cannot change them."'
|
||||
check_det_id: true
|
||||
input: [ 'args' ]
|
||||
argc: -1 # unknown number of args
|
||||
input_types: [ std::string ]
|
||||
@ -337,12 +345,11 @@ CTB_SINGLE_DACNAME:
|
||||
extra_variables:
|
||||
- name: index
|
||||
type: defs::dacIndex
|
||||
value: 0
|
||||
|
||||
check_det_id: true
|
||||
value: 0
|
||||
exceptions:
|
||||
- condition: 'det->getDetectorType().squash() != defs::CHIPTESTBOARD'
|
||||
- condition: 'det->getDetectorType().squash(defs::GENERIC) != defs::CHIPTESTBOARD && det->getDetectorType().squash(defs::GENERIC) != defs::XILINX_CHIPTESTBOARD'
|
||||
message: 'cmd + " only allowed for CTB."'
|
||||
check_det_id: true
|
||||
argc: 1
|
||||
input: [ "static_cast<defs::dacIndex>(StringTo<int>(args[0]) + index)" ]
|
||||
input_types: [ defs::dacIndex ]
|
||||
@ -353,11 +360,10 @@ CTB_SINGLE_DACNAME:
|
||||
- name: index
|
||||
type: defs::dacIndex
|
||||
value: 0
|
||||
|
||||
check_det_id: true
|
||||
exceptions:
|
||||
- condition: 'det->getDetectorType().squash() != defs::CHIPTESTBOARD'
|
||||
- condition: 'det->getDetectorType().squash(defs::GENERIC) != defs::CHIPTESTBOARD && det->getDetectorType().squash(defs::GENERIC) != defs::XILINX_CHIPTESTBOARD'
|
||||
message: 'cmd + " only allowed for CTB."'
|
||||
check_det_id: true
|
||||
argc: 2
|
||||
input: [ "static_cast<defs::dacIndex>(StringTo<int>(args[0]) + index)","args[1]" ]
|
||||
input_types: [ defs::dacIndex , std::string ]
|
||||
@ -375,7 +381,7 @@ CTB_GET_DACINDEX:
|
||||
|
||||
check_det_id: true
|
||||
exceptions:
|
||||
- condition: 'det->getDetectorType().squash() != defs::CHIPTESTBOARD'
|
||||
- condition: 'det->getDetectorType().squash(defs::GENERIC) != defs::CHIPTESTBOARD && det->getDetectorType().squash(defs::GENERIC) != defs::XILINX_CHIPTESTBOARD'
|
||||
message: 'cmd + " only allowed for CTB."'
|
||||
argc: 1
|
||||
input: [ 'args[0]' ]
|
||||
@ -389,7 +395,7 @@ CTB_SINGLE_NAME:
|
||||
GET:
|
||||
check_det_id: true
|
||||
exceptions:
|
||||
- condition: 'det->getDetectorType().squash() != defs::CHIPTESTBOARD'
|
||||
- condition: 'det->getDetectorType().squash(defs::GENERIC) != defs::CHIPTESTBOARD && det->getDetectorType().squash(defs::GENERIC) != defs::XILINX_CHIPTESTBOARD'
|
||||
message: 'cmd + " only allowed for CTB."'
|
||||
argc: 1
|
||||
input: [ "args[0]" ]
|
||||
@ -399,7 +405,7 @@ CTB_SINGLE_NAME:
|
||||
PUT:
|
||||
check_det_id: true
|
||||
exceptions:
|
||||
- condition: 'det->getDetectorType().squash() != defs::CHIPTESTBOARD'
|
||||
- condition: 'det->getDetectorType().squash(defs::GENERIC) != defs::CHIPTESTBOARD && det->getDetectorType().squash(defs::GENERIC) != defs::XILINX_CHIPTESTBOARD'
|
||||
message: 'cmd + " only allowed for CTB."'
|
||||
argc: 2
|
||||
cast_input: [ true, false ]
|
||||
@ -414,7 +420,7 @@ CTB_GET_INDEX:
|
||||
GET:
|
||||
check_det_id: true
|
||||
exceptions:
|
||||
- condition: 'det->getDetectorType().squash() != defs::CHIPTESTBOARD'
|
||||
- condition: 'det->getDetectorType().squash(defs::GENERIC) != defs::CHIPTESTBOARD && det->getDetectorType().squash(defs::GENERIC) != defs::XILINX_CHIPTESTBOARD'
|
||||
message: 'cmd + " only allowed for CTB."'
|
||||
argc: 1
|
||||
input: [ 'args[0]' ]
|
||||
@ -490,14 +496,14 @@ burstperiod:
|
||||
|
||||
################# TIME_GET_COMMAND #############
|
||||
delayl:
|
||||
help: "\n\t[Gotthard][Jungfrau][Moench][Mythen3][Gotthard2][CTB] Delay Left in Acquisition. \n\t[Gotthard2] only in continuous mode."
|
||||
help: "\n\t[Gotthard][Jungfrau][Moench][Mythen3][Gotthard2][Ctb] Delay Left in Acquisition. \n\t[Gotthard2] only in continuous mode."
|
||||
inherit_actions: TIME_GET_COMMAND
|
||||
actions:
|
||||
GET:
|
||||
function: getDelayAfterTriggerLeft
|
||||
|
||||
periodl:
|
||||
help: "\n\t[Gotthard][Jungfrau][Moench][CTB][Mythen3][Gotthard2] Period left for current frame. \n\t[Gotthard2] only in continuous mode."
|
||||
help: "\n\t[Gotthard][Jungfrau][Moench][Ctb][Mythen3][Gotthard2] Period left for current frame. \n\t[Gotthard2] only in continuous mode."
|
||||
inherit_actions: TIME_GET_COMMAND
|
||||
actions:
|
||||
GET:
|
||||
@ -525,14 +531,14 @@ exptimel:
|
||||
function: getExptimeLeft
|
||||
|
||||
runtime:
|
||||
help: "[(optional unit) ns|us|ms|s]\n\t[Jungfrau][Moench][Mythen3][Gotthard2][CTB] Time from detector start up.\n\t[Gotthard2] not in burst and auto mode."
|
||||
help: "[(optional unit) ns|us|ms|s]\n\t[Jungfrau][Moench][Mythen3][Gotthard2][Ctb] Time from detector start up.\n\t[Gotthard2] not in burst and auto mode."
|
||||
inherit_actions: TIME_GET_COMMAND
|
||||
actions:
|
||||
GET:
|
||||
function: getActualTime
|
||||
|
||||
frametime:
|
||||
help: "[(optional unit) ns|us|ms|s]\n\t[Jungfrau][Moench][Mythen3][Gotthard2][CTB] Timestamp at a frame start.\n\t[Gotthard2] not in burst and auto mode."
|
||||
help: "[(optional unit) ns|us|ms|s]\n\t[Jungfrau][Moench][Mythen3][Gotthard2][Ctb] Timestamp at a frame start.\n\t[Gotthard2] not in burst and auto mode."
|
||||
inherit_actions: TIME_GET_COMMAND
|
||||
actions:
|
||||
GET:
|
||||
@ -740,7 +746,7 @@ filterresistor:
|
||||
function: setFilterResistor
|
||||
|
||||
dbitpipeline:
|
||||
help: "[n_value]\n\t[Ctb][Gotthard2] Pipeline of the clock for latching digital bits.\n\t[Gotthard2] Options: 0-7\n\t[CTB] Options: 0-255"
|
||||
help: "[n_value]\n\t[Ctb][Gotthard2] Pipeline of the clock for latching digital bits.\n\t[Gotthard2] Options: 0-7\n\t[Ctb] Options: 0-255"
|
||||
inherit_actions: INTEGER_COMMAND_VEC_ID
|
||||
actions:
|
||||
GET:
|
||||
@ -758,7 +764,7 @@ readnrows:
|
||||
function: setReadNRows
|
||||
|
||||
nextframenumber:
|
||||
help: "[n_value]\n\t[Eiger][Jungfrau][Moench][CTB] Next frame number. Stopping acquisition might result in different frame numbers for different modules."
|
||||
help: "[n_value]\n\t[Eiger][Jungfrau][Moench][Ctb] Next frame number. Stopping acquisition might result in different frame numbers for different modules."
|
||||
inherit_actions: INTEGER_COMMAND_VEC_ID
|
||||
actions:
|
||||
GET:
|
||||
@ -1256,7 +1262,7 @@ dpulse:
|
||||
input_types: [ bool ]
|
||||
|
||||
asamples:
|
||||
help: "[n_samples]\n\t[CTB] Number of analog samples expected."
|
||||
help: "[n_samples]\n\t[Ctb] Number of analog samples expected."
|
||||
inherit_actions: INTEGER_COMMAND_VEC_ID
|
||||
actions:
|
||||
GET:
|
||||
@ -1283,7 +1289,7 @@ runclk:
|
||||
function: setRUNClock
|
||||
|
||||
dsamples:
|
||||
help: "[n_value]\n\t[CTB] Number of digital samples expected."
|
||||
help: "[n_value]\n\t[Ctb] Number of digital samples expected."
|
||||
inherit_actions: INTEGER_COMMAND_VEC_ID
|
||||
actions:
|
||||
GET:
|
||||
@ -1292,7 +1298,7 @@ dsamples:
|
||||
function: setNumberOfDigitalSamples
|
||||
|
||||
tsamples:
|
||||
help: "[n_value]\n\t[CTB] Number of transceiver samples expected."
|
||||
help: "[n_value]\n\t[Ctb] Number of transceiver samples expected."
|
||||
inherit_actions: INTEGER_COMMAND_VEC_ID
|
||||
actions:
|
||||
GET:
|
||||
@ -1301,7 +1307,7 @@ tsamples:
|
||||
function: setNumberOfTransceiverSamples
|
||||
|
||||
romode:
|
||||
help: "[analog|digital|analog_digital|transceiver|digital_transceiver]\n\t[CTB] Readout mode. Default is analog."
|
||||
help: "[analog|digital|analog_digital|transceiver|digital_transceiver]\n\t[Ctb] Readout mode. Default is analog."
|
||||
inherit_actions: INTEGER_COMMAND_VEC_ID
|
||||
actions:
|
||||
GET:
|
||||
@ -1872,35 +1878,35 @@ moduleid:
|
||||
|
||||
type:
|
||||
inherit_actions: GET_COMMAND
|
||||
help: "\n\tReturns detector type. Can be Eiger, Jungfrau, Gotthard, Moench, Mythen3, Gotthard2, ChipTestBoard"
|
||||
help: "\n\tReturns detector type. Can be Eiger, Jungfrau, Gotthard, Moench, Mythen3, Gotthard2, ChipTestBoard, Xilinx_ChipTestBoard"
|
||||
actions:
|
||||
GET:
|
||||
function: getDetectorType
|
||||
|
||||
framesl:
|
||||
inherit_actions: GET_COMMAND
|
||||
help: "\n\t[Gotthard][Jungfrau][Moench][Mythen3][Gotthard2][CTB] Number of frames left in acquisition. \n\t[Gotthard2] only in continuous auto mode."
|
||||
help: "\n\t[Gotthard][Jungfrau][Moench][Mythen3][Gotthard2][Ctb] Number of frames left in acquisition. \n\t[Gotthard2] only in continuous auto mode."
|
||||
actions:
|
||||
GET:
|
||||
function: getNumberOfFramesLeft
|
||||
|
||||
triggersl:
|
||||
inherit_actions: GET_COMMAND
|
||||
help: "\n\t[Gotthard][Jungfrau][Moench][Mythen3][Gotthard2][CTB] Number of triggers left in acquisition. Only when external trigger used."
|
||||
help: "\n\t[Gotthard][Jungfrau][Moench][Mythen3][Gotthard2][Ctb] Number of triggers left in acquisition. Only when external trigger used."
|
||||
actions:
|
||||
GET:
|
||||
function: getNumberOfTriggersLeft
|
||||
|
||||
maxadcphaseshift:
|
||||
inherit_actions: GET_COMMAND
|
||||
help: "\n\t[Jungfrau][Moench][CTB] Absolute maximum Phase shift of ADC clock."
|
||||
help: "\n\t[Jungfrau][Moench][Ctb] Absolute maximum Phase shift of ADC clock."
|
||||
actions:
|
||||
GET:
|
||||
function: getMaxADCPhaseShift
|
||||
|
||||
maxdbitphaseshift:
|
||||
inherit_actions: GET_COMMAND
|
||||
help: "\n\t[CTB][Jungfrau] Absolute maximum Phase shift of of the clock to latch digital bits."
|
||||
help: "\n\t[Ctb][Jungfrau] Absolute maximum Phase shift of of the clock to latch digital bits."
|
||||
actions:
|
||||
GET:
|
||||
function: getMaxDBITPhaseShift
|
||||
@ -2005,7 +2011,7 @@ lastclient:
|
||||
|
||||
framecounter:
|
||||
inherit_actions: GET_COMMAND
|
||||
help: "\n\t[Jungfrau][Moench][Mythen3][Gotthard2][CTB] Number of frames from start run control.\n\t[Gotthard2] only in continuous mode."
|
||||
help: "\n\t[Jungfrau][Moench][Mythen3][Gotthard2][Ctb] Number of frames from start run control.\n\t[Gotthard2] only in continuous mode."
|
||||
actions:
|
||||
GET:
|
||||
function: getNumberOfFramesFromStart
|
||||
@ -2013,7 +2019,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]\nSerial number of detector."
|
||||
actions:
|
||||
GET:
|
||||
function: getSerialNumber
|
||||
@ -2236,7 +2242,7 @@ im_io:
|
||||
################# CTB_NAMED_LIST #############################
|
||||
daclist:
|
||||
inherit_actions: CTB_NAMED_LIST
|
||||
help: "[dacname1 dacname2 .. dacname18] \n\t\t[ChipTestBoard] Set the list of dac names for this detector.\n\t\t[All] Gets the list of dac names for every dac for this detector."
|
||||
help: "[dacname1 dacname2 .. dacname18] \n\t\t[Ctb][Xilinx_Ctb] Set the list of dac names for this detector.\n\t\t[All] Gets the list of dac names for every dac for this detector."
|
||||
actions:
|
||||
GET:
|
||||
function: getDacNames
|
||||
@ -2245,7 +2251,7 @@ daclist:
|
||||
|
||||
adclist:
|
||||
inherit_actions: CTB_NAMED_LIST
|
||||
help: "[adcname1 adcname2 .. adcname32] \n\t\t[ChipTestBoard] Set the list of adc names for this board."
|
||||
help: "[adcname1 adcname2 .. adcname32] \n\t\t[Ctb][Xilinx_Ctb] Set the list of adc names for this board."
|
||||
actions:
|
||||
GET:
|
||||
function: getAdcNames
|
||||
@ -2254,7 +2260,7 @@ adclist:
|
||||
|
||||
signallist:
|
||||
inherit_actions: CTB_NAMED_LIST
|
||||
help: "[signalname1 signalname2 .. signalname63] \n\t\t[ChipTestBoard] Set the list of signal names for this board."
|
||||
help: "[signalname1 signalname2 .. signalname63] \n\t\t[Ctb][Xilinx_Ctb] Set the list of signal names for this board."
|
||||
actions:
|
||||
GET:
|
||||
function: getSignalNames
|
||||
@ -2263,7 +2269,7 @@ signallist:
|
||||
|
||||
powerlist:
|
||||
inherit_actions: CTB_NAMED_LIST
|
||||
help: "[powername1 powername2 .. powername4] \n\t\t[ChipTestBoard] Set the list of power names for this board."
|
||||
help: "[powername1 powername2 .. powername4] \n\t\t[Ctb][Xilinx_Ctb] Set the list of power names for this board."
|
||||
actions:
|
||||
GET:
|
||||
function: getPowerNames
|
||||
@ -2272,7 +2278,7 @@ powerlist:
|
||||
|
||||
slowadclist:
|
||||
inherit_actions: CTB_NAMED_LIST
|
||||
help: "[slowadcname1 slowadcname2 .. slowadcname7] \n\t\t[ChipTestBoard] Set the list of slowadc names for this board."
|
||||
help: "[slowadcname1 slowadcname2 .. slowadcname7] \n\t\t[Ctb][Xilinx_Ctb] Set the list of slowadc names for this board."
|
||||
actions:
|
||||
GET:
|
||||
function: getSlowADCNames
|
||||
@ -2281,7 +2287,7 @@ slowadclist:
|
||||
|
||||
################# CTB_VALUES ################################
|
||||
powervalues:
|
||||
help: "[name] \n\t\t[ChipTestBoard] Get values of all powers."
|
||||
help: "[name] \n\t\t[Ctb][Xilinx_Ctb] Get values of all powers."
|
||||
actions:
|
||||
GET:
|
||||
argc: 0
|
||||
@ -2293,7 +2299,7 @@ powervalues:
|
||||
printable_name: "*name_it++"
|
||||
|
||||
slowadcvalues:
|
||||
help: "[name] \n\t\t[ChipTestBoard] Get values of all slow adcs."
|
||||
help: "[name] \n\t\t[Ctb][Xilinx_Ctb] Get values of all slow adcs."
|
||||
actions:
|
||||
GET:
|
||||
argc: 0
|
||||
@ -2319,7 +2325,7 @@ tempvalues:
|
||||
################# CTB_SINGLE_DACNAME ########################
|
||||
dacname:
|
||||
inherit_actions: CTB_SINGLE_DACNAME
|
||||
help: "[0-17][name] \n\t\t[ChipTestBoard] Set the dac at the given position to the given name."
|
||||
help: "[0-17][name] \n\t\t[Ctb][Xilinx_Ctb] Set the dac at the given position to the given name."
|
||||
actions:
|
||||
GET:
|
||||
function: getDacName
|
||||
@ -2336,7 +2342,7 @@ dacname:
|
||||
|
||||
powername:
|
||||
inherit_actions: CTB_SINGLE_DACNAME
|
||||
help: "[0-4][name] \n\t\t[ChipTestBoard] Set the power at the given position to the given name."
|
||||
help: "[0-4][name] \n\t\t[Ctb][Xilinx_Ctb] Set the power at the given position to the given name."
|
||||
actions:
|
||||
GET:
|
||||
function: getPowerName
|
||||
@ -2353,7 +2359,7 @@ powername:
|
||||
|
||||
slowadcname:
|
||||
inherit_actions: CTB_SINGLE_DACNAME
|
||||
help: "[0-7][name] \n\t\t[ChipTestBoard] Set the slowadc at the given position to the given name."
|
||||
help: "[0-7][name] \n\t\t[Ctb][Xilinx_Ctb] Set the slowadc at the given position to the given name."
|
||||
actions:
|
||||
GET:
|
||||
function: getSlowADCName
|
||||
@ -2371,7 +2377,7 @@ slowadcname:
|
||||
################# CTB_GET_DACINDEX ##########################
|
||||
dacindex:
|
||||
inherit_actions: CTB_GET_DACINDEX
|
||||
help: "[name] \n\t\t[ChipTestBoard] Get the dac index for the given name."
|
||||
help: "[name] \n\t\t[Ctb][Xilinx_Ctb] Get the dac index for the given name."
|
||||
actions:
|
||||
GET:
|
||||
function: getDacIndex
|
||||
@ -2382,7 +2388,7 @@ dacindex:
|
||||
|
||||
powerindex:
|
||||
inherit_actions: CTB_GET_DACINDEX
|
||||
help: "[name] \n\t\t[ChipTestBoard] Get the power index for the given name."
|
||||
help: "[name] \n\t\t[Ctb][Xilinx_Ctb] Get the power index for the given name."
|
||||
actions:
|
||||
GET:
|
||||
function: getPowerIndex
|
||||
@ -2393,7 +2399,7 @@ powerindex:
|
||||
|
||||
slowadcindex:
|
||||
inherit_actions: CTB_GET_DACINDEX
|
||||
help: "[name] \n\t\t[ChipTestBoard] Get the slowadc index for the given name."
|
||||
help: "[name] \n\t\t[Ctb][Xilinx_Ctb] Get the slowadc index for the given name."
|
||||
actions:
|
||||
GET:
|
||||
function: getSlowADCIndex
|
||||
@ -2405,7 +2411,7 @@ slowadcindex:
|
||||
################# CTB_SINGLE_NAME ###########################
|
||||
adcname:
|
||||
inherit_actions: CTB_SINGLE_NAME
|
||||
help: "[0-31][name] \n\t\t[ChipTestBoard] Set the adc at the given position to the given name."
|
||||
help: "[0-31][name] \n\t\t[Ctb][Xilinx_Ctb] Set the adc at the given position to the given name."
|
||||
actions:
|
||||
GET:
|
||||
function: getAdcName
|
||||
@ -2414,7 +2420,7 @@ adcname:
|
||||
|
||||
signalname:
|
||||
inherit_actions: CTB_SINGLE_NAME
|
||||
help: "[0-63][name] \n\t\t[ChipTestBoard] Set the signal at the given position to the given name."
|
||||
help: "[0-63][name] \n\t\t[Ctb][Xilinx_Ctb] Set the signal at the given position to the given name."
|
||||
actions:
|
||||
GET:
|
||||
function: getSignalName
|
||||
@ -2424,14 +2430,14 @@ signalname:
|
||||
################# CTB_GET_INDEX #############################
|
||||
adcindex:
|
||||
inherit_actions: CTB_GET_INDEX
|
||||
help: "[name] \n\t\t[ChipTestBoard] Get the adc index for the given name."
|
||||
help: "[name] \n\t\t[Ctb][Xilinx_Ctb] Get the adc index for the given name."
|
||||
actions:
|
||||
GET:
|
||||
function: getAdcIndex
|
||||
|
||||
signalindex:
|
||||
inherit_actions: CTB_GET_INDEX
|
||||
help: "[name] \n\t\t[ChipTestBoard] Get the signal index for the given name."
|
||||
help: "[name] \n\t\t[Ctb][Xilinx_Ctb] Get the signal index for the given name."
|
||||
actions:
|
||||
GET:
|
||||
function: getSignalIndex
|
||||
@ -2877,16 +2883,24 @@ readoutspeed:
|
||||
help: "\n\t[0 or full_speed|1 or half_speed|2 or quarter_speed]\n\t[Eiger][Jungfrau][Moench] Readout speed of chip.\n\t[Eiger][Moench] Default speed is full_speed.\n\t[Jungfrau] Default speed is half_speed. full_speed option only available from v2.0 boards and is recommended to set number of interfaces to 2. Also overwrites adcphase to recommended default.\n\t [144|108]\n\t\t[Gotthard2] Readout speed of chip in MHz. Default is 108."
|
||||
actions:
|
||||
GET:
|
||||
extra_variables:
|
||||
- name: det_type
|
||||
type: auto
|
||||
value: det->getDetectorType().squash(defs::GENERIC);
|
||||
exceptions:
|
||||
- condition: 'det->getDetectorType().squash() == defs::CHIPTESTBOARD'
|
||||
- condition: 'det_type == defs::CHIPTESTBOARD || det_type == defs::XILINX_CHIPTESTBOARD'
|
||||
message: '"ReadoutSpeed not implemented. Did you mean runclk?"'
|
||||
argc: 0
|
||||
require_det_id: true
|
||||
function: getReadoutSpeed
|
||||
output: [ OutString(t) ]
|
||||
PUT:
|
||||
extra_variables:
|
||||
- name: det_type
|
||||
type: auto
|
||||
value: det->getDetectorType().squash(defs::GENERIC);
|
||||
exceptions:
|
||||
- condition: 'det->getDetectorType().squash() == defs::CHIPTESTBOARD'
|
||||
- condition: 'det_type == defs::CHIPTESTBOARD || det_type == defs::XILINX_CHIPTESTBOARD'
|
||||
message: '"ReadoutSpeed not implemented. Did you mean runclk?"'
|
||||
argc: 1
|
||||
require_det_id: true
|
||||
@ -3158,12 +3172,12 @@ dac:
|
||||
actions:
|
||||
GET:
|
||||
exceptions:
|
||||
- condition: "is_int(args[0]) && det->getDetectorType().squash() != defs::CHIPTESTBOARD"
|
||||
- condition: "is_int(args[0]) && det->getDetectorType().squash() != defs::CHIPTESTBOARD && det->getDetectorType().squash() != defs::XILINX_CHIPTESTBOARD"
|
||||
message: '"Dac indices can only be used for chip test board. Use daclist to get list of dac names for current detector."'
|
||||
extra_variables:
|
||||
- name: dacIndex
|
||||
type: defs::dacIndex
|
||||
value: "(det->getDetectorType().squash() == defs::CHIPTESTBOARD && !is_int(args[0])) ? det->getDacIndex(args[0]) : StringTo<defs::dacIndex>(args[0])"
|
||||
value: "((det->getDetectorType().squash() == defs::CHIPTESTBOARD || det->getDetectorType().squash() == defs::XILINX_CHIPTESTBOARD) && !is_int(args[0])) ? det->getDacIndex(args[0]) : StringTo<defs::dacIndex>(args[0])"
|
||||
function: getDAC
|
||||
require_det_id: true
|
||||
input_types: [ defs::dacIndex, bool ]
|
||||
@ -3175,7 +3189,7 @@ dac:
|
||||
output: [ 'args[0]', "' '", OutString(t) ]
|
||||
- argc: 2
|
||||
exceptions:
|
||||
- condition: "is_int(args[0]) && det->getDetectorType().squash() != defs::CHIPTESTBOARD"
|
||||
- condition: "is_int(args[0]) && det->getDetectorType().squash() != defs::CHIPTESTBOARD && det->getDetectorType().squash() != defs::XILINX_CHIPTESTBOARD"
|
||||
message: '"Dac indices can only be used for chip test board. Use daclist to get list of dac names for current detector."'
|
||||
- condition: 'args[1] != "mv" && args[1] != "mV"'
|
||||
message: '"Unknown argument " + args[1] + ". Did you mean mV?"'
|
||||
@ -3184,12 +3198,12 @@ dac:
|
||||
output: [ 'args[0]', "' '" , OutString(t), '" mV"' ]
|
||||
PUT:
|
||||
exceptions:
|
||||
- condition: "is_int(args[0]) && det->getDetectorType().squash() != defs::CHIPTESTBOARD"
|
||||
- condition: "is_int(args[0]) && det->getDetectorType().squash() != defs::CHIPTESTBOARD && det->getDetectorType().squash() != defs::XILINX_CHIPTESTBOARD"
|
||||
message: '"Dac indices can only be used for chip test board. Use daclist to get list of dac names for current detector."'
|
||||
extra_variables:
|
||||
- name: dacIndex
|
||||
type: defs::dacIndex
|
||||
value: "(det->getDetectorType().squash() == defs::CHIPTESTBOARD && !is_int(args[0])) ? det->getDacIndex(args[0]) : StringTo<defs::dacIndex>(args[0])"
|
||||
value: "((det->getDetectorType().squash() == defs::CHIPTESTBOARD || det->getDetectorType().squash() == defs::XILINX_CHIPTESTBOARD) && !is_int(args[0])) ? det->getDacIndex(args[0]) : StringTo<defs::dacIndex>(args[0])"
|
||||
function: setDAC
|
||||
require_det_id: true
|
||||
input_types: [ defs::dacIndex, int, bool ]
|
||||
@ -4141,7 +4155,7 @@ updatekernel:
|
||||
output: [ '"successful"' ]
|
||||
|
||||
update:
|
||||
help: "\n\tWithout tftp: [server_name (incl fullpath)] [fname.pof (incl full path)] This does not use tftp.\n\t\t[Jungfrau][Moench][Gotthard][CTB] Updates the firmware, detector server, deletes old server, creates the symbolic link and then reboots detector controller. \n\t\t[Mythen3][Gotthard2] will require a script to start up the shorter named server link at start up. \n\t\tserver_name is full path name of detector server binary\n\t\tfname is full path of programming file"
|
||||
help: "\n\tWithout tftp: [server_name (incl fullpath)] [fname.pof (incl full path)] This does not use tftp.\n\t\t[Jungfrau][Moench][Gotthard][Ctb] Updates the firmware, detector server, deletes old server, creates the symbolic link and then reboots detector controller. \n\t\t[Mythen3][Gotthard2] will require a script to start up the shorter named server link at start up. \n\t\tserver_name is full path name of detector server binary\n\t\tfname is full path of programming file"
|
||||
actions:
|
||||
PUT:
|
||||
argc: 2
|
||||
|
@ -202,7 +202,8 @@ adcindex:
|
||||
check_det_id: true
|
||||
convert_det_id: true
|
||||
exceptions:
|
||||
- condition: det->getDetectorType().squash() != defs::CHIPTESTBOARD
|
||||
- condition: det->getDetectorType().squash(defs::GENERIC) != defs::CHIPTESTBOARD
|
||||
&& det->getDetectorType().squash(defs::GENERIC) != defs::XILINX_CHIPTESTBOARD
|
||||
message: cmd + " only allowed for CTB."
|
||||
function: getAdcIndex
|
||||
input:
|
||||
@ -215,7 +216,7 @@ adcindex:
|
||||
store_result_in_t: true
|
||||
command_name: adcindex
|
||||
function_alias: adcindex
|
||||
help: "[name] \n\t\t[ChipTestBoard] Get the adc index for the given name."
|
||||
help: "[name] \n\t\t[Ctb][Xilinx_Ctb] Get the adc index for the given name."
|
||||
infer_action: true
|
||||
template: true
|
||||
adcinvert:
|
||||
@ -268,8 +269,13 @@ adclist:
|
||||
check_det_id: true
|
||||
convert_det_id: true
|
||||
exceptions:
|
||||
- condition: cmd != "daclist" && det->getDetectorType().squash() != defs::CHIPTESTBOARD
|
||||
- condition: cmd != "daclist" && det_type != defs::CHIPTESTBOARD && det_type
|
||||
!= defs::XILINX_CHIPTESTBOARD
|
||||
message: cmd + " only allowed for CTB."
|
||||
extra_variables:
|
||||
- name: det_type
|
||||
type: auto
|
||||
value: det->getDetectorType().squash(defs::GENERIC);
|
||||
function: getAdcNames
|
||||
input: []
|
||||
input_types: []
|
||||
@ -287,10 +293,16 @@ adclist:
|
||||
check_det_id: true
|
||||
convert_det_id: true
|
||||
exceptions:
|
||||
- condition: cmd != "daclist" && det->getDetectorType().squash() != defs::CHIPTESTBOARD
|
||||
- condition: cmd != "daclist" && det_type != defs::CHIPTESTBOARD && det_type
|
||||
!= defs::XILINX_CHIPTESTBOARD
|
||||
message: cmd + " only allowed for CTB."
|
||||
- condition: cmd == "daclist" && det->getDetectorType().squash() != defs::CHIPTESTBOARD
|
||||
- condition: cmd == "daclist" && det_type != defs::CHIPTESTBOARD && det_type
|
||||
!= defs::XILINX_CHIPTESTBOARD
|
||||
message: '"This detector already has fixed dac names. Cannot change them."'
|
||||
extra_variables:
|
||||
- name: det_type
|
||||
type: auto
|
||||
value: det->getDetectorType().squash(defs::GENERIC);
|
||||
function: setAdcNames
|
||||
input:
|
||||
- args
|
||||
@ -302,8 +314,8 @@ adclist:
|
||||
store_result_in_t: false
|
||||
command_name: adclist
|
||||
function_alias: adclist
|
||||
help: "[adcname1 adcname2 .. adcname32] \n\t\t[ChipTestBoard] Set the list of adc\
|
||||
\ names for this board."
|
||||
help: "[adcname1 adcname2 .. adcname32] \n\t\t[Ctb][Xilinx_Ctb] Set the list of\
|
||||
\ adc names for this board."
|
||||
infer_action: true
|
||||
template: true
|
||||
adcname:
|
||||
@ -318,7 +330,8 @@ adcname:
|
||||
check_det_id: true
|
||||
convert_det_id: true
|
||||
exceptions:
|
||||
- condition: det->getDetectorType().squash() != defs::CHIPTESTBOARD
|
||||
- condition: det->getDetectorType().squash(defs::GENERIC) != defs::CHIPTESTBOARD
|
||||
&& det->getDetectorType().squash(defs::GENERIC) != defs::XILINX_CHIPTESTBOARD
|
||||
message: cmd + " only allowed for CTB."
|
||||
function: getAdcName
|
||||
input:
|
||||
@ -343,7 +356,8 @@ adcname:
|
||||
check_det_id: true
|
||||
convert_det_id: true
|
||||
exceptions:
|
||||
- condition: det->getDetectorType().squash() != defs::CHIPTESTBOARD
|
||||
- condition: det->getDetectorType().squash(defs::GENERIC) != defs::CHIPTESTBOARD
|
||||
&& det->getDetectorType().squash(defs::GENERIC) != defs::XILINX_CHIPTESTBOARD
|
||||
message: cmd + " only allowed for CTB."
|
||||
function: setAdcName
|
||||
input:
|
||||
@ -358,8 +372,8 @@ adcname:
|
||||
store_result_in_t: false
|
||||
command_name: adcname
|
||||
function_alias: adcname
|
||||
help: "[0-31][name] \n\t\t[ChipTestBoard] Set the adc at the given position to the\
|
||||
\ given name."
|
||||
help: "[0-31][name] \n\t\t[Ctb][Xilinx_Ctb] Set the adc at the given position to\
|
||||
\ the given name."
|
||||
infer_action: true
|
||||
template: true
|
||||
adcphase:
|
||||
@ -708,7 +722,7 @@ asamples:
|
||||
store_result_in_t: false
|
||||
command_name: asamples
|
||||
function_alias: asamples
|
||||
help: "[n_samples]\n\t[CTB] Number of analog samples expected."
|
||||
help: "[n_samples]\n\t[Ctb] Number of analog samples expected."
|
||||
infer_action: true
|
||||
template: true
|
||||
autocompdisable:
|
||||
@ -1711,13 +1725,15 @@ dac:
|
||||
convert_det_id: true
|
||||
exceptions:
|
||||
- condition: is_int(args[0]) && det->getDetectorType().squash() != defs::CHIPTESTBOARD
|
||||
&& det->getDetectorType().squash() != defs::XILINX_CHIPTESTBOARD
|
||||
message: '"Dac indices can only be used for chip test board. Use daclist
|
||||
to get list of dac names for current detector."'
|
||||
extra_variables:
|
||||
- name: dacIndex
|
||||
type: defs::dacIndex
|
||||
value: '(det->getDetectorType().squash() == defs::CHIPTESTBOARD && !is_int(args[0]))
|
||||
? det->getDacIndex(args[0]) : StringTo<defs::dacIndex>(args[0])'
|
||||
value: '((det->getDetectorType().squash() == defs::CHIPTESTBOARD || det->getDetectorType().squash()
|
||||
== defs::XILINX_CHIPTESTBOARD) && !is_int(args[0])) ? det->getDacIndex(args[0])
|
||||
: StringTo<defs::dacIndex>(args[0])'
|
||||
function: getDAC
|
||||
input:
|
||||
- dacIndex
|
||||
@ -1742,6 +1758,7 @@ dac:
|
||||
convert_det_id: true
|
||||
exceptions:
|
||||
- condition: is_int(args[0]) && det->getDetectorType().squash() != defs::CHIPTESTBOARD
|
||||
&& det->getDetectorType().squash() != defs::XILINX_CHIPTESTBOARD
|
||||
message: '"Dac indices can only be used for chip test board. Use daclist
|
||||
to get list of dac names for current detector."'
|
||||
- condition: args[1] != "mv" && args[1] != "mV"
|
||||
@ -1749,8 +1766,9 @@ dac:
|
||||
extra_variables:
|
||||
- name: dacIndex
|
||||
type: defs::dacIndex
|
||||
value: '(det->getDetectorType().squash() == defs::CHIPTESTBOARD && !is_int(args[0]))
|
||||
? det->getDacIndex(args[0]) : StringTo<defs::dacIndex>(args[0])'
|
||||
value: '((det->getDetectorType().squash() == defs::CHIPTESTBOARD || det->getDetectorType().squash()
|
||||
== defs::XILINX_CHIPTESTBOARD) && !is_int(args[0])) ? det->getDacIndex(args[0])
|
||||
: StringTo<defs::dacIndex>(args[0])'
|
||||
function: getDAC
|
||||
input:
|
||||
- dacIndex
|
||||
@ -1779,13 +1797,15 @@ dac:
|
||||
convert_det_id: true
|
||||
exceptions:
|
||||
- condition: is_int(args[0]) && det->getDetectorType().squash() != defs::CHIPTESTBOARD
|
||||
&& det->getDetectorType().squash() != defs::XILINX_CHIPTESTBOARD
|
||||
message: '"Dac indices can only be used for chip test board. Use daclist
|
||||
to get list of dac names for current detector."'
|
||||
extra_variables:
|
||||
- name: dacIndex
|
||||
type: defs::dacIndex
|
||||
value: '(det->getDetectorType().squash() == defs::CHIPTESTBOARD && !is_int(args[0]))
|
||||
? det->getDacIndex(args[0]) : StringTo<defs::dacIndex>(args[0])'
|
||||
value: '((det->getDetectorType().squash() == defs::CHIPTESTBOARD || det->getDetectorType().squash()
|
||||
== defs::XILINX_CHIPTESTBOARD) && !is_int(args[0])) ? det->getDacIndex(args[0])
|
||||
: StringTo<defs::dacIndex>(args[0])'
|
||||
function: setDAC
|
||||
input:
|
||||
- dacIndex
|
||||
@ -1814,13 +1834,15 @@ dac:
|
||||
convert_det_id: true
|
||||
exceptions:
|
||||
- condition: is_int(args[0]) && det->getDetectorType().squash() != defs::CHIPTESTBOARD
|
||||
&& det->getDetectorType().squash() != defs::XILINX_CHIPTESTBOARD
|
||||
message: '"Dac indices can only be used for chip test board. Use daclist
|
||||
to get list of dac names for current detector."'
|
||||
extra_variables:
|
||||
- name: dacIndex
|
||||
type: defs::dacIndex
|
||||
value: '(det->getDetectorType().squash() == defs::CHIPTESTBOARD && !is_int(args[0]))
|
||||
? det->getDacIndex(args[0]) : StringTo<defs::dacIndex>(args[0])'
|
||||
value: '((det->getDetectorType().squash() == defs::CHIPTESTBOARD || det->getDetectorType().squash()
|
||||
== defs::XILINX_CHIPTESTBOARD) && !is_int(args[0])) ? det->getDacIndex(args[0])
|
||||
: StringTo<defs::dacIndex>(args[0])'
|
||||
function: setDAC
|
||||
input:
|
||||
- dacIndex
|
||||
@ -1855,7 +1877,8 @@ dacindex:
|
||||
check_det_id: true
|
||||
convert_det_id: true
|
||||
exceptions:
|
||||
- condition: det->getDetectorType().squash() != defs::CHIPTESTBOARD
|
||||
- condition: det->getDetectorType().squash(defs::GENERIC) != defs::CHIPTESTBOARD
|
||||
&& det->getDetectorType().squash(defs::GENERIC) != defs::XILINX_CHIPTESTBOARD
|
||||
message: cmd + " only allowed for CTB."
|
||||
extra_variables:
|
||||
- name: index
|
||||
@ -1872,7 +1895,7 @@ dacindex:
|
||||
store_result_in_t: true
|
||||
command_name: dacindex
|
||||
function_alias: dacindex
|
||||
help: "[name] \n\t\t[ChipTestBoard] Get the dac index for the given name."
|
||||
help: "[name] \n\t\t[Ctb][Xilinx_Ctb] Get the dac index for the given name."
|
||||
infer_action: true
|
||||
template: true
|
||||
daclist:
|
||||
@ -1885,8 +1908,13 @@ daclist:
|
||||
check_det_id: true
|
||||
convert_det_id: true
|
||||
exceptions:
|
||||
- condition: cmd != "daclist" && det->getDetectorType().squash() != defs::CHIPTESTBOARD
|
||||
- condition: cmd != "daclist" && det_type != defs::CHIPTESTBOARD && det_type
|
||||
!= defs::XILINX_CHIPTESTBOARD
|
||||
message: cmd + " only allowed for CTB."
|
||||
extra_variables:
|
||||
- name: det_type
|
||||
type: auto
|
||||
value: det->getDetectorType().squash(defs::GENERIC);
|
||||
function: getDacNames
|
||||
input: []
|
||||
input_types: []
|
||||
@ -1904,10 +1932,16 @@ daclist:
|
||||
check_det_id: true
|
||||
convert_det_id: true
|
||||
exceptions:
|
||||
- condition: cmd != "daclist" && det->getDetectorType().squash() != defs::CHIPTESTBOARD
|
||||
- condition: cmd != "daclist" && det_type != defs::CHIPTESTBOARD && det_type
|
||||
!= defs::XILINX_CHIPTESTBOARD
|
||||
message: cmd + " only allowed for CTB."
|
||||
- condition: cmd == "daclist" && det->getDetectorType().squash() != defs::CHIPTESTBOARD
|
||||
- condition: cmd == "daclist" && det_type != defs::CHIPTESTBOARD && det_type
|
||||
!= defs::XILINX_CHIPTESTBOARD
|
||||
message: '"This detector already has fixed dac names. Cannot change them."'
|
||||
extra_variables:
|
||||
- name: det_type
|
||||
type: auto
|
||||
value: det->getDetectorType().squash(defs::GENERIC);
|
||||
function: setDacNames
|
||||
input:
|
||||
- args
|
||||
@ -1919,9 +1953,9 @@ daclist:
|
||||
store_result_in_t: false
|
||||
command_name: daclist
|
||||
function_alias: daclist
|
||||
help: "[dacname1 dacname2 .. dacname18] \n\t\t[ChipTestBoard] Set the list of dac\
|
||||
\ names for this detector.\n\t\t[All] Gets the list of dac names for every dac\
|
||||
\ for this detector."
|
||||
help: "[dacname1 dacname2 .. dacname18] \n\t\t[Ctb][Xilinx_Ctb] Set the list of\
|
||||
\ dac names for this detector.\n\t\t[All] Gets the list of dac names for every\
|
||||
\ dac for this detector."
|
||||
infer_action: true
|
||||
template: true
|
||||
dacname:
|
||||
@ -1936,7 +1970,8 @@ dacname:
|
||||
check_det_id: true
|
||||
convert_det_id: true
|
||||
exceptions:
|
||||
- condition: det->getDetectorType().squash() != defs::CHIPTESTBOARD
|
||||
- condition: det->getDetectorType().squash(defs::GENERIC) != defs::CHIPTESTBOARD
|
||||
&& det->getDetectorType().squash(defs::GENERIC) != defs::XILINX_CHIPTESTBOARD
|
||||
message: cmd + " only allowed for CTB."
|
||||
extra_variables:
|
||||
- name: index
|
||||
@ -1965,7 +2000,8 @@ dacname:
|
||||
check_det_id: true
|
||||
convert_det_id: true
|
||||
exceptions:
|
||||
- condition: det->getDetectorType().squash() != defs::CHIPTESTBOARD
|
||||
- condition: det->getDetectorType().squash(defs::GENERIC) != defs::CHIPTESTBOARD
|
||||
&& det->getDetectorType().squash(defs::GENERIC) != defs::XILINX_CHIPTESTBOARD
|
||||
message: cmd + " only allowed for CTB."
|
||||
extra_variables:
|
||||
- name: index
|
||||
@ -1984,8 +2020,8 @@ dacname:
|
||||
store_result_in_t: false
|
||||
command_name: dacname
|
||||
function_alias: dacname
|
||||
help: "[0-17][name] \n\t\t[ChipTestBoard] Set the dac at the given position to the\
|
||||
\ given name."
|
||||
help: "[0-17][name] \n\t\t[Ctb][Xilinx_Ctb] Set the dac at the given position to\
|
||||
\ the given name."
|
||||
infer_action: true
|
||||
template: true
|
||||
dacvalues:
|
||||
@ -2253,7 +2289,7 @@ dbitpipeline:
|
||||
command_name: dbitpipeline
|
||||
function_alias: dbitpipeline
|
||||
help: "[n_value]\n\t[Ctb][Gotthard2] Pipeline of the clock for latching digital\
|
||||
\ bits.\n\t[Gotthard2] Options: 0-7\n\t[CTB] Options: 0-255"
|
||||
\ bits.\n\t[Gotthard2] Options: 0-7\n\t[Ctb] Options: 0-255"
|
||||
infer_action: true
|
||||
template: true
|
||||
defaultdac:
|
||||
@ -2494,7 +2530,7 @@ delayl:
|
||||
store_result_in_t: true
|
||||
command_name: delayl
|
||||
function_alias: delayl
|
||||
help: "\n\t[Gotthard][Jungfrau][Moench][Mythen3][Gotthard2][CTB] Delay Left in Acquisition.\
|
||||
help: "\n\t[Gotthard][Jungfrau][Moench][Mythen3][Gotthard2][Ctb] Delay Left in Acquisition.\
|
||||
\ \n\t[Gotthard2] only in continuous mode."
|
||||
infer_action: true
|
||||
template: true
|
||||
@ -2728,7 +2764,7 @@ dsamples:
|
||||
store_result_in_t: false
|
||||
command_name: dsamples
|
||||
function_alias: dsamples
|
||||
help: "[n_value]\n\t[CTB] Number of digital samples expected."
|
||||
help: "[n_value]\n\t[Ctb] Number of digital samples expected."
|
||||
infer_action: true
|
||||
template: true
|
||||
execcommand:
|
||||
@ -3870,7 +3906,7 @@ framecounter:
|
||||
store_result_in_t: true
|
||||
command_name: framecounter
|
||||
function_alias: framecounter
|
||||
help: "\n\t[Jungfrau][Moench][Mythen3][Gotthard2][CTB] Number of frames from start\
|
||||
help: "\n\t[Jungfrau][Moench][Mythen3][Gotthard2][Ctb] Number of frames from start\
|
||||
\ run control.\n\t[Gotthard2] only in continuous mode."
|
||||
infer_action: true
|
||||
template: true
|
||||
@ -3934,7 +3970,7 @@ framesl:
|
||||
store_result_in_t: true
|
||||
command_name: framesl
|
||||
function_alias: framesl
|
||||
help: "\n\t[Gotthard][Jungfrau][Moench][Mythen3][Gotthard2][CTB] Number of frames\
|
||||
help: "\n\t[Gotthard][Jungfrau][Moench][Mythen3][Gotthard2][Ctb] Number of frames\
|
||||
\ left in acquisition. \n\t[Gotthard2] only in continuous auto mode."
|
||||
infer_action: true
|
||||
template: true
|
||||
@ -3969,7 +4005,7 @@ frametime:
|
||||
store_result_in_t: true
|
||||
command_name: frametime
|
||||
function_alias: frametime
|
||||
help: "[(optional unit) ns|us|ms|s]\n\t[Jungfrau][Moench][Mythen3][Gotthard2][CTB]\
|
||||
help: "[(optional unit) ns|us|ms|s]\n\t[Jungfrau][Moench][Mythen3][Gotthard2][Ctb]\
|
||||
\ Timestamp at a frame start.\n\t[Gotthard2] not in burst and auto mode."
|
||||
infer_action: true
|
||||
template: true
|
||||
@ -5252,7 +5288,7 @@ maxadcphaseshift:
|
||||
store_result_in_t: true
|
||||
command_name: maxadcphaseshift
|
||||
function_alias: maxadcphaseshift
|
||||
help: "\n\t[Jungfrau][Moench][CTB] Absolute maximum Phase shift of ADC clock."
|
||||
help: "\n\t[Jungfrau][Moench][Ctb] Absolute maximum Phase shift of ADC clock."
|
||||
infer_action: true
|
||||
template: true
|
||||
maxclkphaseshift:
|
||||
@ -5305,7 +5341,7 @@ maxdbitphaseshift:
|
||||
store_result_in_t: true
|
||||
command_name: maxdbitphaseshift
|
||||
function_alias: maxdbitphaseshift
|
||||
help: "\n\t[CTB][Jungfrau] Absolute maximum Phase shift of of the clock to latch\
|
||||
help: "\n\t[Ctb][Jungfrau] Absolute maximum Phase shift of of the clock to latch\
|
||||
\ digital bits."
|
||||
infer_action: true
|
||||
template: true
|
||||
@ -5438,7 +5474,7 @@ nextframenumber:
|
||||
store_result_in_t: false
|
||||
command_name: nextframenumber
|
||||
function_alias: nextframenumber
|
||||
help: "[n_value]\n\t[Eiger][Jungfrau][Moench][CTB] Next frame number. Stopping acquisition\
|
||||
help: "[n_value]\n\t[Eiger][Jungfrau][Moench][Ctb] Next frame number. Stopping acquisition\
|
||||
\ might result in different frame numbers for different modules."
|
||||
infer_action: true
|
||||
template: true
|
||||
@ -7142,7 +7178,7 @@ periodl:
|
||||
store_result_in_t: true
|
||||
command_name: periodl
|
||||
function_alias: periodl
|
||||
help: "\n\t[Gotthard][Jungfrau][Moench][CTB][Mythen3][Gotthard2] Period left for\
|
||||
help: "\n\t[Gotthard][Jungfrau][Moench][Ctb][Mythen3][Gotthard2] Period left for\
|
||||
\ current frame. \n\t[Gotthard2] only in continuous mode."
|
||||
infer_action: true
|
||||
template: true
|
||||
@ -7281,7 +7317,8 @@ powerindex:
|
||||
check_det_id: true
|
||||
convert_det_id: true
|
||||
exceptions:
|
||||
- condition: det->getDetectorType().squash() != defs::CHIPTESTBOARD
|
||||
- condition: det->getDetectorType().squash(defs::GENERIC) != defs::CHIPTESTBOARD
|
||||
&& det->getDetectorType().squash(defs::GENERIC) != defs::XILINX_CHIPTESTBOARD
|
||||
message: cmd + " only allowed for CTB."
|
||||
extra_variables:
|
||||
- name: index
|
||||
@ -7298,7 +7335,7 @@ powerindex:
|
||||
store_result_in_t: true
|
||||
command_name: powerindex
|
||||
function_alias: powerindex
|
||||
help: "[name] \n\t\t[ChipTestBoard] Get the power index for the given name."
|
||||
help: "[name] \n\t\t[Ctb][Xilinx_Ctb] Get the power index for the given name."
|
||||
infer_action: true
|
||||
template: true
|
||||
powerlist:
|
||||
@ -7311,8 +7348,13 @@ powerlist:
|
||||
check_det_id: true
|
||||
convert_det_id: true
|
||||
exceptions:
|
||||
- condition: cmd != "daclist" && det->getDetectorType().squash() != defs::CHIPTESTBOARD
|
||||
- condition: cmd != "daclist" && det_type != defs::CHIPTESTBOARD && det_type
|
||||
!= defs::XILINX_CHIPTESTBOARD
|
||||
message: cmd + " only allowed for CTB."
|
||||
extra_variables:
|
||||
- name: det_type
|
||||
type: auto
|
||||
value: det->getDetectorType().squash(defs::GENERIC);
|
||||
function: getPowerNames
|
||||
input: []
|
||||
input_types: []
|
||||
@ -7330,10 +7372,16 @@ powerlist:
|
||||
check_det_id: true
|
||||
convert_det_id: true
|
||||
exceptions:
|
||||
- condition: cmd != "daclist" && det->getDetectorType().squash() != defs::CHIPTESTBOARD
|
||||
- condition: cmd != "daclist" && det_type != defs::CHIPTESTBOARD && det_type
|
||||
!= defs::XILINX_CHIPTESTBOARD
|
||||
message: cmd + " only allowed for CTB."
|
||||
- condition: cmd == "daclist" && det->getDetectorType().squash() != defs::CHIPTESTBOARD
|
||||
- condition: cmd == "daclist" && det_type != defs::CHIPTESTBOARD && det_type
|
||||
!= defs::XILINX_CHIPTESTBOARD
|
||||
message: '"This detector already has fixed dac names. Cannot change them."'
|
||||
extra_variables:
|
||||
- name: det_type
|
||||
type: auto
|
||||
value: det->getDetectorType().squash(defs::GENERIC);
|
||||
function: setPowerNames
|
||||
input:
|
||||
- args
|
||||
@ -7345,7 +7393,7 @@ powerlist:
|
||||
store_result_in_t: false
|
||||
command_name: powerlist
|
||||
function_alias: powerlist
|
||||
help: "[powername1 powername2 .. powername4] \n\t\t[ChipTestBoard] Set the list\
|
||||
help: "[powername1 powername2 .. powername4] \n\t\t[Ctb][Xilinx_Ctb] Set the list\
|
||||
\ of power names for this board."
|
||||
infer_action: true
|
||||
template: true
|
||||
@ -7361,7 +7409,8 @@ powername:
|
||||
check_det_id: true
|
||||
convert_det_id: true
|
||||
exceptions:
|
||||
- condition: det->getDetectorType().squash() != defs::CHIPTESTBOARD
|
||||
- condition: det->getDetectorType().squash(defs::GENERIC) != defs::CHIPTESTBOARD
|
||||
&& det->getDetectorType().squash(defs::GENERIC) != defs::XILINX_CHIPTESTBOARD
|
||||
message: cmd + " only allowed for CTB."
|
||||
extra_variables:
|
||||
- name: index
|
||||
@ -7390,7 +7439,8 @@ powername:
|
||||
check_det_id: true
|
||||
convert_det_id: true
|
||||
exceptions:
|
||||
- condition: det->getDetectorType().squash() != defs::CHIPTESTBOARD
|
||||
- condition: det->getDetectorType().squash(defs::GENERIC) != defs::CHIPTESTBOARD
|
||||
&& det->getDetectorType().squash(defs::GENERIC) != defs::XILINX_CHIPTESTBOARD
|
||||
message: cmd + " only allowed for CTB."
|
||||
extra_variables:
|
||||
- name: index
|
||||
@ -7409,7 +7459,7 @@ powername:
|
||||
store_result_in_t: false
|
||||
command_name: powername
|
||||
function_alias: powername
|
||||
help: "[0-4][name] \n\t\t[ChipTestBoard] Set the power at the given position to\
|
||||
help: "[0-4][name] \n\t\t[Ctb][Xilinx_Ctb] Set the power at the given position to\
|
||||
\ the given name."
|
||||
infer_action: true
|
||||
template: true
|
||||
@ -7436,7 +7486,7 @@ powervalues:
|
||||
store_result_in_t: true
|
||||
command_name: powervalues
|
||||
function_alias: powervalues
|
||||
help: "[name] \n\t\t[ChipTestBoard] Get values of all powers."
|
||||
help: "[name] \n\t\t[Ctb][Xilinx_Ctb] Get values of all powers."
|
||||
infer_action: true
|
||||
programfpga:
|
||||
actions:
|
||||
@ -7778,8 +7828,12 @@ readoutspeed:
|
||||
check_det_id: false
|
||||
convert_det_id: true
|
||||
exceptions:
|
||||
- condition: det->getDetectorType().squash() == defs::CHIPTESTBOARD
|
||||
- condition: det_type == defs::CHIPTESTBOARD || det_type == defs::XILINX_CHIPTESTBOARD
|
||||
message: '"ReadoutSpeed not implemented. Did you mean runclk?"'
|
||||
extra_variables:
|
||||
- name: det_type
|
||||
type: auto
|
||||
value: det->getDetectorType().squash(defs::GENERIC);
|
||||
function: getReadoutSpeed
|
||||
input: []
|
||||
input_types: []
|
||||
@ -7797,8 +7851,12 @@ readoutspeed:
|
||||
check_det_id: false
|
||||
convert_det_id: true
|
||||
exceptions:
|
||||
- condition: det->getDetectorType().squash() == defs::CHIPTESTBOARD
|
||||
- condition: det_type == defs::CHIPTESTBOARD || det_type == defs::XILINX_CHIPTESTBOARD
|
||||
message: '"ReadoutSpeed not implemented. Did you mean runclk?"'
|
||||
extra_variables:
|
||||
- name: det_type
|
||||
type: auto
|
||||
value: det->getDetectorType().squash(defs::GENERIC);
|
||||
function: setReadoutSpeed
|
||||
input:
|
||||
- args[0]
|
||||
@ -8058,7 +8116,7 @@ romode:
|
||||
store_result_in_t: false
|
||||
command_name: romode
|
||||
function_alias: romode
|
||||
help: "[analog|digital|analog_digital|transceiver|digital_transceiver]\n\t[CTB]\
|
||||
help: "[analog|digital|analog_digital|transceiver|digital_transceiver]\n\t[Ctb]\
|
||||
\ Readout mode. Default is analog."
|
||||
infer_action: true
|
||||
template: true
|
||||
@ -8172,7 +8230,7 @@ runtime:
|
||||
store_result_in_t: true
|
||||
command_name: runtime
|
||||
function_alias: runtime
|
||||
help: "[(optional unit) ns|us|ms|s]\n\t[Jungfrau][Moench][Mythen3][Gotthard2][CTB]\
|
||||
help: "[(optional unit) ns|us|ms|s]\n\t[Jungfrau][Moench][Mythen3][Gotthard2][Ctb]\
|
||||
\ Time from detector start up.\n\t[Gotthard2] not in burst and auto mode."
|
||||
infer_action: true
|
||||
template: true
|
||||
@ -9554,7 +9612,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]\nSerial number\
|
||||
\ of detector."
|
||||
infer_action: true
|
||||
template: true
|
||||
@ -9710,7 +9768,8 @@ signalindex:
|
||||
check_det_id: true
|
||||
convert_det_id: true
|
||||
exceptions:
|
||||
- condition: det->getDetectorType().squash() != defs::CHIPTESTBOARD
|
||||
- condition: det->getDetectorType().squash(defs::GENERIC) != defs::CHIPTESTBOARD
|
||||
&& det->getDetectorType().squash(defs::GENERIC) != defs::XILINX_CHIPTESTBOARD
|
||||
message: cmd + " only allowed for CTB."
|
||||
function: getSignalIndex
|
||||
input:
|
||||
@ -9723,7 +9782,7 @@ signalindex:
|
||||
store_result_in_t: true
|
||||
command_name: signalindex
|
||||
function_alias: signalindex
|
||||
help: "[name] \n\t\t[ChipTestBoard] Get the signal index for the given name."
|
||||
help: "[name] \n\t\t[Ctb][Xilinx_Ctb] Get the signal index for the given name."
|
||||
infer_action: true
|
||||
template: true
|
||||
signallist:
|
||||
@ -9736,8 +9795,13 @@ signallist:
|
||||
check_det_id: true
|
||||
convert_det_id: true
|
||||
exceptions:
|
||||
- condition: cmd != "daclist" && det->getDetectorType().squash() != defs::CHIPTESTBOARD
|
||||
- condition: cmd != "daclist" && det_type != defs::CHIPTESTBOARD && det_type
|
||||
!= defs::XILINX_CHIPTESTBOARD
|
||||
message: cmd + " only allowed for CTB."
|
||||
extra_variables:
|
||||
- name: det_type
|
||||
type: auto
|
||||
value: det->getDetectorType().squash(defs::GENERIC);
|
||||
function: getSignalNames
|
||||
input: []
|
||||
input_types: []
|
||||
@ -9755,10 +9819,16 @@ signallist:
|
||||
check_det_id: true
|
||||
convert_det_id: true
|
||||
exceptions:
|
||||
- condition: cmd != "daclist" && det->getDetectorType().squash() != defs::CHIPTESTBOARD
|
||||
- condition: cmd != "daclist" && det_type != defs::CHIPTESTBOARD && det_type
|
||||
!= defs::XILINX_CHIPTESTBOARD
|
||||
message: cmd + " only allowed for CTB."
|
||||
- condition: cmd == "daclist" && det->getDetectorType().squash() != defs::CHIPTESTBOARD
|
||||
- condition: cmd == "daclist" && det_type != defs::CHIPTESTBOARD && det_type
|
||||
!= defs::XILINX_CHIPTESTBOARD
|
||||
message: '"This detector already has fixed dac names. Cannot change them."'
|
||||
extra_variables:
|
||||
- name: det_type
|
||||
type: auto
|
||||
value: det->getDetectorType().squash(defs::GENERIC);
|
||||
function: setSignalNames
|
||||
input:
|
||||
- args
|
||||
@ -9770,8 +9840,8 @@ signallist:
|
||||
store_result_in_t: false
|
||||
command_name: signallist
|
||||
function_alias: signallist
|
||||
help: "[signalname1 signalname2 .. signalname63] \n\t\t[ChipTestBoard] Set the list\
|
||||
\ of signal names for this board."
|
||||
help: "[signalname1 signalname2 .. signalname63] \n\t\t[Ctb][Xilinx_Ctb] Set the\
|
||||
\ list of signal names for this board."
|
||||
infer_action: true
|
||||
template: true
|
||||
signalname:
|
||||
@ -9786,7 +9856,8 @@ signalname:
|
||||
check_det_id: true
|
||||
convert_det_id: true
|
||||
exceptions:
|
||||
- condition: det->getDetectorType().squash() != defs::CHIPTESTBOARD
|
||||
- condition: det->getDetectorType().squash(defs::GENERIC) != defs::CHIPTESTBOARD
|
||||
&& det->getDetectorType().squash(defs::GENERIC) != defs::XILINX_CHIPTESTBOARD
|
||||
message: cmd + " only allowed for CTB."
|
||||
function: getSignalName
|
||||
input:
|
||||
@ -9811,7 +9882,8 @@ signalname:
|
||||
check_det_id: true
|
||||
convert_det_id: true
|
||||
exceptions:
|
||||
- condition: det->getDetectorType().squash() != defs::CHIPTESTBOARD
|
||||
- condition: det->getDetectorType().squash(defs::GENERIC) != defs::CHIPTESTBOARD
|
||||
&& det->getDetectorType().squash(defs::GENERIC) != defs::XILINX_CHIPTESTBOARD
|
||||
message: cmd + " only allowed for CTB."
|
||||
function: setSignalName
|
||||
input:
|
||||
@ -9826,8 +9898,8 @@ signalname:
|
||||
store_result_in_t: false
|
||||
command_name: signalname
|
||||
function_alias: signalname
|
||||
help: "[0-63][name] \n\t\t[ChipTestBoard] Set the signal at the given position to\
|
||||
\ the given name."
|
||||
help: "[0-63][name] \n\t\t[Ctb][Xilinx_Ctb] Set the signal at the given position\
|
||||
\ to the given name."
|
||||
infer_action: true
|
||||
template: true
|
||||
slowadc:
|
||||
@ -9863,7 +9935,8 @@ slowadcindex:
|
||||
check_det_id: true
|
||||
convert_det_id: true
|
||||
exceptions:
|
||||
- condition: det->getDetectorType().squash() != defs::CHIPTESTBOARD
|
||||
- condition: det->getDetectorType().squash(defs::GENERIC) != defs::CHIPTESTBOARD
|
||||
&& det->getDetectorType().squash(defs::GENERIC) != defs::XILINX_CHIPTESTBOARD
|
||||
message: cmd + " only allowed for CTB."
|
||||
extra_variables:
|
||||
- name: index
|
||||
@ -9880,7 +9953,7 @@ slowadcindex:
|
||||
store_result_in_t: true
|
||||
command_name: slowadcindex
|
||||
function_alias: slowadcindex
|
||||
help: "[name] \n\t\t[ChipTestBoard] Get the slowadc index for the given name."
|
||||
help: "[name] \n\t\t[Ctb][Xilinx_Ctb] Get the slowadc index for the given name."
|
||||
infer_action: true
|
||||
template: true
|
||||
slowadclist:
|
||||
@ -9893,8 +9966,13 @@ slowadclist:
|
||||
check_det_id: true
|
||||
convert_det_id: true
|
||||
exceptions:
|
||||
- condition: cmd != "daclist" && det->getDetectorType().squash() != defs::CHIPTESTBOARD
|
||||
- condition: cmd != "daclist" && det_type != defs::CHIPTESTBOARD && det_type
|
||||
!= defs::XILINX_CHIPTESTBOARD
|
||||
message: cmd + " only allowed for CTB."
|
||||
extra_variables:
|
||||
- name: det_type
|
||||
type: auto
|
||||
value: det->getDetectorType().squash(defs::GENERIC);
|
||||
function: getSlowADCNames
|
||||
input: []
|
||||
input_types: []
|
||||
@ -9912,10 +9990,16 @@ slowadclist:
|
||||
check_det_id: true
|
||||
convert_det_id: true
|
||||
exceptions:
|
||||
- condition: cmd != "daclist" && det->getDetectorType().squash() != defs::CHIPTESTBOARD
|
||||
- condition: cmd != "daclist" && det_type != defs::CHIPTESTBOARD && det_type
|
||||
!= defs::XILINX_CHIPTESTBOARD
|
||||
message: cmd + " only allowed for CTB."
|
||||
- condition: cmd == "daclist" && det->getDetectorType().squash() != defs::CHIPTESTBOARD
|
||||
- condition: cmd == "daclist" && det_type != defs::CHIPTESTBOARD && det_type
|
||||
!= defs::XILINX_CHIPTESTBOARD
|
||||
message: '"This detector already has fixed dac names. Cannot change them."'
|
||||
extra_variables:
|
||||
- name: det_type
|
||||
type: auto
|
||||
value: det->getDetectorType().squash(defs::GENERIC);
|
||||
function: setSlowADCNames
|
||||
input:
|
||||
- args
|
||||
@ -9927,7 +10011,7 @@ slowadclist:
|
||||
store_result_in_t: false
|
||||
command_name: slowadclist
|
||||
function_alias: slowadclist
|
||||
help: "[slowadcname1 slowadcname2 .. slowadcname7] \n\t\t[ChipTestBoard] Set the\
|
||||
help: "[slowadcname1 slowadcname2 .. slowadcname7] \n\t\t[Ctb][Xilinx_Ctb] Set the\
|
||||
\ list of slowadc names for this board."
|
||||
infer_action: true
|
||||
template: true
|
||||
@ -9943,7 +10027,8 @@ slowadcname:
|
||||
check_det_id: true
|
||||
convert_det_id: true
|
||||
exceptions:
|
||||
- condition: det->getDetectorType().squash() != defs::CHIPTESTBOARD
|
||||
- condition: det->getDetectorType().squash(defs::GENERIC) != defs::CHIPTESTBOARD
|
||||
&& det->getDetectorType().squash(defs::GENERIC) != defs::XILINX_CHIPTESTBOARD
|
||||
message: cmd + " only allowed for CTB."
|
||||
extra_variables:
|
||||
- name: index
|
||||
@ -9972,7 +10057,8 @@ slowadcname:
|
||||
check_det_id: true
|
||||
convert_det_id: true
|
||||
exceptions:
|
||||
- condition: det->getDetectorType().squash() != defs::CHIPTESTBOARD
|
||||
- condition: det->getDetectorType().squash(defs::GENERIC) != defs::CHIPTESTBOARD
|
||||
&& det->getDetectorType().squash(defs::GENERIC) != defs::XILINX_CHIPTESTBOARD
|
||||
message: cmd + " only allowed for CTB."
|
||||
extra_variables:
|
||||
- name: index
|
||||
@ -9991,8 +10077,8 @@ slowadcname:
|
||||
store_result_in_t: false
|
||||
command_name: slowadcname
|
||||
function_alias: slowadcname
|
||||
help: "[0-7][name] \n\t\t[ChipTestBoard] Set the slowadc at the given position to\
|
||||
\ the given name."
|
||||
help: "[0-7][name] \n\t\t[Ctb][Xilinx_Ctb] Set the slowadc at the given position\
|
||||
\ to the given name."
|
||||
infer_action: true
|
||||
template: true
|
||||
slowadcvalues:
|
||||
@ -10018,7 +10104,7 @@ slowadcvalues:
|
||||
store_result_in_t: true
|
||||
command_name: slowadcvalues
|
||||
function_alias: slowadcvalues
|
||||
help: "[name] \n\t\t[ChipTestBoard] Get values of all slow adcs."
|
||||
help: "[name] \n\t\t[Ctb][Xilinx_Ctb] Get values of all slow adcs."
|
||||
infer_action: true
|
||||
start:
|
||||
actions:
|
||||
@ -11373,7 +11459,7 @@ triggersl:
|
||||
store_result_in_t: true
|
||||
command_name: triggersl
|
||||
function_alias: triggersl
|
||||
help: "\n\t[Gotthard][Jungfrau][Moench][Mythen3][Gotthard2][CTB] Number of triggers\
|
||||
help: "\n\t[Gotthard][Jungfrau][Moench][Mythen3][Gotthard2][Ctb] Number of triggers\
|
||||
\ left in acquisition. Only when external trigger used."
|
||||
infer_action: true
|
||||
template: true
|
||||
@ -11530,7 +11616,7 @@ tsamples:
|
||||
store_result_in_t: false
|
||||
command_name: tsamples
|
||||
function_alias: tsamples
|
||||
help: "[n_value]\n\t[CTB] Number of transceiver samples expected."
|
||||
help: "[n_value]\n\t[Ctb] Number of transceiver samples expected."
|
||||
infer_action: true
|
||||
template: true
|
||||
txdelay:
|
||||
@ -11720,7 +11806,7 @@ type:
|
||||
command_name: type
|
||||
function_alias: type
|
||||
help: "\n\tReturns detector type. Can be Eiger, Jungfrau, Gotthard, Moench, Mythen3,\
|
||||
\ Gotthard2, ChipTestBoard"
|
||||
\ Gotthard2, ChipTestBoard, Xilinx_ChipTestBoard"
|
||||
infer_action: true
|
||||
template: true
|
||||
udp_cleardst:
|
||||
@ -12327,7 +12413,7 @@ update:
|
||||
command_name: update
|
||||
function_alias: update
|
||||
help: "\n\tWithout tftp: [server_name (incl fullpath)] [fname.pof (incl full path)]\
|
||||
\ This does not use tftp.\n\t\t[Jungfrau][Moench][Gotthard][CTB] Updates the firmware,\
|
||||
\ This does not use tftp.\n\t\t[Jungfrau][Moench][Gotthard][Ctb] Updates the firmware,\
|
||||
\ detector server, deletes old server, creates the symbolic link and then reboots\
|
||||
\ detector controller. \n\t\t[Mythen3][Gotthard2] will require a script to start\
|
||||
\ up the shorter named server link at start up. \n\t\tserver_name is full path\
|
||||
|
@ -98,7 +98,7 @@ class Detector {
|
||||
Result<std::string> getReceiverVersion(Positions pos = {}) const;
|
||||
|
||||
/** Options: EIGER, JUNGFRAU, GOTTHARD, MOENCH, MYTHEN3, GOTTHARD2,
|
||||
* CHIPTESTBOARD */
|
||||
* CHIPTESTBOARD, XILINX_CHIPTESTBOARD */
|
||||
Result<defs::detectorType> getDetectorType(Positions pos = {}) const;
|
||||
|
||||
/** Gets the total number of modules in shared memory */
|
||||
|
@ -264,7 +264,7 @@ std::string Caller::adcindex(int action) {
|
||||
if (action == slsDetectorDefs::HELP_ACTION) {
|
||||
os << "Command: adcindex" << std::endl;
|
||||
os << R"V0G0N([name]
|
||||
[ChipTestBoard] Get the adc index for the given name. )V0G0N"
|
||||
[Ctb][Xilinx_Ctb] Get the adc index for the given name. )V0G0N"
|
||||
<< std::endl;
|
||||
return os.str();
|
||||
}
|
||||
@ -289,7 +289,10 @@ std::string Caller::adcindex(int action) {
|
||||
// generate code for each action
|
||||
if (action == slsDetectorDefs::GET_ACTION) {
|
||||
if (args.size() == 1) {
|
||||
if (det->getDetectorType().squash() != defs::CHIPTESTBOARD) {
|
||||
if (det->getDetectorType().squash(defs::GENERIC) !=
|
||||
defs::CHIPTESTBOARD &&
|
||||
det->getDetectorType().squash(defs::GENERIC) !=
|
||||
defs::XILINX_CHIPTESTBOARD) {
|
||||
throw RuntimeError(cmd + " only allowed for CTB.");
|
||||
}
|
||||
if (det_id != -1) {
|
||||
@ -374,7 +377,7 @@ std::string Caller::adclist(int action) {
|
||||
if (action == slsDetectorDefs::HELP_ACTION) {
|
||||
os << "Command: adclist" << std::endl;
|
||||
os << R"V0G0N([adcname1 adcname2 .. adcname32]
|
||||
[ChipTestBoard] Set the list of adc names for this board. )V0G0N"
|
||||
[Ctb][Xilinx_Ctb] Set the list of adc names for this board. )V0G0N"
|
||||
<< std::endl;
|
||||
return os.str();
|
||||
}
|
||||
@ -386,6 +389,8 @@ std::string Caller::adclist(int action) {
|
||||
}
|
||||
|
||||
if (args.size() == 0) {
|
||||
auto det_type = det->getDetectorType().squash(defs::GENERIC);
|
||||
;
|
||||
}
|
||||
|
||||
}
|
||||
@ -406,8 +411,10 @@ std::string Caller::adclist(int action) {
|
||||
// generate code for each action
|
||||
if (action == slsDetectorDefs::GET_ACTION) {
|
||||
if (args.size() == 0) {
|
||||
if (cmd != "daclist" &&
|
||||
det->getDetectorType().squash() != defs::CHIPTESTBOARD) {
|
||||
auto det_type = det->getDetectorType().squash(defs::GENERIC);
|
||||
;
|
||||
if (cmd != "daclist" && det_type != defs::CHIPTESTBOARD &&
|
||||
det_type != defs::XILINX_CHIPTESTBOARD) {
|
||||
throw RuntimeError(cmd + " only allowed for CTB.");
|
||||
}
|
||||
if (det_id != -1) {
|
||||
@ -419,12 +426,14 @@ std::string Caller::adclist(int action) {
|
||||
}
|
||||
|
||||
if (action == slsDetectorDefs::PUT_ACTION) {
|
||||
if (cmd != "daclist" &&
|
||||
det->getDetectorType().squash() != defs::CHIPTESTBOARD) {
|
||||
auto det_type = det->getDetectorType().squash(defs::GENERIC);
|
||||
;
|
||||
if (cmd != "daclist" && det_type != defs::CHIPTESTBOARD &&
|
||||
det_type != defs::XILINX_CHIPTESTBOARD) {
|
||||
throw RuntimeError(cmd + " only allowed for CTB.");
|
||||
}
|
||||
if (cmd == "daclist" &&
|
||||
det->getDetectorType().squash() != defs::CHIPTESTBOARD) {
|
||||
if (cmd == "daclist" && det_type != defs::CHIPTESTBOARD &&
|
||||
det_type != defs::XILINX_CHIPTESTBOARD) {
|
||||
throw RuntimeError("This detector already has fixed dac names. "
|
||||
"Cannot change them.");
|
||||
}
|
||||
@ -445,7 +454,7 @@ std::string Caller::adcname(int action) {
|
||||
if (action == slsDetectorDefs::HELP_ACTION) {
|
||||
os << "Command: adcname" << std::endl;
|
||||
os << R"V0G0N([0-31][name]
|
||||
[ChipTestBoard] Set the adc at the given position to the given name. )V0G0N"
|
||||
[Ctb][Xilinx_Ctb] Set the adc at the given position to the given name. )V0G0N"
|
||||
<< std::endl;
|
||||
return os.str();
|
||||
}
|
||||
@ -490,7 +499,10 @@ std::string Caller::adcname(int action) {
|
||||
// generate code for each action
|
||||
if (action == slsDetectorDefs::GET_ACTION) {
|
||||
if (args.size() == 1) {
|
||||
if (det->getDetectorType().squash() != defs::CHIPTESTBOARD) {
|
||||
if (det->getDetectorType().squash(defs::GENERIC) !=
|
||||
defs::CHIPTESTBOARD &&
|
||||
det->getDetectorType().squash(defs::GENERIC) !=
|
||||
defs::XILINX_CHIPTESTBOARD) {
|
||||
throw RuntimeError(cmd + " only allowed for CTB.");
|
||||
}
|
||||
if (det_id != -1) {
|
||||
@ -504,7 +516,10 @@ std::string Caller::adcname(int action) {
|
||||
|
||||
if (action == slsDetectorDefs::PUT_ACTION) {
|
||||
if (args.size() == 2) {
|
||||
if (det->getDetectorType().squash() != defs::CHIPTESTBOARD) {
|
||||
if (det->getDetectorType().squash(defs::GENERIC) !=
|
||||
defs::CHIPTESTBOARD &&
|
||||
det->getDetectorType().squash(defs::GENERIC) !=
|
||||
defs::XILINX_CHIPTESTBOARD) {
|
||||
throw RuntimeError(cmd + " only allowed for CTB.");
|
||||
}
|
||||
if (det_id != -1) {
|
||||
@ -955,7 +970,7 @@ std::string Caller::asamples(int action) {
|
||||
if (action == slsDetectorDefs::HELP_ACTION) {
|
||||
os << "Command: asamples" << std::endl;
|
||||
os << R"V0G0N([n_samples]
|
||||
[CTB] Number of analog samples expected. )V0G0N"
|
||||
[Ctb] Number of analog samples expected. )V0G0N"
|
||||
<< std::endl;
|
||||
return os.str();
|
||||
}
|
||||
@ -2248,7 +2263,9 @@ std::string Caller::dac(int action) {
|
||||
|
||||
if (args.size() == 1) {
|
||||
defs::dacIndex dacIndex =
|
||||
(det->getDetectorType().squash() == defs::CHIPTESTBOARD &&
|
||||
((det->getDetectorType().squash() == defs::CHIPTESTBOARD ||
|
||||
det->getDetectorType().squash() ==
|
||||
defs::XILINX_CHIPTESTBOARD) &&
|
||||
!is_int(args[0]))
|
||||
? det->getDacIndex(args[0])
|
||||
: StringTo<defs::dacIndex>(args[0]);
|
||||
@ -2261,7 +2278,9 @@ std::string Caller::dac(int action) {
|
||||
|
||||
if (args.size() == 2) {
|
||||
defs::dacIndex dacIndex =
|
||||
(det->getDetectorType().squash() == defs::CHIPTESTBOARD &&
|
||||
((det->getDetectorType().squash() == defs::CHIPTESTBOARD ||
|
||||
det->getDetectorType().squash() ==
|
||||
defs::XILINX_CHIPTESTBOARD) &&
|
||||
!is_int(args[0]))
|
||||
? det->getDacIndex(args[0])
|
||||
: StringTo<defs::dacIndex>(args[0]);
|
||||
@ -2281,7 +2300,9 @@ std::string Caller::dac(int action) {
|
||||
|
||||
if (args.size() == 2) {
|
||||
defs::dacIndex dacIndex =
|
||||
(det->getDetectorType().squash() == defs::CHIPTESTBOARD &&
|
||||
((det->getDetectorType().squash() == defs::CHIPTESTBOARD ||
|
||||
det->getDetectorType().squash() ==
|
||||
defs::XILINX_CHIPTESTBOARD) &&
|
||||
!is_int(args[0]))
|
||||
? det->getDacIndex(args[0])
|
||||
: StringTo<defs::dacIndex>(args[0]);
|
||||
@ -2299,7 +2320,9 @@ std::string Caller::dac(int action) {
|
||||
|
||||
if (args.size() == 3) {
|
||||
defs::dacIndex dacIndex =
|
||||
(det->getDetectorType().squash() == defs::CHIPTESTBOARD &&
|
||||
((det->getDetectorType().squash() == defs::CHIPTESTBOARD ||
|
||||
det->getDetectorType().squash() ==
|
||||
defs::XILINX_CHIPTESTBOARD) &&
|
||||
!is_int(args[0]))
|
||||
? det->getDacIndex(args[0])
|
||||
: StringTo<defs::dacIndex>(args[0]);
|
||||
@ -2327,12 +2350,15 @@ std::string Caller::dac(int action) {
|
||||
if (action == slsDetectorDefs::GET_ACTION) {
|
||||
if (args.size() == 1) {
|
||||
defs::dacIndex dacIndex =
|
||||
(det->getDetectorType().squash() == defs::CHIPTESTBOARD &&
|
||||
((det->getDetectorType().squash() == defs::CHIPTESTBOARD ||
|
||||
det->getDetectorType().squash() ==
|
||||
defs::XILINX_CHIPTESTBOARD) &&
|
||||
!is_int(args[0]))
|
||||
? det->getDacIndex(args[0])
|
||||
: StringTo<defs::dacIndex>(args[0]);
|
||||
if (is_int(args[0]) &&
|
||||
det->getDetectorType().squash() != defs::CHIPTESTBOARD) {
|
||||
det->getDetectorType().squash() != defs::CHIPTESTBOARD &&
|
||||
det->getDetectorType().squash() != defs::XILINX_CHIPTESTBOARD) {
|
||||
throw RuntimeError(
|
||||
"Dac indices can only be used for chip test board. Use "
|
||||
"daclist to get list of dac names for current detector.");
|
||||
@ -2344,12 +2370,15 @@ std::string Caller::dac(int action) {
|
||||
|
||||
if (args.size() == 2) {
|
||||
defs::dacIndex dacIndex =
|
||||
(det->getDetectorType().squash() == defs::CHIPTESTBOARD &&
|
||||
((det->getDetectorType().squash() == defs::CHIPTESTBOARD ||
|
||||
det->getDetectorType().squash() ==
|
||||
defs::XILINX_CHIPTESTBOARD) &&
|
||||
!is_int(args[0]))
|
||||
? det->getDacIndex(args[0])
|
||||
: StringTo<defs::dacIndex>(args[0]);
|
||||
if (is_int(args[0]) &&
|
||||
det->getDetectorType().squash() != defs::CHIPTESTBOARD) {
|
||||
det->getDetectorType().squash() != defs::CHIPTESTBOARD &&
|
||||
det->getDetectorType().squash() != defs::XILINX_CHIPTESTBOARD) {
|
||||
throw RuntimeError(
|
||||
"Dac indices can only be used for chip test board. Use "
|
||||
"daclist to get list of dac names for current detector.");
|
||||
@ -2367,12 +2396,15 @@ std::string Caller::dac(int action) {
|
||||
if (action == slsDetectorDefs::PUT_ACTION) {
|
||||
if (args.size() == 2) {
|
||||
defs::dacIndex dacIndex =
|
||||
(det->getDetectorType().squash() == defs::CHIPTESTBOARD &&
|
||||
((det->getDetectorType().squash() == defs::CHIPTESTBOARD ||
|
||||
det->getDetectorType().squash() ==
|
||||
defs::XILINX_CHIPTESTBOARD) &&
|
||||
!is_int(args[0]))
|
||||
? det->getDacIndex(args[0])
|
||||
: StringTo<defs::dacIndex>(args[0]);
|
||||
if (is_int(args[0]) &&
|
||||
det->getDetectorType().squash() != defs::CHIPTESTBOARD) {
|
||||
det->getDetectorType().squash() != defs::CHIPTESTBOARD &&
|
||||
det->getDetectorType().squash() != defs::XILINX_CHIPTESTBOARD) {
|
||||
throw RuntimeError(
|
||||
"Dac indices can only be used for chip test board. Use "
|
||||
"daclist to get list of dac names for current detector.");
|
||||
@ -2385,12 +2417,15 @@ std::string Caller::dac(int action) {
|
||||
|
||||
if (args.size() == 3) {
|
||||
defs::dacIndex dacIndex =
|
||||
(det->getDetectorType().squash() == defs::CHIPTESTBOARD &&
|
||||
((det->getDetectorType().squash() == defs::CHIPTESTBOARD ||
|
||||
det->getDetectorType().squash() ==
|
||||
defs::XILINX_CHIPTESTBOARD) &&
|
||||
!is_int(args[0]))
|
||||
? det->getDacIndex(args[0])
|
||||
: StringTo<defs::dacIndex>(args[0]);
|
||||
if (is_int(args[0]) &&
|
||||
det->getDetectorType().squash() != defs::CHIPTESTBOARD) {
|
||||
det->getDetectorType().squash() != defs::CHIPTESTBOARD &&
|
||||
det->getDetectorType().squash() != defs::XILINX_CHIPTESTBOARD) {
|
||||
throw RuntimeError(
|
||||
"Dac indices can only be used for chip test board. Use "
|
||||
"daclist to get list of dac names for current detector.");
|
||||
@ -2412,7 +2447,7 @@ std::string Caller::dacindex(int action) {
|
||||
if (action == slsDetectorDefs::HELP_ACTION) {
|
||||
os << "Command: dacindex" << std::endl;
|
||||
os << R"V0G0N([name]
|
||||
[ChipTestBoard] Get the dac index for the given name. )V0G0N"
|
||||
[Ctb][Xilinx_Ctb] Get the dac index for the given name. )V0G0N"
|
||||
<< std::endl;
|
||||
return os.str();
|
||||
}
|
||||
@ -2439,7 +2474,10 @@ std::string Caller::dacindex(int action) {
|
||||
if (action == slsDetectorDefs::GET_ACTION) {
|
||||
if (args.size() == 1) {
|
||||
defs::dacIndex index = defs::DAC_0;
|
||||
if (det->getDetectorType().squash() != defs::CHIPTESTBOARD) {
|
||||
if (det->getDetectorType().squash(defs::GENERIC) !=
|
||||
defs::CHIPTESTBOARD &&
|
||||
det->getDetectorType().squash(defs::GENERIC) !=
|
||||
defs::XILINX_CHIPTESTBOARD) {
|
||||
throw RuntimeError(cmd + " only allowed for CTB.");
|
||||
}
|
||||
if (det_id != -1) {
|
||||
@ -2460,7 +2498,7 @@ std::string Caller::daclist(int action) {
|
||||
if (action == slsDetectorDefs::HELP_ACTION) {
|
||||
os << "Command: daclist" << std::endl;
|
||||
os << R"V0G0N([dacname1 dacname2 .. dacname18]
|
||||
[ChipTestBoard] Set the list of dac names for this detector.
|
||||
[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"
|
||||
<< std::endl;
|
||||
return os.str();
|
||||
@ -2473,6 +2511,8 @@ std::string Caller::daclist(int action) {
|
||||
}
|
||||
|
||||
if (args.size() == 0) {
|
||||
auto det_type = det->getDetectorType().squash(defs::GENERIC);
|
||||
;
|
||||
}
|
||||
|
||||
}
|
||||
@ -2493,8 +2533,10 @@ std::string Caller::daclist(int action) {
|
||||
// generate code for each action
|
||||
if (action == slsDetectorDefs::GET_ACTION) {
|
||||
if (args.size() == 0) {
|
||||
if (cmd != "daclist" &&
|
||||
det->getDetectorType().squash() != defs::CHIPTESTBOARD) {
|
||||
auto det_type = det->getDetectorType().squash(defs::GENERIC);
|
||||
;
|
||||
if (cmd != "daclist" && det_type != defs::CHIPTESTBOARD &&
|
||||
det_type != defs::XILINX_CHIPTESTBOARD) {
|
||||
throw RuntimeError(cmd + " only allowed for CTB.");
|
||||
}
|
||||
if (det_id != -1) {
|
||||
@ -2506,12 +2548,14 @@ std::string Caller::daclist(int action) {
|
||||
}
|
||||
|
||||
if (action == slsDetectorDefs::PUT_ACTION) {
|
||||
if (cmd != "daclist" &&
|
||||
det->getDetectorType().squash() != defs::CHIPTESTBOARD) {
|
||||
auto det_type = det->getDetectorType().squash(defs::GENERIC);
|
||||
;
|
||||
if (cmd != "daclist" && det_type != defs::CHIPTESTBOARD &&
|
||||
det_type != defs::XILINX_CHIPTESTBOARD) {
|
||||
throw RuntimeError(cmd + " only allowed for CTB.");
|
||||
}
|
||||
if (cmd == "daclist" &&
|
||||
det->getDetectorType().squash() != defs::CHIPTESTBOARD) {
|
||||
if (cmd == "daclist" && det_type != defs::CHIPTESTBOARD &&
|
||||
det_type != defs::XILINX_CHIPTESTBOARD) {
|
||||
throw RuntimeError("This detector already has fixed dac names. "
|
||||
"Cannot change them.");
|
||||
}
|
||||
@ -2532,7 +2576,7 @@ std::string Caller::dacname(int action) {
|
||||
if (action == slsDetectorDefs::HELP_ACTION) {
|
||||
os << "Command: dacname" << std::endl;
|
||||
os << R"V0G0N([0-17][name]
|
||||
[ChipTestBoard] Set the dac at the given position to the given name. )V0G0N"
|
||||
[Ctb][Xilinx_Ctb] Set the dac at the given position to the given name. )V0G0N"
|
||||
<< std::endl;
|
||||
return os.str();
|
||||
}
|
||||
@ -2570,7 +2614,10 @@ std::string Caller::dacname(int action) {
|
||||
if (action == slsDetectorDefs::GET_ACTION) {
|
||||
if (args.size() == 1) {
|
||||
defs::dacIndex index = defs::DAC_0;
|
||||
if (det->getDetectorType().squash() != defs::CHIPTESTBOARD) {
|
||||
if (det->getDetectorType().squash(defs::GENERIC) !=
|
||||
defs::CHIPTESTBOARD &&
|
||||
det->getDetectorType().squash(defs::GENERIC) !=
|
||||
defs::XILINX_CHIPTESTBOARD) {
|
||||
throw RuntimeError(cmd + " only allowed for CTB.");
|
||||
}
|
||||
if (det_id != -1) {
|
||||
@ -2585,7 +2632,10 @@ std::string Caller::dacname(int action) {
|
||||
if (action == slsDetectorDefs::PUT_ACTION) {
|
||||
if (args.size() == 2) {
|
||||
defs::dacIndex index = defs::DAC_0;
|
||||
if (det->getDetectorType().squash() != defs::CHIPTESTBOARD) {
|
||||
if (det->getDetectorType().squash(defs::GENERIC) !=
|
||||
defs::CHIPTESTBOARD &&
|
||||
det->getDetectorType().squash(defs::GENERIC) !=
|
||||
defs::XILINX_CHIPTESTBOARD) {
|
||||
throw RuntimeError(cmd + " only allowed for CTB.");
|
||||
}
|
||||
if (det_id != -1) {
|
||||
@ -2880,7 +2930,7 @@ std::string Caller::dbitpipeline(int action) {
|
||||
os << R"V0G0N([n_value]
|
||||
[Ctb][Gotthard2] Pipeline of the clock for latching digital bits.
|
||||
[Gotthard2] Options: 0-7
|
||||
[CTB] Options: 0-255 )V0G0N"
|
||||
[Ctb] Options: 0-255 )V0G0N"
|
||||
<< std::endl;
|
||||
return os.str();
|
||||
}
|
||||
@ -3200,7 +3250,7 @@ std::string Caller::delayl(int action) {
|
||||
if (action == slsDetectorDefs::HELP_ACTION) {
|
||||
os << "Command: delayl" << std::endl;
|
||||
os << R"V0G0N(
|
||||
[Gotthard][Jungfrau][Moench][Mythen3][Gotthard2][CTB] Delay Left in Acquisition.
|
||||
[Gotthard][Jungfrau][Moench][Mythen3][Gotthard2][Ctb] Delay Left in Acquisition.
|
||||
[Gotthard2] only in continuous mode. )V0G0N"
|
||||
<< std::endl;
|
||||
return os.str();
|
||||
@ -3572,7 +3622,7 @@ std::string Caller::dsamples(int action) {
|
||||
if (action == slsDetectorDefs::HELP_ACTION) {
|
||||
os << "Command: dsamples" << std::endl;
|
||||
os << R"V0G0N([n_value]
|
||||
[CTB] Number of digital samples expected. )V0G0N"
|
||||
[Ctb] Number of digital samples expected. )V0G0N"
|
||||
<< std::endl;
|
||||
return os.str();
|
||||
}
|
||||
@ -5082,7 +5132,7 @@ std::string Caller::framecounter(int action) {
|
||||
if (action == slsDetectorDefs::HELP_ACTION) {
|
||||
os << "Command: framecounter" << std::endl;
|
||||
os << R"V0G0N(
|
||||
[Jungfrau][Moench][Mythen3][Gotthard2][CTB] Number of frames from start run control.
|
||||
[Jungfrau][Moench][Mythen3][Gotthard2][Ctb] Number of frames from start run control.
|
||||
[Gotthard2] only in continuous mode. )V0G0N"
|
||||
<< std::endl;
|
||||
return os.str();
|
||||
@ -5192,7 +5242,7 @@ std::string Caller::framesl(int action) {
|
||||
if (action == slsDetectorDefs::HELP_ACTION) {
|
||||
os << "Command: framesl" << std::endl;
|
||||
os << R"V0G0N(
|
||||
[Gotthard][Jungfrau][Moench][Mythen3][Gotthard2][CTB] Number of frames left in acquisition.
|
||||
[Gotthard][Jungfrau][Moench][Mythen3][Gotthard2][Ctb] Number of frames left in acquisition.
|
||||
[Gotthard2] only in continuous auto mode. )V0G0N"
|
||||
<< std::endl;
|
||||
return os.str();
|
||||
@ -5233,7 +5283,7 @@ std::string Caller::frametime(int action) {
|
||||
if (action == slsDetectorDefs::HELP_ACTION) {
|
||||
os << "Command: frametime" << std::endl;
|
||||
os << R"V0G0N([(optional unit) ns|us|ms|s]
|
||||
[Jungfrau][Moench][Mythen3][Gotthard2][CTB] Timestamp at a frame start.
|
||||
[Jungfrau][Moench][Mythen3][Gotthard2][Ctb] Timestamp at a frame start.
|
||||
[Gotthard2] not in burst and auto mode. )V0G0N"
|
||||
<< std::endl;
|
||||
return os.str();
|
||||
@ -6902,7 +6952,7 @@ std::string Caller::maxadcphaseshift(int action) {
|
||||
if (action == slsDetectorDefs::HELP_ACTION) {
|
||||
os << "Command: maxadcphaseshift" << std::endl;
|
||||
os << R"V0G0N(
|
||||
[Jungfrau][Moench][CTB] Absolute maximum Phase shift of ADC clock. )V0G0N"
|
||||
[Jungfrau][Moench][Ctb] Absolute maximum Phase shift of ADC clock. )V0G0N"
|
||||
<< std::endl;
|
||||
return os.str();
|
||||
}
|
||||
@ -6998,7 +7048,7 @@ std::string Caller::maxdbitphaseshift(int action) {
|
||||
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"
|
||||
[Ctb][Jungfrau] Absolute maximum Phase shift of of the clock to latch digital bits. )V0G0N"
|
||||
<< std::endl;
|
||||
return os.str();
|
||||
}
|
||||
@ -7174,7 +7224,7 @@ std::string Caller::nextframenumber(int action) {
|
||||
if (action == slsDetectorDefs::HELP_ACTION) {
|
||||
os << "Command: nextframenumber" << std::endl;
|
||||
os << R"V0G0N([n_value]
|
||||
[Eiger][Jungfrau][Moench][CTB] Next frame number. Stopping acquisition might result in different frame numbers for different modules. )V0G0N"
|
||||
[Eiger][Jungfrau][Moench][Ctb] Next frame number. Stopping acquisition might result in different frame numbers for different modules. )V0G0N"
|
||||
<< std::endl;
|
||||
return os.str();
|
||||
}
|
||||
@ -9091,7 +9141,7 @@ std::string Caller::periodl(int action) {
|
||||
if (action == slsDetectorDefs::HELP_ACTION) {
|
||||
os << "Command: periodl" << std::endl;
|
||||
os << R"V0G0N(
|
||||
[Gotthard][Jungfrau][Moench][CTB][Mythen3][Gotthard2] Period left for current frame.
|
||||
[Gotthard][Jungfrau][Moench][Ctb][Mythen3][Gotthard2] Period left for current frame.
|
||||
[Gotthard2] only in continuous mode. )V0G0N"
|
||||
<< std::endl;
|
||||
return os.str();
|
||||
@ -9332,7 +9382,7 @@ std::string Caller::powerindex(int action) {
|
||||
if (action == slsDetectorDefs::HELP_ACTION) {
|
||||
os << "Command: powerindex" << std::endl;
|
||||
os << R"V0G0N([name]
|
||||
[ChipTestBoard] Get the power index for the given name. )V0G0N"
|
||||
[Ctb][Xilinx_Ctb] Get the power index for the given name. )V0G0N"
|
||||
<< std::endl;
|
||||
return os.str();
|
||||
}
|
||||
@ -9359,7 +9409,10 @@ std::string Caller::powerindex(int action) {
|
||||
if (action == slsDetectorDefs::GET_ACTION) {
|
||||
if (args.size() == 1) {
|
||||
defs::dacIndex index = defs::V_POWER_A;
|
||||
if (det->getDetectorType().squash() != defs::CHIPTESTBOARD) {
|
||||
if (det->getDetectorType().squash(defs::GENERIC) !=
|
||||
defs::CHIPTESTBOARD &&
|
||||
det->getDetectorType().squash(defs::GENERIC) !=
|
||||
defs::XILINX_CHIPTESTBOARD) {
|
||||
throw RuntimeError(cmd + " only allowed for CTB.");
|
||||
}
|
||||
if (det_id != -1) {
|
||||
@ -9380,7 +9433,7 @@ std::string Caller::powerlist(int action) {
|
||||
if (action == slsDetectorDefs::HELP_ACTION) {
|
||||
os << "Command: powerlist" << std::endl;
|
||||
os << R"V0G0N([powername1 powername2 .. powername4]
|
||||
[ChipTestBoard] Set the list of power names for this board. )V0G0N"
|
||||
[Ctb][Xilinx_Ctb] Set the list of power names for this board. )V0G0N"
|
||||
<< std::endl;
|
||||
return os.str();
|
||||
}
|
||||
@ -9392,6 +9445,8 @@ std::string Caller::powerlist(int action) {
|
||||
}
|
||||
|
||||
if (args.size() == 0) {
|
||||
auto det_type = det->getDetectorType().squash(defs::GENERIC);
|
||||
;
|
||||
}
|
||||
|
||||
}
|
||||
@ -9412,8 +9467,10 @@ std::string Caller::powerlist(int action) {
|
||||
// generate code for each action
|
||||
if (action == slsDetectorDefs::GET_ACTION) {
|
||||
if (args.size() == 0) {
|
||||
if (cmd != "daclist" &&
|
||||
det->getDetectorType().squash() != defs::CHIPTESTBOARD) {
|
||||
auto det_type = det->getDetectorType().squash(defs::GENERIC);
|
||||
;
|
||||
if (cmd != "daclist" && det_type != defs::CHIPTESTBOARD &&
|
||||
det_type != defs::XILINX_CHIPTESTBOARD) {
|
||||
throw RuntimeError(cmd + " only allowed for CTB.");
|
||||
}
|
||||
if (det_id != -1) {
|
||||
@ -9425,12 +9482,14 @@ std::string Caller::powerlist(int action) {
|
||||
}
|
||||
|
||||
if (action == slsDetectorDefs::PUT_ACTION) {
|
||||
if (cmd != "daclist" &&
|
||||
det->getDetectorType().squash() != defs::CHIPTESTBOARD) {
|
||||
auto det_type = det->getDetectorType().squash(defs::GENERIC);
|
||||
;
|
||||
if (cmd != "daclist" && det_type != defs::CHIPTESTBOARD &&
|
||||
det_type != defs::XILINX_CHIPTESTBOARD) {
|
||||
throw RuntimeError(cmd + " only allowed for CTB.");
|
||||
}
|
||||
if (cmd == "daclist" &&
|
||||
det->getDetectorType().squash() != defs::CHIPTESTBOARD) {
|
||||
if (cmd == "daclist" && det_type != defs::CHIPTESTBOARD &&
|
||||
det_type != defs::XILINX_CHIPTESTBOARD) {
|
||||
throw RuntimeError("This detector already has fixed dac names. "
|
||||
"Cannot change them.");
|
||||
}
|
||||
@ -9451,7 +9510,7 @@ std::string Caller::powername(int action) {
|
||||
if (action == slsDetectorDefs::HELP_ACTION) {
|
||||
os << "Command: powername" << std::endl;
|
||||
os << R"V0G0N([0-4][name]
|
||||
[ChipTestBoard] Set the power at the given position to the given name. )V0G0N"
|
||||
[Ctb][Xilinx_Ctb] Set the power at the given position to the given name. )V0G0N"
|
||||
<< std::endl;
|
||||
return os.str();
|
||||
}
|
||||
@ -9489,7 +9548,10 @@ std::string Caller::powername(int action) {
|
||||
if (action == slsDetectorDefs::GET_ACTION) {
|
||||
if (args.size() == 1) {
|
||||
defs::dacIndex index = defs::V_POWER_A;
|
||||
if (det->getDetectorType().squash() != defs::CHIPTESTBOARD) {
|
||||
if (det->getDetectorType().squash(defs::GENERIC) !=
|
||||
defs::CHIPTESTBOARD &&
|
||||
det->getDetectorType().squash(defs::GENERIC) !=
|
||||
defs::XILINX_CHIPTESTBOARD) {
|
||||
throw RuntimeError(cmd + " only allowed for CTB.");
|
||||
}
|
||||
if (det_id != -1) {
|
||||
@ -9504,7 +9566,10 @@ std::string Caller::powername(int action) {
|
||||
if (action == slsDetectorDefs::PUT_ACTION) {
|
||||
if (args.size() == 2) {
|
||||
defs::dacIndex index = defs::V_POWER_A;
|
||||
if (det->getDetectorType().squash() != defs::CHIPTESTBOARD) {
|
||||
if (det->getDetectorType().squash(defs::GENERIC) !=
|
||||
defs::CHIPTESTBOARD &&
|
||||
det->getDetectorType().squash(defs::GENERIC) !=
|
||||
defs::XILINX_CHIPTESTBOARD) {
|
||||
throw RuntimeError(cmd + " only allowed for CTB.");
|
||||
}
|
||||
if (det_id != -1) {
|
||||
@ -9527,7 +9592,7 @@ std::string Caller::powervalues(int action) {
|
||||
if (action == slsDetectorDefs::HELP_ACTION) {
|
||||
os << "Command: powervalues" << std::endl;
|
||||
os << R"V0G0N([name]
|
||||
[ChipTestBoard] Get values of all powers. )V0G0N"
|
||||
[Ctb][Xilinx_Ctb] Get values of all powers. )V0G0N"
|
||||
<< std::endl;
|
||||
return os.str();
|
||||
}
|
||||
@ -10055,6 +10120,8 @@ std::string Caller::readoutspeed(int action) {
|
||||
}
|
||||
|
||||
if (args.size() == 0) {
|
||||
auto det_type = det->getDetectorType().squash(defs::GENERIC);
|
||||
;
|
||||
}
|
||||
|
||||
}
|
||||
@ -10065,6 +10132,8 @@ std::string Caller::readoutspeed(int action) {
|
||||
}
|
||||
|
||||
if (args.size() == 1) {
|
||||
auto det_type = det->getDetectorType().squash(defs::GENERIC);
|
||||
;
|
||||
try {
|
||||
StringTo<defs::speedLevel>(args[0]);
|
||||
} catch (...) {
|
||||
@ -10084,7 +10153,10 @@ std::string Caller::readoutspeed(int action) {
|
||||
// generate code for each action
|
||||
if (action == slsDetectorDefs::GET_ACTION) {
|
||||
if (args.size() == 0) {
|
||||
if (det->getDetectorType().squash() == defs::CHIPTESTBOARD) {
|
||||
auto det_type = det->getDetectorType().squash(defs::GENERIC);
|
||||
;
|
||||
if (det_type == defs::CHIPTESTBOARD ||
|
||||
det_type == defs::XILINX_CHIPTESTBOARD) {
|
||||
throw RuntimeError(
|
||||
"ReadoutSpeed not implemented. Did you mean runclk?");
|
||||
}
|
||||
@ -10095,7 +10167,10 @@ std::string Caller::readoutspeed(int action) {
|
||||
|
||||
if (action == slsDetectorDefs::PUT_ACTION) {
|
||||
if (args.size() == 1) {
|
||||
if (det->getDetectorType().squash() == defs::CHIPTESTBOARD) {
|
||||
auto det_type = det->getDetectorType().squash(defs::GENERIC);
|
||||
;
|
||||
if (det_type == defs::CHIPTESTBOARD ||
|
||||
det_type == defs::XILINX_CHIPTESTBOARD) {
|
||||
throw RuntimeError(
|
||||
"ReadoutSpeed not implemented. Did you mean runclk?");
|
||||
}
|
||||
@ -10430,7 +10505,7 @@ std::string Caller::romode(int action) {
|
||||
if (action == slsDetectorDefs::HELP_ACTION) {
|
||||
os << "Command: romode" << std::endl;
|
||||
os << R"V0G0N([analog|digital|analog_digital|transceiver|digital_transceiver]
|
||||
[CTB] Readout mode. Default is analog. )V0G0N"
|
||||
[Ctb] Readout mode. Default is analog. )V0G0N"
|
||||
<< std::endl;
|
||||
return os.str();
|
||||
}
|
||||
@ -10621,7 +10696,7 @@ std::string Caller::runtime(int action) {
|
||||
if (action == slsDetectorDefs::HELP_ACTION) {
|
||||
os << "Command: runtime" << std::endl;
|
||||
os << R"V0G0N([(optional unit) ns|us|ms|s]
|
||||
[Jungfrau][Moench][Mythen3][Gotthard2][CTB] Time from detector start up.
|
||||
[Jungfrau][Moench][Mythen3][Gotthard2][Ctb] Time from detector start up.
|
||||
[Gotthard2] not in burst and auto mode. )V0G0N"
|
||||
<< std::endl;
|
||||
return os.str();
|
||||
@ -12504,7 +12579,7 @@ std::string Caller::serialnumber(int action) {
|
||||
if (action == slsDetectorDefs::HELP_ACTION) {
|
||||
os << "Command: serialnumber" << std::endl;
|
||||
os << R"V0G0N(
|
||||
[Jungfrau][Moench][Gotthard][Mythen3][Gotthard2][CTB]
|
||||
[Jungfrau][Moench][Gotthard][Mythen3][Gotthard2][Ctb]
|
||||
Serial number of detector. )V0G0N"
|
||||
<< std::endl;
|
||||
return os.str();
|
||||
@ -12769,7 +12844,7 @@ std::string Caller::signalindex(int action) {
|
||||
if (action == slsDetectorDefs::HELP_ACTION) {
|
||||
os << "Command: signalindex" << std::endl;
|
||||
os << R"V0G0N([name]
|
||||
[ChipTestBoard] Get the signal index for the given name. )V0G0N"
|
||||
[Ctb][Xilinx_Ctb] Get the signal index for the given name. )V0G0N"
|
||||
<< std::endl;
|
||||
return os.str();
|
||||
}
|
||||
@ -12794,7 +12869,10 @@ std::string Caller::signalindex(int action) {
|
||||
// generate code for each action
|
||||
if (action == slsDetectorDefs::GET_ACTION) {
|
||||
if (args.size() == 1) {
|
||||
if (det->getDetectorType().squash() != defs::CHIPTESTBOARD) {
|
||||
if (det->getDetectorType().squash(defs::GENERIC) !=
|
||||
defs::CHIPTESTBOARD &&
|
||||
det->getDetectorType().squash(defs::GENERIC) !=
|
||||
defs::XILINX_CHIPTESTBOARD) {
|
||||
throw RuntimeError(cmd + " only allowed for CTB.");
|
||||
}
|
||||
if (det_id != -1) {
|
||||
@ -12816,7 +12894,7 @@ std::string Caller::signallist(int action) {
|
||||
if (action == slsDetectorDefs::HELP_ACTION) {
|
||||
os << "Command: signallist" << std::endl;
|
||||
os << R"V0G0N([signalname1 signalname2 .. signalname63]
|
||||
[ChipTestBoard] Set the list of signal names for this board. )V0G0N"
|
||||
[Ctb][Xilinx_Ctb] Set the list of signal names for this board. )V0G0N"
|
||||
<< std::endl;
|
||||
return os.str();
|
||||
}
|
||||
@ -12828,6 +12906,8 @@ std::string Caller::signallist(int action) {
|
||||
}
|
||||
|
||||
if (args.size() == 0) {
|
||||
auto det_type = det->getDetectorType().squash(defs::GENERIC);
|
||||
;
|
||||
}
|
||||
|
||||
}
|
||||
@ -12848,8 +12928,10 @@ std::string Caller::signallist(int action) {
|
||||
// generate code for each action
|
||||
if (action == slsDetectorDefs::GET_ACTION) {
|
||||
if (args.size() == 0) {
|
||||
if (cmd != "daclist" &&
|
||||
det->getDetectorType().squash() != defs::CHIPTESTBOARD) {
|
||||
auto det_type = det->getDetectorType().squash(defs::GENERIC);
|
||||
;
|
||||
if (cmd != "daclist" && det_type != defs::CHIPTESTBOARD &&
|
||||
det_type != defs::XILINX_CHIPTESTBOARD) {
|
||||
throw RuntimeError(cmd + " only allowed for CTB.");
|
||||
}
|
||||
if (det_id != -1) {
|
||||
@ -12861,12 +12943,14 @@ std::string Caller::signallist(int action) {
|
||||
}
|
||||
|
||||
if (action == slsDetectorDefs::PUT_ACTION) {
|
||||
if (cmd != "daclist" &&
|
||||
det->getDetectorType().squash() != defs::CHIPTESTBOARD) {
|
||||
auto det_type = det->getDetectorType().squash(defs::GENERIC);
|
||||
;
|
||||
if (cmd != "daclist" && det_type != defs::CHIPTESTBOARD &&
|
||||
det_type != defs::XILINX_CHIPTESTBOARD) {
|
||||
throw RuntimeError(cmd + " only allowed for CTB.");
|
||||
}
|
||||
if (cmd == "daclist" &&
|
||||
det->getDetectorType().squash() != defs::CHIPTESTBOARD) {
|
||||
if (cmd == "daclist" && det_type != defs::CHIPTESTBOARD &&
|
||||
det_type != defs::XILINX_CHIPTESTBOARD) {
|
||||
throw RuntimeError("This detector already has fixed dac names. "
|
||||
"Cannot change them.");
|
||||
}
|
||||
@ -12887,7 +12971,7 @@ std::string Caller::signalname(int action) {
|
||||
if (action == slsDetectorDefs::HELP_ACTION) {
|
||||
os << "Command: signalname" << std::endl;
|
||||
os << R"V0G0N([0-63][name]
|
||||
[ChipTestBoard] Set the signal at the given position to the given name. )V0G0N"
|
||||
[Ctb][Xilinx_Ctb] Set the signal at the given position to the given name. )V0G0N"
|
||||
<< std::endl;
|
||||
return os.str();
|
||||
}
|
||||
@ -12932,7 +13016,10 @@ std::string Caller::signalname(int action) {
|
||||
// generate code for each action
|
||||
if (action == slsDetectorDefs::GET_ACTION) {
|
||||
if (args.size() == 1) {
|
||||
if (det->getDetectorType().squash() != defs::CHIPTESTBOARD) {
|
||||
if (det->getDetectorType().squash(defs::GENERIC) !=
|
||||
defs::CHIPTESTBOARD &&
|
||||
det->getDetectorType().squash(defs::GENERIC) !=
|
||||
defs::XILINX_CHIPTESTBOARD) {
|
||||
throw RuntimeError(cmd + " only allowed for CTB.");
|
||||
}
|
||||
if (det_id != -1) {
|
||||
@ -12946,7 +13033,10 @@ std::string Caller::signalname(int action) {
|
||||
|
||||
if (action == slsDetectorDefs::PUT_ACTION) {
|
||||
if (args.size() == 2) {
|
||||
if (det->getDetectorType().squash() != defs::CHIPTESTBOARD) {
|
||||
if (det->getDetectorType().squash(defs::GENERIC) !=
|
||||
defs::CHIPTESTBOARD &&
|
||||
det->getDetectorType().squash(defs::GENERIC) !=
|
||||
defs::XILINX_CHIPTESTBOARD) {
|
||||
throw RuntimeError(cmd + " only allowed for CTB.");
|
||||
}
|
||||
if (det_id != -1) {
|
||||
@ -12968,7 +13058,7 @@ std::string Caller::slowadcindex(int action) {
|
||||
if (action == slsDetectorDefs::HELP_ACTION) {
|
||||
os << "Command: slowadcindex" << std::endl;
|
||||
os << R"V0G0N([name]
|
||||
[ChipTestBoard] Get the slowadc index for the given name. )V0G0N"
|
||||
[Ctb][Xilinx_Ctb] Get the slowadc index for the given name. )V0G0N"
|
||||
<< std::endl;
|
||||
return os.str();
|
||||
}
|
||||
@ -12995,7 +13085,10 @@ std::string Caller::slowadcindex(int action) {
|
||||
if (action == slsDetectorDefs::GET_ACTION) {
|
||||
if (args.size() == 1) {
|
||||
defs::dacIndex index = defs::SLOW_ADC0;
|
||||
if (det->getDetectorType().squash() != defs::CHIPTESTBOARD) {
|
||||
if (det->getDetectorType().squash(defs::GENERIC) !=
|
||||
defs::CHIPTESTBOARD &&
|
||||
det->getDetectorType().squash(defs::GENERIC) !=
|
||||
defs::XILINX_CHIPTESTBOARD) {
|
||||
throw RuntimeError(cmd + " only allowed for CTB.");
|
||||
}
|
||||
if (det_id != -1) {
|
||||
@ -13017,7 +13110,7 @@ std::string Caller::slowadclist(int action) {
|
||||
if (action == slsDetectorDefs::HELP_ACTION) {
|
||||
os << "Command: slowadclist" << std::endl;
|
||||
os << R"V0G0N([slowadcname1 slowadcname2 .. slowadcname7]
|
||||
[ChipTestBoard] Set the list of slowadc names for this board. )V0G0N"
|
||||
[Ctb][Xilinx_Ctb] Set the list of slowadc names for this board. )V0G0N"
|
||||
<< std::endl;
|
||||
return os.str();
|
||||
}
|
||||
@ -13029,6 +13122,8 @@ std::string Caller::slowadclist(int action) {
|
||||
}
|
||||
|
||||
if (args.size() == 0) {
|
||||
auto det_type = det->getDetectorType().squash(defs::GENERIC);
|
||||
;
|
||||
}
|
||||
|
||||
}
|
||||
@ -13049,8 +13144,10 @@ std::string Caller::slowadclist(int action) {
|
||||
// generate code for each action
|
||||
if (action == slsDetectorDefs::GET_ACTION) {
|
||||
if (args.size() == 0) {
|
||||
if (cmd != "daclist" &&
|
||||
det->getDetectorType().squash() != defs::CHIPTESTBOARD) {
|
||||
auto det_type = det->getDetectorType().squash(defs::GENERIC);
|
||||
;
|
||||
if (cmd != "daclist" && det_type != defs::CHIPTESTBOARD &&
|
||||
det_type != defs::XILINX_CHIPTESTBOARD) {
|
||||
throw RuntimeError(cmd + " only allowed for CTB.");
|
||||
}
|
||||
if (det_id != -1) {
|
||||
@ -13063,12 +13160,14 @@ std::string Caller::slowadclist(int action) {
|
||||
}
|
||||
|
||||
if (action == slsDetectorDefs::PUT_ACTION) {
|
||||
if (cmd != "daclist" &&
|
||||
det->getDetectorType().squash() != defs::CHIPTESTBOARD) {
|
||||
auto det_type = det->getDetectorType().squash(defs::GENERIC);
|
||||
;
|
||||
if (cmd != "daclist" && det_type != defs::CHIPTESTBOARD &&
|
||||
det_type != defs::XILINX_CHIPTESTBOARD) {
|
||||
throw RuntimeError(cmd + " only allowed for CTB.");
|
||||
}
|
||||
if (cmd == "daclist" &&
|
||||
det->getDetectorType().squash() != defs::CHIPTESTBOARD) {
|
||||
if (cmd == "daclist" && det_type != defs::CHIPTESTBOARD &&
|
||||
det_type != defs::XILINX_CHIPTESTBOARD) {
|
||||
throw RuntimeError("This detector already has fixed dac names. "
|
||||
"Cannot change them.");
|
||||
}
|
||||
@ -13089,7 +13188,7 @@ std::string Caller::slowadcname(int action) {
|
||||
if (action == slsDetectorDefs::HELP_ACTION) {
|
||||
os << "Command: slowadcname" << std::endl;
|
||||
os << R"V0G0N([0-7][name]
|
||||
[ChipTestBoard] Set the slowadc at the given position to the given name. )V0G0N"
|
||||
[Ctb][Xilinx_Ctb] Set the slowadc at the given position to the given name. )V0G0N"
|
||||
<< std::endl;
|
||||
return os.str();
|
||||
}
|
||||
@ -13127,7 +13226,10 @@ std::string Caller::slowadcname(int action) {
|
||||
if (action == slsDetectorDefs::GET_ACTION) {
|
||||
if (args.size() == 1) {
|
||||
defs::dacIndex index = defs::SLOW_ADC0;
|
||||
if (det->getDetectorType().squash() != defs::CHIPTESTBOARD) {
|
||||
if (det->getDetectorType().squash(defs::GENERIC) !=
|
||||
defs::CHIPTESTBOARD &&
|
||||
det->getDetectorType().squash(defs::GENERIC) !=
|
||||
defs::XILINX_CHIPTESTBOARD) {
|
||||
throw RuntimeError(cmd + " only allowed for CTB.");
|
||||
}
|
||||
if (det_id != -1) {
|
||||
@ -13143,7 +13245,10 @@ std::string Caller::slowadcname(int action) {
|
||||
if (action == slsDetectorDefs::PUT_ACTION) {
|
||||
if (args.size() == 2) {
|
||||
defs::dacIndex index = defs::SLOW_ADC0;
|
||||
if (det->getDetectorType().squash() != defs::CHIPTESTBOARD) {
|
||||
if (det->getDetectorType().squash(defs::GENERIC) !=
|
||||
defs::CHIPTESTBOARD &&
|
||||
det->getDetectorType().squash(defs::GENERIC) !=
|
||||
defs::XILINX_CHIPTESTBOARD) {
|
||||
throw RuntimeError(cmd + " only allowed for CTB.");
|
||||
}
|
||||
if (det_id != -1) {
|
||||
@ -13167,7 +13272,7 @@ std::string Caller::slowadcvalues(int action) {
|
||||
if (action == slsDetectorDefs::HELP_ACTION) {
|
||||
os << "Command: slowadcvalues" << std::endl;
|
||||
os << R"V0G0N([name]
|
||||
[ChipTestBoard] Get values of all slow adcs. )V0G0N"
|
||||
[Ctb][Xilinx_Ctb] Get values of all slow adcs. )V0G0N"
|
||||
<< std::endl;
|
||||
return os.str();
|
||||
}
|
||||
@ -15029,7 +15134,7 @@ std::string Caller::triggersl(int action) {
|
||||
if (action == slsDetectorDefs::HELP_ACTION) {
|
||||
os << "Command: triggersl" << std::endl;
|
||||
os << R"V0G0N(
|
||||
[Gotthard][Jungfrau][Moench][Mythen3][Gotthard2][CTB] Number of triggers left in acquisition. Only when external trigger used. )V0G0N"
|
||||
[Gotthard][Jungfrau][Moench][Mythen3][Gotthard2][Ctb] Number of triggers left in acquisition. Only when external trigger used. )V0G0N"
|
||||
<< std::endl;
|
||||
return os.str();
|
||||
}
|
||||
@ -15189,7 +15294,7 @@ std::string Caller::tsamples(int action) {
|
||||
if (action == slsDetectorDefs::HELP_ACTION) {
|
||||
os << "Command: tsamples" << std::endl;
|
||||
os << R"V0G0N([n_value]
|
||||
[CTB] Number of transceiver samples expected. )V0G0N"
|
||||
[Ctb] Number of transceiver samples expected. )V0G0N"
|
||||
<< std::endl;
|
||||
return os.str();
|
||||
}
|
||||
@ -15519,7 +15624,7 @@ std::string Caller::type(int action) {
|
||||
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 )V0G0N"
|
||||
Returns detector type. Can be Eiger, Jungfrau, Gotthard, Moench, Mythen3, Gotthard2, ChipTestBoard, Xilinx_ChipTestBoard )V0G0N"
|
||||
<< std::endl;
|
||||
return os.str();
|
||||
}
|
||||
@ -16227,7 +16332,7 @@ std::string Caller::update(int 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.
|
||||
[Jungfrau][Moench][Gotthard][Ctb] Updates the firmware, detector server, deletes old server, creates the symbolic link and then reboots detector controller.
|
||||
[Mythen3][Gotthard2] will require a script to start up the shorter named server link at start up.
|
||||
server_name is full path name of detector server binary
|
||||
fname is full path of programming file )V0G0N"
|
||||
|
@ -850,7 +850,8 @@ std::string Caller::counters(int action) {
|
||||
std::string Caller::samples(int action) {
|
||||
std::ostringstream os;
|
||||
if (action == defs::HELP_ACTION) {
|
||||
os << "[n_samples]\n\t[CTB] Number of samples (analog, digitial and "
|
||||
os << "[n_samples]\n\t[Ctb][Xilinx_Ctb] Number of samples (analog, "
|
||||
"digitial and "
|
||||
"transceiver) expected.\n"
|
||||
<< '\n';
|
||||
} else if (action == defs::GET_ACTION) {
|
||||
@ -859,7 +860,9 @@ std::string Caller::samples(int action) {
|
||||
}
|
||||
auto a = det->getNumberOfAnalogSamples(std::vector<int>{det_id});
|
||||
// get also digital samples for ctb and compare with analog
|
||||
if (det->getDetectorType().squash() == defs::CHIPTESTBOARD) {
|
||||
auto det_type = det->getDetectorType().squash(defs::GENERIC);
|
||||
if (det_type == defs::CHIPTESTBOARD ||
|
||||
det_type == defs::XILINX_CHIPTESTBOARD) {
|
||||
auto d = det->getNumberOfDigitalSamples(std::vector<int>{det_id});
|
||||
auto t =
|
||||
det->getNumberOfTransceiverSamples(std::vector<int>{det_id});
|
||||
@ -880,7 +883,9 @@ std::string Caller::samples(int action) {
|
||||
det->setNumberOfAnalogSamples(StringTo<int>(args[0]),
|
||||
std::vector<int>{det_id});
|
||||
// set also digital samples for ctb
|
||||
if (det->getDetectorType().squash() == defs::CHIPTESTBOARD) {
|
||||
auto det_type = det->getDetectorType().squash(defs::GENERIC);
|
||||
if (det_type == defs::CHIPTESTBOARD ||
|
||||
det_type == defs::XILINX_CHIPTESTBOARD) {
|
||||
det->setNumberOfDigitalSamples(StringTo<int>(args[0]),
|
||||
std::vector<int>{det_id});
|
||||
det->setNumberOfTransceiverSamples(StringTo<int>(args[0]),
|
||||
|
@ -208,6 +208,7 @@ std::vector<defs::detectorSettings> Detector::getSettingsList() const {
|
||||
defs::G2_LOWCAP_HIGHGAIN, defs::G2_LOWCAP_LOWGAIN,
|
||||
defs::G4_HIGHGAIN, defs::G4_LOWGAIN};
|
||||
case defs::CHIPTESTBOARD:
|
||||
case defs::XILINX_CHIPTESTBOARD:
|
||||
throw RuntimeError("Settings not implemented for this detector");
|
||||
default:
|
||||
throw RuntimeError("Unknown detector type");
|
||||
@ -652,6 +653,7 @@ std::vector<defs::dacIndex> Detector::getTemperatureList() const {
|
||||
std::vector<defs::dacIndex> retval;
|
||||
switch (getDetectorType().squash()) {
|
||||
case defs::CHIPTESTBOARD:
|
||||
case defs::XILINX_CHIPTESTBOARD:
|
||||
return std::vector<defs::dacIndex>{defs::SLOW_ADC_TEMP};
|
||||
case defs::JUNGFRAU:
|
||||
case defs::MOENCH:
|
||||
@ -743,6 +745,7 @@ std::vector<defs::dacIndex> Detector::getDacList() const {
|
||||
defs::VBP_COLBUF, defs::VIPRE, defs::VIN_CM, defs::VB_SDA,
|
||||
defs::VCASC_SFP, defs::VOUT_CM, defs::VIPRE_CDS, defs::IBIAS_SFP};
|
||||
case defs::CHIPTESTBOARD:
|
||||
case defs::XILINX_CHIPTESTBOARD:
|
||||
for (int i = 0; i != 18; ++i) {
|
||||
retval.push_back(static_cast<defs::dacIndex>(i));
|
||||
}
|
||||
@ -905,7 +908,8 @@ void Detector::stopDetector(Positions pos) {
|
||||
case defs::EIGER:
|
||||
case defs::JUNGFRAU:
|
||||
case defs::MOENCH:
|
||||
case defs::CHIPTESTBOARD: {
|
||||
case defs::CHIPTESTBOARD:
|
||||
case defs::XILINX_CHIPTESTBOARD: {
|
||||
auto res = getNextFrameNumber(pos);
|
||||
if (!res.equal()) {
|
||||
uint64_t maxVal = 0;
|
||||
@ -2079,7 +2083,9 @@ Result<int> Detector::getSYNCClock(Positions pos) const {
|
||||
}
|
||||
|
||||
std::vector<defs::dacIndex> Detector::getPowerList() const {
|
||||
if (getDetectorType().squash() != defs::CHIPTESTBOARD) {
|
||||
auto dettype = getDetectorType().squash();
|
||||
if (dettype != defs::CHIPTESTBOARD &&
|
||||
dettype != defs::XILINX_CHIPTESTBOARD) {
|
||||
throw RuntimeError("Power list not implemented for this detector");
|
||||
}
|
||||
return std::vector<defs::dacIndex>{defs::V_POWER_A, defs::V_POWER_B,
|
||||
@ -2088,7 +2094,9 @@ std::vector<defs::dacIndex> Detector::getPowerList() const {
|
||||
}
|
||||
|
||||
std::vector<defs::dacIndex> Detector::getSlowADCList() const {
|
||||
if (getDetectorType().squash() != defs::CHIPTESTBOARD) {
|
||||
auto dettype = getDetectorType().squash();
|
||||
if (dettype != defs::CHIPTESTBOARD &&
|
||||
dettype != defs::XILINX_CHIPTESTBOARD) {
|
||||
throw RuntimeError("Slow ADC list not implemented for this detector");
|
||||
}
|
||||
return std::vector<defs::dacIndex>{
|
||||
@ -2277,7 +2285,8 @@ void Detector::setLEDEnable(bool enable, Positions pos) {
|
||||
}
|
||||
|
||||
void Detector::setDacNames(const std::vector<std::string> names) {
|
||||
if (getDetectorType().squash() != defs::CHIPTESTBOARD)
|
||||
auto dettype = getDetectorType().squash();
|
||||
if (dettype != defs::CHIPTESTBOARD && dettype != defs::XILINX_CHIPTESTBOARD)
|
||||
throw RuntimeError("Named dacs only for CTB");
|
||||
pimpl->setCtbDacNames(names);
|
||||
}
|
||||
@ -2285,7 +2294,7 @@ void Detector::setDacNames(const std::vector<std::string> names) {
|
||||
std::vector<std::string> Detector::getDacNames() const {
|
||||
std::vector<std::string> names;
|
||||
auto type = getDetectorType().squash();
|
||||
if (type == defs::CHIPTESTBOARD)
|
||||
if (type == defs::CHIPTESTBOARD || type == defs::XILINX_CHIPTESTBOARD)
|
||||
return pimpl->getCtbDacNames();
|
||||
|
||||
for (const auto &index : getDacList())
|
||||
@ -2295,7 +2304,7 @@ std::vector<std::string> Detector::getDacNames() const {
|
||||
|
||||
defs::dacIndex Detector::getDacIndex(const std::string &name) const {
|
||||
auto type = getDetectorType().squash();
|
||||
if (type == defs::CHIPTESTBOARD) {
|
||||
if (type == defs::CHIPTESTBOARD || type == defs::XILINX_CHIPTESTBOARD) {
|
||||
auto names = getDacNames();
|
||||
auto it = std::find(names.begin(), names.end(), name);
|
||||
if (it == names.end())
|
||||
@ -2306,32 +2315,36 @@ defs::dacIndex Detector::getDacIndex(const std::string &name) const {
|
||||
}
|
||||
|
||||
void Detector::setDacName(const defs::dacIndex i, const std::string &name) {
|
||||
if (getDetectorType().squash() != defs::CHIPTESTBOARD)
|
||||
auto dettype = getDetectorType().squash();
|
||||
if (dettype != defs::CHIPTESTBOARD && dettype != defs::XILINX_CHIPTESTBOARD)
|
||||
throw RuntimeError("Named dacs only for CTB");
|
||||
pimpl->setCtbDacName(i, name);
|
||||
}
|
||||
|
||||
std::string Detector::getDacName(const defs::dacIndex i) const {
|
||||
auto type = getDetectorType().squash();
|
||||
if (type == defs::CHIPTESTBOARD)
|
||||
auto dettype = getDetectorType().squash();
|
||||
if (dettype == defs::CHIPTESTBOARD || dettype == defs::XILINX_CHIPTESTBOARD)
|
||||
return pimpl->getCtbDacName(i);
|
||||
return ToString(i);
|
||||
}
|
||||
|
||||
void Detector::setAdcNames(const std::vector<std::string> names) {
|
||||
if (getDetectorType().squash() != defs::CHIPTESTBOARD)
|
||||
auto dettype = getDetectorType().squash();
|
||||
if (dettype != defs::CHIPTESTBOARD && dettype != defs::XILINX_CHIPTESTBOARD)
|
||||
throw RuntimeError("Named adcs only for CTB");
|
||||
pimpl->setCtbAdcNames(names);
|
||||
}
|
||||
|
||||
std::vector<std::string> Detector::getAdcNames() const {
|
||||
if (getDetectorType().squash() != defs::CHIPTESTBOARD)
|
||||
auto dettype = getDetectorType().squash();
|
||||
if (dettype != defs::CHIPTESTBOARD && dettype != defs::XILINX_CHIPTESTBOARD)
|
||||
throw RuntimeError("Named adcs only for CTB");
|
||||
return pimpl->getCtbAdcNames();
|
||||
}
|
||||
|
||||
int Detector::getAdcIndex(const std::string &name) const {
|
||||
if (getDetectorType().squash() != defs::CHIPTESTBOARD)
|
||||
auto dettype = getDetectorType().squash();
|
||||
if (dettype != defs::CHIPTESTBOARD && dettype != defs::XILINX_CHIPTESTBOARD)
|
||||
throw RuntimeError("Named adcs only for CTB");
|
||||
auto names = getAdcNames();
|
||||
auto it = std::find(names.begin(), names.end(), name);
|
||||
@ -2341,31 +2354,36 @@ int Detector::getAdcIndex(const std::string &name) const {
|
||||
}
|
||||
|
||||
void Detector::setAdcName(const int index, const std::string &name) {
|
||||
if (getDetectorType().squash() != defs::CHIPTESTBOARD)
|
||||
auto dettype = getDetectorType().squash();
|
||||
if (dettype != defs::CHIPTESTBOARD && dettype != defs::XILINX_CHIPTESTBOARD)
|
||||
throw RuntimeError("Named adcs only for CTB");
|
||||
pimpl->setCtbAdcName(index, name);
|
||||
}
|
||||
|
||||
std::string Detector::getAdcName(const int i) const {
|
||||
if (getDetectorType().squash() != defs::CHIPTESTBOARD)
|
||||
auto dettype = getDetectorType().squash();
|
||||
if (dettype != defs::CHIPTESTBOARD && dettype != defs::XILINX_CHIPTESTBOARD)
|
||||
throw RuntimeError("Named adcs only for CTB");
|
||||
return pimpl->getCtbAdcName(i);
|
||||
}
|
||||
|
||||
void Detector::setSignalNames(const std::vector<std::string> names) {
|
||||
if (getDetectorType().squash() != defs::CHIPTESTBOARD)
|
||||
auto dettype = getDetectorType().squash();
|
||||
if (dettype != defs::CHIPTESTBOARD && dettype != defs::XILINX_CHIPTESTBOARD)
|
||||
throw RuntimeError("Named signals only for CTB");
|
||||
pimpl->setCtbSignalNames(names);
|
||||
}
|
||||
|
||||
std::vector<std::string> Detector::getSignalNames() const {
|
||||
if (getDetectorType().squash() != defs::CHIPTESTBOARD)
|
||||
auto dettype = getDetectorType().squash();
|
||||
if (dettype != defs::CHIPTESTBOARD && dettype != defs::XILINX_CHIPTESTBOARD)
|
||||
throw RuntimeError("Named signals only for CTB");
|
||||
return pimpl->getCtbSignalNames();
|
||||
}
|
||||
|
||||
int Detector::getSignalIndex(const std::string &name) const {
|
||||
if (getDetectorType().squash() != defs::CHIPTESTBOARD)
|
||||
auto dettype = getDetectorType().squash();
|
||||
if (dettype != defs::CHIPTESTBOARD && dettype != defs::XILINX_CHIPTESTBOARD)
|
||||
throw RuntimeError("Named signals only for CTB");
|
||||
auto names = getSignalNames();
|
||||
auto it = std::find(names.begin(), names.end(), name);
|
||||
@ -2375,31 +2393,37 @@ int Detector::getSignalIndex(const std::string &name) const {
|
||||
}
|
||||
|
||||
void Detector::setSignalName(const int index, const std::string &name) {
|
||||
if (getDetectorType().squash() != defs::CHIPTESTBOARD)
|
||||
auto dettype = getDetectorType().squash();
|
||||
if (dettype != defs::CHIPTESTBOARD && dettype != defs::XILINX_CHIPTESTBOARD)
|
||||
throw RuntimeError("Named signals only for CTB");
|
||||
pimpl->setCtbSignalName(index, name);
|
||||
}
|
||||
|
||||
std::string Detector::getSignalName(const int i) const {
|
||||
if (getDetectorType().squash() != defs::CHIPTESTBOARD)
|
||||
auto dettype = getDetectorType().squash();
|
||||
if (dettype != defs::CHIPTESTBOARD && dettype != defs::XILINX_CHIPTESTBOARD)
|
||||
throw RuntimeError("Named signals only for CTB");
|
||||
return pimpl->getCtbSignalName(i);
|
||||
}
|
||||
|
||||
void Detector::setPowerNames(const std::vector<std::string> names) {
|
||||
if (getDetectorType().squash() != defs::CHIPTESTBOARD)
|
||||
auto dettype = getDetectorType().squash();
|
||||
if (getDetectorType().squash() != defs::CHIPTESTBOARD &&
|
||||
dettype != defs::XILINX_CHIPTESTBOARD)
|
||||
throw RuntimeError("Named powers only for CTB");
|
||||
pimpl->setCtbPowerNames(names);
|
||||
}
|
||||
|
||||
std::vector<std::string> Detector::getPowerNames() const {
|
||||
if (getDetectorType().squash() != defs::CHIPTESTBOARD)
|
||||
auto dettype = getDetectorType().squash();
|
||||
if (dettype != defs::CHIPTESTBOARD && dettype != defs::XILINX_CHIPTESTBOARD)
|
||||
throw RuntimeError("Named powers only for CTB");
|
||||
return pimpl->getCtbPowerNames();
|
||||
}
|
||||
|
||||
defs::dacIndex Detector::getPowerIndex(const std::string &name) const {
|
||||
if (getDetectorType().squash() != defs::CHIPTESTBOARD)
|
||||
auto dettype = getDetectorType().squash();
|
||||
if (dettype != defs::CHIPTESTBOARD && dettype != defs::XILINX_CHIPTESTBOARD)
|
||||
throw RuntimeError("Named powers only for CTB");
|
||||
auto names = getPowerNames();
|
||||
auto it = std::find(names.begin(), names.end(), name);
|
||||
@ -2410,31 +2434,36 @@ defs::dacIndex Detector::getPowerIndex(const std::string &name) const {
|
||||
|
||||
void Detector::setPowerName(const defs::dacIndex index,
|
||||
const std::string &name) {
|
||||
if (getDetectorType().squash() != defs::CHIPTESTBOARD)
|
||||
auto dettype = getDetectorType().squash();
|
||||
if (dettype != defs::CHIPTESTBOARD && dettype != defs::XILINX_CHIPTESTBOARD)
|
||||
throw RuntimeError("Named powers only for CTB");
|
||||
pimpl->setCtbPowerName(index, name);
|
||||
}
|
||||
|
||||
std::string Detector::getPowerName(const defs::dacIndex i) const {
|
||||
if (getDetectorType().squash() != defs::CHIPTESTBOARD)
|
||||
auto dettype = getDetectorType().squash();
|
||||
if (dettype != defs::CHIPTESTBOARD && dettype != defs::XILINX_CHIPTESTBOARD)
|
||||
throw RuntimeError("Named powers only for CTB");
|
||||
return pimpl->getCtbPowerName(i);
|
||||
}
|
||||
|
||||
void Detector::setSlowADCNames(const std::vector<std::string> names) {
|
||||
if (getDetectorType().squash() != defs::CHIPTESTBOARD)
|
||||
auto dettype = getDetectorType().squash();
|
||||
if (dettype != defs::CHIPTESTBOARD && dettype != defs::XILINX_CHIPTESTBOARD)
|
||||
throw RuntimeError("Named SlowADCs only for CTB");
|
||||
pimpl->setCtbSlowADCNames(names);
|
||||
}
|
||||
|
||||
std::vector<std::string> Detector::getSlowADCNames() const {
|
||||
if (getDetectorType().squash() != defs::CHIPTESTBOARD)
|
||||
auto dettype = getDetectorType().squash();
|
||||
if (dettype != defs::CHIPTESTBOARD && dettype != defs::XILINX_CHIPTESTBOARD)
|
||||
throw RuntimeError("Named SlowADCs only for CTB");
|
||||
return pimpl->getCtbSlowADCNames();
|
||||
}
|
||||
|
||||
defs::dacIndex Detector::getSlowADCIndex(const std::string &name) const {
|
||||
if (getDetectorType().squash() != defs::CHIPTESTBOARD)
|
||||
auto dettype = getDetectorType().squash();
|
||||
if (dettype != defs::CHIPTESTBOARD && dettype != defs::XILINX_CHIPTESTBOARD)
|
||||
throw RuntimeError("Named SlowADCs only for CTB");
|
||||
auto names = getSlowADCNames();
|
||||
auto it = std::find(names.begin(), names.end(), name);
|
||||
@ -2445,13 +2474,15 @@ defs::dacIndex Detector::getSlowADCIndex(const std::string &name) const {
|
||||
|
||||
void Detector::setSlowADCName(const defs::dacIndex index,
|
||||
const std::string &name) {
|
||||
if (getDetectorType().squash() != defs::CHIPTESTBOARD)
|
||||
auto dettype = getDetectorType().squash();
|
||||
if (dettype != defs::CHIPTESTBOARD && dettype != defs::XILINX_CHIPTESTBOARD)
|
||||
throw RuntimeError("Named SlowADCs only for CTB");
|
||||
pimpl->setCtbSlowADCName(index, name);
|
||||
}
|
||||
|
||||
std::string Detector::getSlowADCName(const defs::dacIndex i) const {
|
||||
if (getDetectorType().squash() != defs::CHIPTESTBOARD)
|
||||
auto dettype = getDetectorType().squash();
|
||||
if (dettype != defs::CHIPTESTBOARD && dettype != defs::XILINX_CHIPTESTBOARD)
|
||||
throw RuntimeError("Named SlowADCs only for CTB");
|
||||
return pimpl->getCtbSlowADCName(i);
|
||||
}
|
||||
|
@ -272,7 +272,8 @@ void DetectorImpl::setHostname(const std::vector<std::string> &name) {
|
||||
// Here we know the detector type and can add ctb shared memory
|
||||
// if needed, CTB dac names are only on detector level
|
||||
|
||||
if (shm()->detType == defs::CHIPTESTBOARD) {
|
||||
if (shm()->detType == defs::CHIPTESTBOARD ||
|
||||
shm()->detType == defs::XILINX_CHIPTESTBOARD) {
|
||||
if (ctb_shm.exists())
|
||||
ctb_shm.openSharedMemory(true);
|
||||
else
|
||||
@ -711,7 +712,8 @@ void DetectorImpl::readFrameFromReceiver() {
|
||||
uint32_t yoffset = coordY * nPixelsY;
|
||||
uint32_t singledetrowoffset = nPixelsX * bytesPerPixel;
|
||||
uint32_t rowoffset = nX * singledetrowoffset;
|
||||
if (shm()->detType == CHIPTESTBOARD) {
|
||||
if (shm()->detType == CHIPTESTBOARD ||
|
||||
shm()->detType == defs::XILINX_CHIPTESTBOARD) {
|
||||
singledetrowoffset = size;
|
||||
}
|
||||
LOG(logDEBUG1)
|
||||
@ -1735,7 +1737,8 @@ void DetectorImpl::verifyUniqueHost(
|
||||
}
|
||||
|
||||
defs::ROI DetectorImpl::getRxROI() const {
|
||||
if (shm()->detType == CHIPTESTBOARD) {
|
||||
if (shm()->detType == CHIPTESTBOARD ||
|
||||
shm()->detType == defs::XILINX_CHIPTESTBOARD) {
|
||||
throw RuntimeError("RxRoi not implemented for this Detector");
|
||||
}
|
||||
if (modules.size() == 0) {
|
||||
@ -1810,7 +1813,8 @@ defs::ROI DetectorImpl::getRxROI() const {
|
||||
}
|
||||
|
||||
void DetectorImpl::setRxROI(const defs::ROI arg) {
|
||||
if (shm()->detType == CHIPTESTBOARD) {
|
||||
if (shm()->detType == CHIPTESTBOARD ||
|
||||
shm()->detType == defs::XILINX_CHIPTESTBOARD) {
|
||||
throw RuntimeError("RxRoi not implemented for this Detector");
|
||||
}
|
||||
if (modules.size() == 0) {
|
||||
|
@ -184,7 +184,8 @@ slsDetectorDefs::detectorType Module::getDetectorType() const {
|
||||
}
|
||||
|
||||
void Module::updateNumberOfChannels() {
|
||||
if (shm()->detType == CHIPTESTBOARD) {
|
||||
if (shm()->detType == CHIPTESTBOARD ||
|
||||
shm()->detType == XILINX_CHIPTESTBOARD) {
|
||||
std::array<int, 2> retvals{};
|
||||
sendToDetector(F_GET_NUM_CHANNELS, nullptr, retvals);
|
||||
shm()->nChan.x = retvals[0];
|
||||
@ -2461,7 +2462,8 @@ void Module::setReadoutMode(const slsDetectorDefs::readoutMode mode) {
|
||||
sendToDetector(F_SET_READOUT_MODE, arg, nullptr);
|
||||
sendToDetectorStop(F_SET_READOUT_MODE, arg, nullptr);
|
||||
// update #nchan, as it depends on #samples, adcmask,
|
||||
if (shm()->detType == CHIPTESTBOARD) {
|
||||
if (shm()->detType == CHIPTESTBOARD ||
|
||||
shm()->detType == XILINX_CHIPTESTBOARD) {
|
||||
updateNumberOfChannels();
|
||||
}
|
||||
if (shm()->useReceiverFlag) {
|
||||
@ -3407,6 +3409,8 @@ const std::string Module::getDetectorAPI() const {
|
||||
return APIMYTHEN3;
|
||||
case GOTTHARD2:
|
||||
return APIGOTTHARD2;
|
||||
case XILINX_CHIPTESTBOARD:
|
||||
return APIXILINXCTB;
|
||||
default:
|
||||
throw NotImplementedError(
|
||||
"Detector type not implemented to get Detector API");
|
||||
|
Reference in New Issue
Block a user