diff --git a/RELEASE.md b/RELEASE.md index 7213b631d..2246a6c17 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -62,6 +62,9 @@ support for building rpms removed unused function readDataFile/writeDataFile from file_utils.h +changed api: datastream=>udp_datastream, set/getDatastream=>set/getUDPDatastream +also implemetned for jungfrau, moench at receiver side (top/bottom) + 2 On-board Detector Server Compatibility ========================================== diff --git a/python/slsdet/detector.py b/python/slsdet/detector.py index 907b16c52..dafa661b9 100755 --- a/python/slsdet/detector.py +++ b/python/slsdet/detector.py @@ -2429,11 +2429,12 @@ class Detector(CppDetectorApi): """ @property - def datastream(self): + def udp_datastream(self): """ - datastream [LEFT|RIGHT|TOP|BOTTOM] [0, 1] - [Eiger] Enables or disables data streaming from left or/and right side of detector for 10GbE mode. 1 (enabled) by default. Options: LEFT, RIGHT. - [Jungfrau][Moench] Enables or disables data stream from top or/and bottom receiver. Can change only if numinterfaces is 2. 1 (enabled) by default. Options: TOP, BOTTOM. + [Eiger] Enable or disable UDP data streaming from the left and/or right detector ports in 10 GbE mode. Options: LEFT, RIGHT. Both ports are enabled by default. + + [Jungfrau][Moench] Enable or disable UDP data streaming from the top and/or bottom receiver interfaces. This option is available only when numinterfaces is set to 2. Options: TOP, BOTTOM. Both interfaces are enabled by default. + Enum: portPosition """ result = {} @@ -2443,12 +2444,12 @@ class Detector(CppDetectorApi): ports = [defs.LEFT, defs.RIGHT] for port in ports: - result[port] = element_if_equal(self.getDataStream(port)) + result[port] = element_if_equal(self.getUDPDataStream(port)) return result - @datastream.setter - def datastream(self, value): - ut.set_using_dict(self.setDataStream, *value) + @udp_datastream.setter + def udp_datastream(self, value): + self.setUDPDataStream(*value) @property @element diff --git a/python/src/detector.cpp b/python/src/detector.cpp index 9432bd6d3..40c48012e 100644 --- a/python/src/detector.cpp +++ b/python/src/detector.cpp @@ -841,16 +841,19 @@ void init_det(py::module &m) { CppDetectorApi.def( "setTransmissionDelay", (void (Detector::*)(int)) & Detector::setTransmissionDelay, py::arg()); - CppDetectorApi.def("getDataStream", + CppDetectorApi.def("getUDPDataStream", (Result(Detector::*)(const defs::portPosition, sls::Positions) const) & - Detector::getDataStream, + Detector::getUDPDataStream, py::arg(), py::arg() = Positions{}); - CppDetectorApi.def("setDataStream", + CppDetectorApi.def("setUDPDataStream", (void (Detector::*)(const defs::portPosition, const bool, sls::Positions)) & - Detector::setDataStream, + Detector::setUDPDataStream, py::arg(), py::arg(), py::arg() = Positions{}); + CppDetectorApi.def("getRxDisabledUDPPortIndices", + (std::vector(Detector::*)() const) & + Detector::getRxDisabledUDPPortIndices); CppDetectorApi.def("getPortPositionList", (std::vector(Detector::*)() const) & Detector::getPortPositionList); diff --git a/slsDetectorGui/src/qDrawPlot.cpp b/slsDetectorGui/src/qDrawPlot.cpp index 86d43dc66..54ffffbfd 100644 --- a/slsDetectorGui/src/qDrawPlot.cpp +++ b/slsDetectorGui/src/qDrawPlot.cpp @@ -620,7 +620,6 @@ void qDrawPlot::StartAcquisition() { "qDrawPlot::StartAcquisition"); } - QtConcurrent::run(this, &qDrawPlot::AcquireThread); LOG(logDEBUG) << "End of Starting Acquisition in qDrawPlot"; diff --git a/slsDetectorSoftware/generator/autocomplete/bash_autocomplete.sh b/slsDetectorSoftware/generator/autocomplete/bash_autocomplete.sh index 433bd33d4..8cfb78f9a 100644 --- a/slsDetectorSoftware/generator/autocomplete/bash_autocomplete.sh +++ b/slsDetectorSoftware/generator/autocomplete/bash_autocomplete.sh @@ -80,7 +80,7 @@ _sd() { local IS_PATH=0 -local SLS_COMMANDS=" acquire activate adcclk adcenable adcenable10g adcindex adcinvert adclist adcname adcphase adcpipeline adcreg adcvpp apulse asamples autocompdisable badchannels blockingtrigger burstmode burstperiod bursts burstsl bustest cdsgain chipversion clearbit clearbusy clientversion clkdiv clkfreq clkphase collectionmode column compdisabletime confadc config configtransceiver counters currentsource dac dacindex daclist dacname dacvalues datastream dbitclk dbitphase dbitpipeline defaultdac defaultpattern define_bit define_reg definelist_bit definelist_reg delay delayl detectorserverversion detsize diodelay dpulse dr drlist dsamples execcommand exptime exptime1 exptime2 exptime3 extrastoragecells extsampling extsamplingsrc extsig fformat filtercells filterresistor findex firmwaretest firmwareversion fliprows flowcontrol10g fmaster fname foverwrite fpath framecounter frames framesl frametime free fwrite gaincaps gainmode gappixels gatedelay gatedelay1 gatedelay2 gatedelay3 gates getbit hardwareversion highvoltage hostname im_a im_b im_c im_d im_io imagetest include initialchecks inj_ch interpolation interruptsubframe kernelversion lastclient led lock master maxadcphaseshift maxclkphaseshift maxdbitphaseshift measuredperiod measuredsubperiod moduleid nextframenumber nmod numinterfaces overflow packageversion parallel parameters partialreset patfname patioctrl patlimits patloop patloop0 patloop1 patloop2 patmask patnloop patnloop0 patnloop1 patnloop2 patsetbit pattern patternstart patwait patwait0 patwait1 patwait2 patwaittime patwaittime0 patwaittime1 patwaittime2 patword pedestalmode period periodl polarity port power powerchip powerdac powerindex powerlist powername powervalues programfpga pulse pulsechip pulsenmove pumpprobe quad ratecorr readnrows readout readoutspeed readoutspeedlist rebootcontroller reg resetdacs resetfpga romode row runclk runtime rx_arping rx_clearroi rx_dbitlist rx_dbitoffset rx_dbitreorder rx_discardpolicy rx_fifodepth rx_frameindex rx_framescaught rx_framesperfile rx_hostname rx_jsonaddheader rx_jsonpara rx_lastclient rx_lock rx_missingpackets rx_padding rx_printconfig rx_realudpsocksize rx_roi rx_silent rx_start rx_status rx_stop rx_tcpport rx_threads rx_udpsocksize rx_version rx_zmqfreq rx_zmqhwm rx_zmqip rx_zmqport rx_zmqstartfnum rx_zmqstream samples savepattern scan scanerrmsg selinterface serialnumber setbit settings settingslist settingspath signalindex signallist signalname sleep slowadc slowadcindex slowadclist slowadcname slowadcvalues start status stop stopport storagecell_delay storagecell_start subdeadtime subexptime sync syncclk temp_10ge temp_adc temp_control temp_dcdc temp_event temp_fpga temp_fpgaext temp_fpgafl temp_fpgafr temp_slowadc temp_sodl temp_sodr temp_threshold templist tempvalues tengiga threshold thresholdnotb timing timing_info_decoder timinglist timingsource top transceiverenable trigger triggers triggersl trimbits trimen trimval tsamples txdelay txdelay_frame txdelay_left txdelay_right type udp_cleardst udp_dstip udp_dstip2 udp_dstlist udp_dstmac udp_dstmac2 udp_dstport udp_dstport2 udp_firstdst udp_numdst udp_reconfigure udp_srcip udp_srcip2 udp_srcmac udp_srcmac2 udp_validate update updatedetectorserver updatekernel updatemode user v_limit vchip_comp_adc vchip_comp_fe vchip_cs vchip_opa_1st vchip_opa_fd vchip_ref_comp_fe versions veto vetoalg vetofile vetophoton vetoref vetostream virtual vm_a vm_b vm_c vm_d vm_io zmqhwm zmqip zmqport " +local SLS_COMMANDS=" acquire activate adcclk adcenable adcenable10g adcindex adcinvert adclist adcname adcphase adcpipeline adcreg adcvpp apulse asamples autocompdisable badchannels blockingtrigger burstmode burstperiod bursts burstsl bustest cdsgain chipversion clearbit clearbusy clientversion clkdiv clkfreq clkphase collectionmode column compdisabletime confadc config configtransceiver counters currentsource dac dacindex daclist dacname dacvalues dbitclk dbitphase dbitpipeline defaultdac defaultpattern define_bit define_reg definelist_bit definelist_reg delay delayl detectorserverversion detsize diodelay dpulse dr drlist dsamples execcommand exptime exptime1 exptime2 exptime3 extrastoragecells extsampling extsamplingsrc extsig fformat filtercells filterresistor findex firmwaretest firmwareversion fliprows flowcontrol10g fmaster fname foverwrite fpath framecounter frames framesl frametime free fwrite gaincaps gainmode gappixels gatedelay gatedelay1 gatedelay2 gatedelay3 gates getbit hardwareversion highvoltage hostname im_a im_b im_c im_d im_io imagetest include initialchecks inj_ch interpolation interruptsubframe kernelversion lastclient led lock master maxadcphaseshift maxclkphaseshift maxdbitphaseshift measuredperiod measuredsubperiod moduleid nextframenumber nmod numinterfaces overflow packageversion parallel parameters partialreset patfname patioctrl patlimits patloop patloop0 patloop1 patloop2 patmask patnloop patnloop0 patnloop1 patnloop2 patsetbit pattern patternstart patwait patwait0 patwait1 patwait2 patwaittime patwaittime0 patwaittime1 patwaittime2 patword pedestalmode period periodl polarity port power powerchip powerdac powerindex powerlist powername powervalues programfpga pulse pulsechip pulsenmove pumpprobe quad ratecorr readnrows readout readoutspeed readoutspeedlist rebootcontroller reg resetdacs resetfpga romode row runclk runtime rx_arping rx_clearroi rx_dbitlist rx_dbitoffset rx_dbitreorder rx_discardpolicy rx_fifodepth rx_frameindex rx_framescaught rx_framesperfile rx_hostname rx_jsonaddheader rx_jsonpara rx_lastclient rx_lock rx_missingpackets rx_padding rx_printconfig rx_realudpsocksize rx_roi rx_silent rx_start rx_status rx_stop rx_tcpport rx_threads rx_udpsocksize rx_version rx_zmqfreq rx_zmqhwm rx_zmqip rx_zmqport rx_zmqstartfnum rx_zmqstream samples savepattern scan scanerrmsg selinterface serialnumber setbit settings settingslist settingspath signalindex signallist signalname sleep slowadc slowadcindex slowadclist slowadcname slowadcvalues start status stop stopport storagecell_delay storagecell_start subdeadtime subexptime sync syncclk temp_10ge temp_adc temp_control temp_dcdc temp_event temp_fpga temp_fpgaext temp_fpgafl temp_fpgafr temp_slowadc temp_sodl temp_sodr temp_threshold templist tempvalues tengiga threshold thresholdnotb timing timing_info_decoder timinglist timingsource top transceiverenable trigger triggers triggersl trimbits trimen trimval tsamples txdelay txdelay_frame txdelay_left txdelay_right type udp_cleardst udp_datastream udp_dstip udp_dstip2 udp_dstlist udp_dstmac udp_dstmac2 udp_dstport udp_dstport2 udp_firstdst udp_numdst udp_reconfigure udp_srcip udp_srcip2 udp_srcmac udp_srcmac2 udp_validate update updatedetectorserver updatekernel updatemode user v_limit vchip_comp_adc vchip_comp_fe vchip_cs vchip_opa_1st vchip_opa_fd vchip_ref_comp_fe versions veto vetoalg vetofile vetophoton vetoref vetostream virtual vm_a vm_b vm_c vm_d vm_io zmqhwm zmqip zmqport " __acquire() { FCN_RETURN="" return 0 @@ -600,23 +600,6 @@ fi fi return 0 } -__datastream() { -FCN_RETURN="" -if [[ ${IS_GET} -eq 1 ]]; then -if [[ "${cword}" == "2" ]]; then -FCN_RETURN="bottom left right top" -fi -fi -if [[ ${IS_GET} -eq 0 ]]; then -if [[ "${cword}" == "2" ]]; then -FCN_RETURN="bottom left right top" -fi -if [[ "${cword}" == "3" ]]; then -FCN_RETURN="0 1" -fi -fi -return 0 -} __dbitclk() { FCN_RETURN="" if [[ ${IS_GET} -eq 1 ]]; then @@ -2989,6 +2972,23 @@ __udp_cleardst() { FCN_RETURN="" return 0 } +__udp_datastream() { +FCN_RETURN="" +if [[ ${IS_GET} -eq 1 ]]; then +if [[ "${cword}" == "2" ]]; then +FCN_RETURN="bottom left right top" +fi +fi +if [[ ${IS_GET} -eq 0 ]]; then +if [[ "${cword}" == "2" ]]; then +FCN_RETURN="bottom left right top" +fi +if [[ "${cword}" == "3" ]]; then +FCN_RETURN="0 1" +fi +fi +return 0 +} __udp_dstip() { FCN_RETURN="" if [[ ${IS_GET} -eq 0 ]]; then diff --git a/slsDetectorSoftware/generator/autocomplete/zsh_autocomplete.sh b/slsDetectorSoftware/generator/autocomplete/zsh_autocomplete.sh index 953f971d2..374915850 100644 --- a/slsDetectorSoftware/generator/autocomplete/zsh_autocomplete.sh +++ b/slsDetectorSoftware/generator/autocomplete/zsh_autocomplete.sh @@ -4,7 +4,7 @@ _sd() { -local SLS_COMMANDS=" acquire activate adcclk adcenable adcenable10g adcindex adcinvert adclist adcname adcphase adcpipeline adcreg adcvpp apulse asamples autocompdisable badchannels blockingtrigger burstmode burstperiod bursts burstsl bustest cdsgain chipversion clearbit clearbusy clientversion clkdiv clkfreq clkphase collectionmode column compdisabletime confadc config configtransceiver counters currentsource dac dacindex daclist dacname dacvalues datastream dbitclk dbitphase dbitpipeline defaultdac defaultpattern define_bit define_reg definelist_bit definelist_reg delay delayl detectorserverversion detsize diodelay dpulse dr drlist dsamples execcommand exptime exptime1 exptime2 exptime3 extrastoragecells extsampling extsamplingsrc extsig fformat filtercells filterresistor findex firmwaretest firmwareversion fliprows flowcontrol10g fmaster fname foverwrite fpath framecounter frames framesl frametime free fwrite gaincaps gainmode gappixels gatedelay gatedelay1 gatedelay2 gatedelay3 gates getbit hardwareversion highvoltage hostname im_a im_b im_c im_d im_io imagetest include initialchecks inj_ch interpolation interruptsubframe kernelversion lastclient led lock master maxadcphaseshift maxclkphaseshift maxdbitphaseshift measuredperiod measuredsubperiod moduleid nextframenumber nmod numinterfaces overflow packageversion parallel parameters partialreset patfname patioctrl patlimits patloop patloop0 patloop1 patloop2 patmask patnloop patnloop0 patnloop1 patnloop2 patsetbit pattern patternstart patwait patwait0 patwait1 patwait2 patwaittime patwaittime0 patwaittime1 patwaittime2 patword pedestalmode period periodl polarity port power powerchip powerdac powerindex powerlist powername powervalues programfpga pulse pulsechip pulsenmove pumpprobe quad ratecorr readnrows readout readoutspeed readoutspeedlist rebootcontroller reg resetdacs resetfpga romode row runclk runtime rx_arping rx_clearroi rx_dbitlist rx_dbitoffset rx_dbitreorder rx_discardpolicy rx_fifodepth rx_frameindex rx_framescaught rx_framesperfile rx_hostname rx_jsonaddheader rx_jsonpara rx_lastclient rx_lock rx_missingpackets rx_padding rx_printconfig rx_realudpsocksize rx_roi rx_silent rx_start rx_status rx_stop rx_tcpport rx_threads rx_udpsocksize rx_version rx_zmqfreq rx_zmqhwm rx_zmqip rx_zmqport rx_zmqstartfnum rx_zmqstream samples savepattern scan scanerrmsg selinterface serialnumber setbit settings settingslist settingspath signalindex signallist signalname sleep slowadc slowadcindex slowadclist slowadcname slowadcvalues start status stop stopport storagecell_delay storagecell_start subdeadtime subexptime sync syncclk temp_10ge temp_adc temp_control temp_dcdc temp_event temp_fpga temp_fpgaext temp_fpgafl temp_fpgafr temp_slowadc temp_sodl temp_sodr temp_threshold templist tempvalues tengiga threshold thresholdnotb timing timing_info_decoder timinglist timingsource top transceiverenable trigger triggers triggersl trimbits trimen trimval tsamples txdelay txdelay_frame txdelay_left txdelay_right type udp_cleardst udp_dstip udp_dstip2 udp_dstlist udp_dstmac udp_dstmac2 udp_dstport udp_dstport2 udp_firstdst udp_numdst udp_reconfigure udp_srcip udp_srcip2 udp_srcmac udp_srcmac2 udp_validate update updatedetectorserver updatekernel updatemode user v_limit vchip_comp_adc vchip_comp_fe vchip_cs vchip_opa_1st vchip_opa_fd vchip_ref_comp_fe versions veto vetoalg vetofile vetophoton vetoref vetostream virtual vm_a vm_b vm_c vm_d vm_io zmqhwm zmqip zmqport " +local SLS_COMMANDS=" acquire activate adcclk adcenable adcenable10g adcindex adcinvert adclist adcname adcphase adcpipeline adcreg adcvpp apulse asamples autocompdisable badchannels blockingtrigger burstmode burstperiod bursts burstsl bustest cdsgain chipversion clearbit clearbusy clientversion clkdiv clkfreq clkphase collectionmode column compdisabletime confadc config configtransceiver counters currentsource dac dacindex daclist dacname dacvalues dbitclk dbitphase dbitpipeline defaultdac defaultpattern define_bit define_reg definelist_bit definelist_reg delay delayl detectorserverversion detsize diodelay dpulse dr drlist dsamples execcommand exptime exptime1 exptime2 exptime3 extrastoragecells extsampling extsamplingsrc extsig fformat filtercells filterresistor findex firmwaretest firmwareversion fliprows flowcontrol10g fmaster fname foverwrite fpath framecounter frames framesl frametime free fwrite gaincaps gainmode gappixels gatedelay gatedelay1 gatedelay2 gatedelay3 gates getbit hardwareversion highvoltage hostname im_a im_b im_c im_d im_io imagetest include initialchecks inj_ch interpolation interruptsubframe kernelversion lastclient led lock master maxadcphaseshift maxclkphaseshift maxdbitphaseshift measuredperiod measuredsubperiod moduleid nextframenumber nmod numinterfaces overflow packageversion parallel parameters partialreset patfname patioctrl patlimits patloop patloop0 patloop1 patloop2 patmask patnloop patnloop0 patnloop1 patnloop2 patsetbit pattern patternstart patwait patwait0 patwait1 patwait2 patwaittime patwaittime0 patwaittime1 patwaittime2 patword pedestalmode period periodl polarity port power powerchip powerdac powerindex powerlist powername powervalues programfpga pulse pulsechip pulsenmove pumpprobe quad ratecorr readnrows readout readoutspeed readoutspeedlist rebootcontroller reg resetdacs resetfpga romode row runclk runtime rx_arping rx_clearroi rx_dbitlist rx_dbitoffset rx_dbitreorder rx_discardpolicy rx_fifodepth rx_frameindex rx_framescaught rx_framesperfile rx_hostname rx_jsonaddheader rx_jsonpara rx_lastclient rx_lock rx_missingpackets rx_padding rx_printconfig rx_realudpsocksize rx_roi rx_silent rx_start rx_status rx_stop rx_tcpport rx_threads rx_udpsocksize rx_version rx_zmqfreq rx_zmqhwm rx_zmqip rx_zmqport rx_zmqstartfnum rx_zmqstream samples savepattern scan scanerrmsg selinterface serialnumber setbit settings settingslist settingspath signalindex signallist signalname sleep slowadc slowadcindex slowadclist slowadcname slowadcvalues start status stop stopport storagecell_delay storagecell_start subdeadtime subexptime sync syncclk temp_10ge temp_adc temp_control temp_dcdc temp_event temp_fpga temp_fpgaext temp_fpgafl temp_fpgafr temp_slowadc temp_sodl temp_sodr temp_threshold templist tempvalues tengiga threshold thresholdnotb timing timing_info_decoder timinglist timingsource top transceiverenable trigger triggers triggersl trimbits trimen trimval tsamples txdelay txdelay_frame txdelay_left txdelay_right type udp_cleardst udp_datastream udp_dstip udp_dstip2 udp_dstlist udp_dstmac udp_dstmac2 udp_dstport udp_dstport2 udp_firstdst udp_numdst udp_reconfigure udp_srcip udp_srcip2 udp_srcmac udp_srcmac2 udp_validate update updatedetectorserver updatekernel updatemode user v_limit vchip_comp_adc vchip_comp_fe vchip_cs vchip_opa_1st vchip_opa_fd vchip_ref_comp_fe versions veto vetoalg vetofile vetophoton vetoref vetostream virtual vm_a vm_b vm_c vm_d vm_io zmqhwm zmqip zmqport " __acquire() { FCN_RETURN="" return 0 @@ -524,23 +524,6 @@ fi fi return 0 } -__datastream() { -FCN_RETURN="" -if [[ ${IS_GET} -eq 1 ]]; then -if [[ "${cword}" == "2" ]]; then -FCN_RETURN="bottom left right top" -fi -fi -if [[ ${IS_GET} -eq 0 ]]; then -if [[ "${cword}" == "2" ]]; then -FCN_RETURN="bottom left right top" -fi -if [[ "${cword}" == "3" ]]; then -FCN_RETURN="0 1" -fi -fi -return 0 -} __dbitclk() { FCN_RETURN="" if [[ ${IS_GET} -eq 1 ]]; then @@ -2913,6 +2896,23 @@ __udp_cleardst() { FCN_RETURN="" return 0 } +__udp_datastream() { +FCN_RETURN="" +if [[ ${IS_GET} -eq 1 ]]; then +if [[ "${cword}" == "2" ]]; then +FCN_RETURN="bottom left right top" +fi +fi +if [[ ${IS_GET} -eq 0 ]]; then +if [[ "${cword}" == "2" ]]; then +FCN_RETURN="bottom left right top" +fi +if [[ "${cword}" == "3" ]]; then +FCN_RETURN="0 1" +fi +fi +return 0 +} __udp_dstip() { FCN_RETURN="" if [[ ${IS_GET} -eq 0 ]]; then diff --git a/slsDetectorSoftware/generator/commands.yaml b/slsDetectorSoftware/generator/commands.yaml index 2e9e50dc1..6df21ba62 100644 --- a/slsDetectorSoftware/generator/commands.yaml +++ b/slsDetectorSoftware/generator/commands.yaml @@ -3610,13 +3610,13 @@ quad: cast_input: [ true ] output: [ args.front() ] -datastream: - help: "[left|right|top|bottom] [0, 1]\n\t[Eiger] Enables or disables data streaming from left or/and right side of detector for 10 GbE mode. Options: left, right. 1 (enabled) by default.\n\t[Jungfrau][Moench] Enables or disables data stream from top or/and bottom side of receiver. Can change only if numinterfaces is 2. Options: top, bottom.1 (enabled) by default." +udp_datastream: + help: "[left|right|top|bottom] [0, 1]\n\t[Eiger] Enable or disable UDP data streaming from the left and/or right detector ports in 10 GbE mode. Options: left, right. Both ports are enabled (1) by default.\n\t[Jungfrau][Moench] Enable or disable UDP data streaming from the top and/or bottom receiver interfaces. This option is available only when numinterfaces is set to 2. Options: top, bottom. Both interfaces are enabled (1) by default." actions: GET: argc: 1 require_det_id: true - function: getDataStream + function: getUDPDataStream input: [ 'args[0]' ] input_types: [ defs::portPosition ] cast_input: [ true ] @@ -3624,7 +3624,7 @@ datastream: PUT: argc: 2 require_det_id: true - function: setDataStream + function: setUDPDataStream input: [ 'args[0]', 'args[1]' ] input_types: [ defs::portPosition, bool ] cast_input: [ true, true ] diff --git a/slsDetectorSoftware/generator/deprecated_commands.yaml b/slsDetectorSoftware/generator/deprecated_commands.yaml index 7c3b8038c..31491851f 100644 --- a/slsDetectorSoftware/generator/deprecated_commands.yaml +++ b/slsDetectorSoftware/generator/deprecated_commands.yaml @@ -1,4 +1,3 @@ -#configuration detectorversion: firmwareversion softwareversion: detectorserverversion receiverversion: rx_version @@ -8,8 +7,6 @@ detsizechan: detsize trimdir: settingspath settingsdir: settingspath flippeddatax: fliprows - -#acquisition parameters cycles: triggers cyclesl: triggersl clkdivider: readoutspeed @@ -18,10 +15,6 @@ vhighvoltage: highvoltage digitest: imagetest filter: filterresistor readnlines: readnrows - -# temperature - -# super old dacs vtr: vtrim vrf: vrpreamp vrs: vrshaper @@ -33,8 +26,6 @@ vshaperneg: vrshaper_n viinsh: vishaper vpl: vcal_n vph: vcal_p - -# dacs vthreshold: dac vsvp: dac vsvn: dac @@ -93,17 +84,11 @@ vb_sda: dac vcasc_sfp: dac vipre_cds: dac ibias_sfp: dac - - defaultdacs: resetdacs - -#acquisition busy: clearbusy receiver: rx_status framescaught: rx_framescaught startingfnum: nextframenumber - -#Network Configuration (Detector<->Receiver) detectorip: udp_srcip detectorip2: udp_srcip2 detectormac: udp_srcmac @@ -118,15 +103,11 @@ flowcontrol_10g: flowcontrol10g txndelay_frame: txdelay_frame txndelay_left: txdelay_left txndelay_right: txdelay_right - -#Receiver Config r_silent: rx_silent r_discardpolicy: rx_discardpolicy r_padding: rx_padding r_lock: rx_lock r_lastclient: rx_lastclient - -#File fileformat: fformat outdir: fpath index: findex @@ -134,23 +115,13 @@ enablefwrite: fwrite masterfile: fmaster overwrite: foverwrite r_framesperfile: rx_framesperfile - -#ZMQ Streaming Parameters (Receiver<->Client) r_readfreq: rx_zmqfreq rx_readfreq: rx_zmqfreq rx_datastream: rx_zmqstream - -#Eiger Specific resmat: partialreset - -#Jungfrau Specific storagecells: extrastoragecells auto_comp_disable: autocompdisable comp_disable_time: compdisabletime - -#Gotthard2 Specific -#Mythen3 Specific -#CTB Specific adc: slowadc flags: romode i_a: im_a @@ -158,16 +129,10 @@ i_b: im_b i_c: im_c i_d: im_d i_io: im_io - -#Pattern patternX: pattern -#Moench - -#Advanced copydetectorserver: updatedetectorserver - -#Insignificant nframes: framecounter now: runtime timestamp: frametime -frameindex: rx_frameindex \ No newline at end of file +frameindex: rx_frameindex +datastream: udp_datastream \ No newline at end of file diff --git a/slsDetectorSoftware/generator/extended_commands.yaml b/slsDetectorSoftware/generator/extended_commands.yaml index 0469f00d1..a0bf64de5 100644 --- a/slsDetectorSoftware/generator/extended_commands.yaml +++ b/slsDetectorSoftware/generator/extended_commands.yaml @@ -2038,56 +2038,6 @@ dacvalues: help: '' infer_action: true is_description: true -datastream: - actions: - GET: - args: - - arg_types: - - defs::portPosition - argc: 1 - cast_input: - - true - check_det_id: false - convert_det_id: true - function: getDataStream - input: - - args[0] - input_types: - - defs::portPosition - output: - - OutString(t) - require_det_id: true - store_result_in_t: true - PUT: - args: - - arg_types: - - defs::portPosition - - bool - argc: 2 - cast_input: - - true - - true - check_det_id: false - convert_det_id: true - function: setDataStream - input: - - args[0] - - args[1] - input_types: - - defs::portPosition - - bool - output: - - ToString(args) - require_det_id: true - store_result_in_t: false - command_name: datastream - function_alias: datastream - help: "[left|right|top|bottom] [0, 1]\n\t[Eiger] Enables or disables data streaming\ - \ from left or/and right side of detector for 10 GbE mode. Options: left, right.\ - \ 1 (enabled) by default.\n\t[Jungfrau][Moench] Enables or disables data stream\ - \ from top or/and bottom side of receiver. Can change only if numinterfaces is\ - \ 2. Options: top, bottom.1 (enabled) by default." - infer_action: true dbitclk: actions: GET: @@ -12016,6 +11966,57 @@ udp_cleardst: help: "\n\tClears udp destination details on the detector." infer_action: true template: true +udp_datastream: + actions: + GET: + args: + - arg_types: + - defs::portPosition + argc: 1 + cast_input: + - true + check_det_id: false + convert_det_id: true + function: getUDPDataStream + input: + - args[0] + input_types: + - defs::portPosition + output: + - OutString(t) + require_det_id: true + store_result_in_t: true + PUT: + args: + - arg_types: + - defs::portPosition + - bool + argc: 2 + cast_input: + - true + - true + check_det_id: false + convert_det_id: true + function: setUDPDataStream + input: + - args[0] + - args[1] + input_types: + - defs::portPosition + - bool + output: + - ToString(args) + require_det_id: true + store_result_in_t: false + command_name: udp_datastream + function_alias: udp_datastream + help: "[left|right|top|bottom] [0, 1]\n\t[Eiger] Enable or disable UDP data streaming\ + \ from the left and/or right detector ports in 10 GbE mode. Options: left, right.\ + \ Both ports are enabled (1) by default.\n\t[Jungfrau][Moench] Enable or disable\ + \ UDP data streaming from the top and/or bottom receiver interfaces. This option\ + \ is available only when numinterfaces is set to 2. Options: top, bottom. Both\ + \ interfaces are enabled (1) by default." + infer_action: true udp_dstip: actions: GET: diff --git a/slsDetectorSoftware/include/sls/Detector.h b/slsDetectorSoftware/include/sls/Detector.h index ebe5de20a..d1ca3ecc4 100644 --- a/slsDetectorSoftware/include/sls/Detector.h +++ b/slsDetectorSoftware/include/sls/Detector.h @@ -899,26 +899,24 @@ class Detector { void setTransmissionDelay(int step); /** [Eiger] Module Level disable. Options: LEFT, RIGHT - * [Jungfrau][Moench] Only Receiver level diable. Options: TOP, BOTTOM + * [Jungfrau][Moench] Only Receiver level disable. Options: TOP, BOTTOM * */ - Result getDataStream(const defs::portPosition port, - Positions pos = {}) const; + Result getUDPDataStream(const defs::portPosition port, + Positions pos = {}) const; - /** [Eiger] enable or disable data streaming from left or right of detector - * for 10GbE. Default: enabled - * [Jungfrau][Moench] Enable/Disable data streaming from the top or bottom - * of receiver. Default: enabled. Disabling of any port works only if number - * of interfaces is 2. + /** [Eiger] enable or disable UDP data streaming from left or right of + * detector for 10GbE. Default: enabled \n [Jungfrau][Moench] Enable/Disable + * UDP data streaming from the top or bottom of receiver. Default: enabled. + * Disabling of any port works only if number of interfaces is 2. */ - void setDataStream(const defs::portPosition port, const bool enable, - Positions pos = {}); + void setUDPDataStream(const defs::portPosition port, const bool enable, + Positions pos = {}); - /** List of disabled udp ports with index (moduleIndex * 2 + portIndex), + /** List of disabled UDP ports with index (moduleIndex * 2 + portIndex), * where portIndex is 0 for BOTTOM/LEFT port, and 1 for TOP/RIGHT port * [Eiger] LEFT, RIGHT - * [Jungfrau][Moench] throws for single UDP interface. Otherwise, TOP, - * BOTTOM + * [Jungfrau][Moench] TOP, BOTTOM, but throws for a single UDP interface */ std::vector getRxDisabledUDPPortIndices() const; diff --git a/slsDetectorSoftware/src/Caller.cpp b/slsDetectorSoftware/src/Caller.cpp index 2b260ef2b..bd5628c74 100644 --- a/slsDetectorSoftware/src/Caller.cpp +++ b/slsDetectorSoftware/src/Caller.cpp @@ -2426,83 +2426,6 @@ std::string Caller::dacname(int action) { return os.str(); } -std::string Caller::datastream(int action) { - - std::ostringstream os; - // print help - if (action == slsDetectorDefs::HELP_ACTION) { - os << R"V0G0N([left|right|top|bottom] [0, 1] - [Eiger] Enables or disables data streaming from left or/and right side of detector for 10 GbE mode. Options: left, right. 1 (enabled) by default. - [Jungfrau][Moench] Enables or disables data stream from top or/and bottom side of receiver. Can change only if numinterfaces is 2. Options: top, bottom.1 (enabled) by default. )V0G0N" - << std::endl; - return os.str(); - } - - // check if action and arguments are valid - if (action == slsDetectorDefs::GET_ACTION) { - if (1 && args.size() != 1) { - throw RuntimeError("Wrong number of arguments for action GET"); - } - - if (args.size() == 1) { - try { - StringTo(args[0]); - } catch (...) { - throw RuntimeError( - "Could not convert argument 0 to defs::portPosition"); - } - } - - } - - else if (action == slsDetectorDefs::PUT_ACTION) { - if (1 && args.size() != 2) { - throw RuntimeError("Wrong number of arguments for action PUT"); - } - - if (args.size() == 2) { - try { - StringTo(args[0]); - } catch (...) { - throw RuntimeError( - "Could not convert argument 0 to defs::portPosition"); - } - try { - StringTo(args[1]); - } catch (...) { - throw RuntimeError("Could not convert argument 1 to bool"); - } - } - - } - - else { - - throw RuntimeError("INTERNAL ERROR: Invalid action: supported actions " - "are ['GET', 'PUT']"); - } - - // generate code for each action - if (action == slsDetectorDefs::GET_ACTION) { - if (args.size() == 1) { - auto arg0 = StringTo(args[0]); - auto t = det->getDataStream(arg0, std::vector{det_id}); - os << OutString(t) << '\n'; - } - } - - if (action == slsDetectorDefs::PUT_ACTION) { - if (args.size() == 2) { - auto arg0 = StringTo(args[0]); - auto arg1 = StringTo(args[1]); - det->setDataStream(arg0, arg1, std::vector{det_id}); - os << ToString(args) << '\n'; - } - } - - return os.str(); -} - std::string Caller::dbitclk(int action) { std::ostringstream os; @@ -14951,6 +14874,83 @@ std::string Caller::udp_cleardst(int action) { return os.str(); } +std::string Caller::udp_datastream(int action) { + + std::ostringstream os; + // print help + if (action == slsDetectorDefs::HELP_ACTION) { + os << R"V0G0N([left|right|top|bottom] [0, 1] + [Eiger] Enable or disable UDP data streaming from the left and/or right detector ports in 10 GbE mode. Options: left, right. Both ports are enabled (1) by default. + [Jungfrau][Moench] Enable or disable UDP data streaming from the top and/or bottom receiver interfaces. This option is available only when numinterfaces is set to 2. Options: top, bottom. Both interfaces are enabled (1) by default. )V0G0N" + << std::endl; + return os.str(); + } + + // check if action and arguments are valid + if (action == slsDetectorDefs::GET_ACTION) { + if (1 && args.size() != 1) { + throw RuntimeError("Wrong number of arguments for action GET"); + } + + if (args.size() == 1) { + try { + StringTo(args[0]); + } catch (...) { + throw RuntimeError( + "Could not convert argument 0 to defs::portPosition"); + } + } + + } + + else if (action == slsDetectorDefs::PUT_ACTION) { + if (1 && args.size() != 2) { + throw RuntimeError("Wrong number of arguments for action PUT"); + } + + if (args.size() == 2) { + try { + StringTo(args[0]); + } catch (...) { + throw RuntimeError( + "Could not convert argument 0 to defs::portPosition"); + } + try { + StringTo(args[1]); + } catch (...) { + throw RuntimeError("Could not convert argument 1 to bool"); + } + } + + } + + else { + + throw RuntimeError("INTERNAL ERROR: Invalid action: supported actions " + "are ['GET', 'PUT']"); + } + + // generate code for each action + if (action == slsDetectorDefs::GET_ACTION) { + if (args.size() == 1) { + auto arg0 = StringTo(args[0]); + auto t = det->getUDPDataStream(arg0, std::vector{det_id}); + os << OutString(t) << '\n'; + } + } + + if (action == slsDetectorDefs::PUT_ACTION) { + if (args.size() == 2) { + auto arg0 = StringTo(args[0]); + auto arg1 = StringTo(args[1]); + det->setUDPDataStream(arg0, arg1, std::vector{det_id}); + os << ToString(args) << '\n'; + } + } + + return os.str(); +} + std::string Caller::udp_dstlist(int action) { std::ostringstream os; diff --git a/slsDetectorSoftware/src/Caller.h b/slsDetectorSoftware/src/Caller.h index d35ffe569..16e45fc7b 100644 --- a/slsDetectorSoftware/src/Caller.h +++ b/slsDetectorSoftware/src/Caller.h @@ -105,7 +105,6 @@ class Caller { std::string daclist(int action); std::string dacname(int action); std::string dacvalues(int action); - std::string datastream(int action); std::string dbitclk(int action); std::string dbitphase(int action); std::string dbitpipeline(int action); @@ -344,6 +343,7 @@ class Caller { std::string txdelay_right(int action); std::string type(int action); std::string udp_cleardst(int action); + std::string udp_datastream(int action); std::string udp_dstip(int action); std::string udp_dstip2(int action); std::string udp_dstlist(int action); @@ -473,7 +473,6 @@ class Caller { {"daclist", &Caller::daclist}, {"dacname", &Caller::dacname}, {"dacvalues", &Caller::dacvalues}, - {"datastream", &Caller::datastream}, {"dbitclk", &Caller::dbitclk}, {"dbitphase", &Caller::dbitphase}, {"dbitpipeline", &Caller::dbitpipeline}, @@ -716,6 +715,7 @@ class Caller { {"txdelay_right", &Caller::txdelay_right}, {"type", &Caller::type}, {"udp_cleardst", &Caller::udp_cleardst}, + {"udp_datastream", &Caller::udp_datastream}, {"udp_dstip", &Caller::udp_dstip}, {"udp_dstip2", &Caller::udp_dstip2}, {"udp_dstlist", &Caller::udp_dstlist}, @@ -901,6 +901,7 @@ class Caller { {"now", "runtime"}, {"timestamp", "frametime"}, {"frameindex", "rx_frameindex"}, + {"datastream", "udp_datastream"}, }; diff --git a/slsDetectorSoftware/src/Detector.cpp b/slsDetectorSoftware/src/Detector.cpp index ace3523ea..60200240c 100644 --- a/slsDetectorSoftware/src/Detector.cpp +++ b/slsDetectorSoftware/src/Detector.cpp @@ -1317,14 +1317,14 @@ void Detector::setTransmissionDelay(int step) { pimpl->setTransmissionDelay(step); } -Result Detector::getDataStream(const defs::portPosition port, - Positions pos) const { - return pimpl->getDataStream(port, pos); +Result Detector::getUDPDataStream(const defs::portPosition port, + Positions pos) const { + return pimpl->getUDPDataStream(port, pos); } -void Detector::setDataStream(const defs::portPosition port, const bool enable, - Positions pos) { - pimpl->setDataStream(port, enable, pos); +void Detector::setUDPDataStream(const defs::portPosition port, + const bool enable, Positions pos) { + pimpl->setUDPDataStream(port, enable, pos); } std::vector Detector::getRxDisabledUDPPortIndices() const { diff --git a/slsDetectorSoftware/src/DetectorImpl.cpp b/slsDetectorSoftware/src/DetectorImpl.cpp index 77d485681..d087801cb 100644 --- a/slsDetectorSoftware/src/DetectorImpl.cpp +++ b/slsDetectorSoftware/src/DetectorImpl.cpp @@ -1656,16 +1656,16 @@ void DetectorImpl::assertTwoUDPInterfaces(const std::string &cmd) const { } } -Result DetectorImpl::getDataStream(const defs::portPosition port, - Positions pos) const { +Result DetectorImpl::getUDPDataStream(const defs::portPosition port, + Positions pos) const { assertTwoUDPInterfaces("get enable/disable UDP ports"); - return Parallel(&Module::getDataStream, pos, port); + return Parallel(&Module::getUDPDataStream, pos, port); } -void DetectorImpl::setDataStream(const defs::portPosition port, - const bool enable, Positions pos) { +void DetectorImpl::setUDPDataStream(const defs::portPosition port, + const bool enable, Positions pos) { assertTwoUDPInterfaces("set enable/disable UDP ports"); - Parallel(&Module::setDataStream, pos, port, enable); + Parallel(&Module::setUDPDataStream, pos, port, enable); updateRxUDPDatastreamMetadata(); } @@ -1678,8 +1678,8 @@ void DetectorImpl::updateRxUDPDatastreamMetadata() { throw RuntimeError("Invalid port size. Expected 2."); } // bottom and left is port 0 - auto port0 = Parallel(&Module::getDataStream, {}, portList[0]); - auto port1 = Parallel(&Module::getDataStream, {}, portList[1]); + auto port0 = Parallel(&Module::getUDPDataStream, {}, portList[0]); + auto port1 = Parallel(&Module::getUDPDataStream, {}, portList[1]); // if any of them are disabled if (port0.any(false) || port1.any(false)) { diff --git a/slsDetectorSoftware/src/DetectorImpl.h b/slsDetectorSoftware/src/DetectorImpl.h index a1335f1be..ce9ee9158 100644 --- a/slsDetectorSoftware/src/DetectorImpl.h +++ b/slsDetectorSoftware/src/DetectorImpl.h @@ -311,10 +311,10 @@ class DetectorImpl : public virtual slsDetectorDefs { verifyUniqueRxHost(const std::vector &names) const; void assertTwoUDPInterfaces(const std::string &cmd) const; - Result getDataStream(const defs::portPosition port, - Positions pos) const; - void setDataStream(const defs::portPosition port, const bool enable, - Positions pos); + Result getUDPDataStream(const defs::portPosition port, + Positions pos) const; + void setUDPDataStream(const defs::portPosition port, const bool enable, + Positions pos); void updateRxUDPDatastreamMetadata(); std::vector getRxDisabledUDPPortIndices() const; std::vector getPortPositionList() const; diff --git a/slsDetectorSoftware/src/Module.cpp b/slsDetectorSoftware/src/Module.cpp index 9eccb52f2..1e2f55290 100644 --- a/slsDetectorSoftware/src/Module.cpp +++ b/slsDetectorSoftware/src/Module.cpp @@ -1407,11 +1407,11 @@ void Module::setTransmissionDelayRight(int value) { sendToDetector(F_SET_TRANSMISSION_DELAY_RIGHT, value, nullptr); } -bool Module::getDataStream(const portPosition port) const { +bool Module::getUDPDataStream(const portPosition port) const { // receiver only if (shm()->detType == JUNGFRAU || shm()->detType == MOENCH) { if (!shm()->useReceiverFlag) { - throw RuntimeError("No receiver to get datastream."); + throw RuntimeError("No receiver to get udp datastream."); } return sendToReceiver(F_RECEIVER_GET_UDP_DATASTREAM, static_cast(port)); @@ -1419,11 +1419,11 @@ bool Module::getDataStream(const portPosition port) const { return sendToDetector(F_GET_DATASTREAM, static_cast(port)); } -void Module::setDataStream(const portPosition port, const bool enable) { +void Module::setUDPDataStream(const portPosition port, const bool enable) { int args[]{static_cast(port), static_cast(enable)}; if (shm()->detType == JUNGFRAU || shm()->detType == MOENCH) { if (!shm()->useReceiverFlag) { - throw RuntimeError("No receiver to set datastream."); + throw RuntimeError("No receiver to set udp datastream."); } sendToReceiver(F_RECEIVER_SET_UDP_DATASTREAM, args, nullptr); } else { diff --git a/slsDetectorSoftware/src/Module.h b/slsDetectorSoftware/src/Module.h index fa5ed9fa6..0256adf94 100644 --- a/slsDetectorSoftware/src/Module.h +++ b/slsDetectorSoftware/src/Module.h @@ -279,8 +279,8 @@ class Module : public virtual slsDetectorDefs { void setTransmissionDelayLeft(int value); int getTransmissionDelayRight() const; void setTransmissionDelayRight(int value); - bool getDataStream(const portPosition port) const; - void setDataStream(const portPosition port, const bool enable); + bool getUDPDataStream(const portPosition port) const; + void setUDPDataStream(const portPosition port, const bool enable); void updateRxUDPPortDisableMetadata(const std::vector &disable); std::vector getRxUDPPortDisableMetadata() const; diff --git a/slsDetectorSoftware/src/inferAction.cpp b/slsDetectorSoftware/src/inferAction.cpp index af2ff6396..e2c9c150c 100644 --- a/slsDetectorSoftware/src/inferAction.cpp +++ b/slsDetectorSoftware/src/inferAction.cpp @@ -694,22 +694,6 @@ int InferAction::dacvalues() { } } -int InferAction::datastream() { - - if (args.size() == 1) { - return slsDetectorDefs::GET_ACTION; - } - - if (args.size() == 2) { - return slsDetectorDefs::PUT_ACTION; - } - - else { - - throw RuntimeError("Could not infer action: Wrong number of arguments"); - } -} - int InferAction::dbitclk() { if (args.size() == 0) { @@ -4013,6 +3997,22 @@ int InferAction::udp_cleardst() { } } +int InferAction::udp_datastream() { + + if (args.size() == 1) { + return slsDetectorDefs::GET_ACTION; + } + + if (args.size() == 2) { + return slsDetectorDefs::PUT_ACTION; + } + + else { + + throw RuntimeError("Could not infer action: Wrong number of arguments"); + } +} + int InferAction::udp_dstip() { if (args.size() == 0) { diff --git a/slsDetectorSoftware/src/inferAction.h b/slsDetectorSoftware/src/inferAction.h index c3be8f075..56e65e100 100644 --- a/slsDetectorSoftware/src/inferAction.h +++ b/slsDetectorSoftware/src/inferAction.h @@ -56,7 +56,6 @@ class InferAction { int daclist(); int dacname(); int dacvalues(); - int datastream(); int dbitclk(); int dbitphase(); int dbitpipeline(); @@ -295,6 +294,7 @@ class InferAction { int txdelay_right(); int type(); int udp_cleardst(); + int udp_datastream(); int udp_dstip(); int udp_dstip2(); int udp_dstlist(); @@ -389,7 +389,6 @@ class InferAction { {"daclist", &InferAction::daclist}, {"dacname", &InferAction::dacname}, {"dacvalues", &InferAction::dacvalues}, - {"datastream", &InferAction::datastream}, {"dbitclk", &InferAction::dbitclk}, {"dbitphase", &InferAction::dbitphase}, {"dbitpipeline", &InferAction::dbitpipeline}, @@ -632,6 +631,7 @@ class InferAction { {"txdelay_right", &InferAction::txdelay_right}, {"type", &InferAction::type}, {"udp_cleardst", &InferAction::udp_cleardst}, + {"udp_datastream", &InferAction::udp_datastream}, {"udp_dstip", &InferAction::udp_dstip}, {"udp_dstip2", &InferAction::udp_dstip2}, {"udp_dstlist", &InferAction::udp_dstlist}, diff --git a/slsDetectorSoftware/tests/Caller/test-Caller.cpp b/slsDetectorSoftware/tests/Caller/test-Caller.cpp index 095610b89..77a1bd240 100644 --- a/slsDetectorSoftware/tests/Caller/test-Caller.cpp +++ b/slsDetectorSoftware/tests/Caller/test-Caller.cpp @@ -3068,89 +3068,92 @@ TEST_CASE("txdelay", "[.detectorintegration]") { } } -TEST_CASE("datastream", "[.detectorintegration]") { +TEST_CASE("udp_datastream", "[.detectorintegration]") { Detector det; Caller caller(&det); auto det_type = det.getDetectorType().squash(); if (det_type == defs::EIGER) { - auto prev_val_left = det.getDataStream(defs::LEFT); - auto prev_val_right = det.getDataStream(defs::RIGHT); + auto prev_val_left = det.getUDPDataStream(defs::LEFT); + auto prev_val_right = det.getUDPDataStream(defs::RIGHT); // invalid args - REQUIRE_THROWS(caller.call("datastream", {"top", "1"}, -1, PUT)); - REQUIRE_THROWS(caller.call("datastream", {"bottom", "1"}, -1, PUT)); + REQUIRE_THROWS(caller.call("udp_datastream", {"top", "1"}, -1, PUT)); + REQUIRE_THROWS(caller.call("udp_datastream", {"bottom", "1"}, -1, PUT)); // no "left" or "right" argument - REQUIRE_THROWS(caller.call("datastream", {"1"}, -1, PUT)); + REQUIRE_THROWS(caller.call("udp_datastream", {"1"}, -1, PUT)); { std::ostringstream oss; - caller.call("datastream", {"left", "0"}, -1, PUT, oss); - REQUIRE(oss.str() == "datastream [left, 0]\n"); + caller.call("udp_datastream", {"left", "0"}, -1, PUT, oss); + REQUIRE(oss.str() == "udp_datastream [left, 0]\n"); } { std::ostringstream oss; - caller.call("datastream", {"right", "0"}, -1, PUT, oss); - REQUIRE(oss.str() == "datastream [right, 0]\n"); + caller.call("udp_datastream", {"right", "0"}, -1, PUT, oss); + REQUIRE(oss.str() == "udp_datastream [right, 0]\n"); } { std::ostringstream oss; - caller.call("datastream", {"left", "1"}, -1, PUT, oss); - REQUIRE(oss.str() == "datastream [left, 1]\n"); + caller.call("udp_datastream", {"left", "1"}, -1, PUT, oss); + REQUIRE(oss.str() == "udp_datastream [left, 1]\n"); } { std::ostringstream oss; - caller.call("datastream", {"right", "1"}, -1, PUT, oss); - REQUIRE(oss.str() == "datastream [right, 1]\n"); + caller.call("udp_datastream", {"right", "1"}, -1, PUT, oss); + REQUIRE(oss.str() == "udp_datastream [right, 1]\n"); } for (int i = 0; i != det.size(); ++i) { - det.setDataStream(defs::LEFT, prev_val_left[i], {i}); - det.setDataStream(defs::RIGHT, prev_val_right[i], {i}); + det.setUDPDataStream(defs::LEFT, prev_val_left[i], {i}); + det.setUDPDataStream(defs::RIGHT, prev_val_right[i], {i}); } } else if (det_type == defs::JUNGFRAU || det_type == defs::MOENCH) { // throw with 1 interface if (det.getNumberofUDPInterfaces().squash() == 1) { - REQUIRE_THROWS(caller.call("datastream", {"top", "0"}, -1, PUT)); + REQUIRE_THROWS( + caller.call("udp_datastream", {"top", "0"}, -1, PUT)); } // 2 interfaces else { - auto prev_val_top = det.getDataStream(defs::TOP); - auto prev_val_bottom = det.getDataStream(defs::BOTTOM); + auto prev_val_top = det.getUDPDataStream(defs::TOP); + auto prev_val_bottom = det.getUDPDataStream(defs::BOTTOM); // invalid args - REQUIRE_THROWS(caller.call("datastream", {"left", "1"}, -1, PUT)); - REQUIRE_THROWS(caller.call("datastream", {"right", "1"}, -1, PUT)); + REQUIRE_THROWS( + caller.call("udp_datastream", {"left", "1"}, -1, PUT)); + REQUIRE_THROWS( + caller.call("udp_datastream", {"right", "1"}, -1, PUT)); // no "top" or "bottom" argument - REQUIRE_THROWS(caller.call("datastream", {"1"}, -1, PUT)); + REQUIRE_THROWS(caller.call("udp_datastream", {"1"}, -1, PUT)); { std::ostringstream oss; - caller.call("datastream", {"top", "0"}, -1, PUT, oss); - REQUIRE(oss.str() == "datastream [top, 0]\n"); + caller.call("udp_datastream", {"top", "0"}, -1, PUT, oss); + REQUIRE(oss.str() == "udp_datastream [top, 0]\n"); } { std::ostringstream oss; - caller.call("datastream", {"bottom", "0"}, -1, PUT, oss); - REQUIRE(oss.str() == "datastream [bottom, 0]\n"); + caller.call("udp_datastream", {"bottom", "0"}, -1, PUT, oss); + REQUIRE(oss.str() == "udp_datastream [bottom, 0]\n"); } { std::ostringstream oss; - caller.call("datastream", {"top", "1"}, -1, PUT, oss); - REQUIRE(oss.str() == "datastream [top, 1]\n"); + caller.call("udp_datastream", {"top", "1"}, -1, PUT, oss); + REQUIRE(oss.str() == "udp_datastream [top, 1]\n"); } { std::ostringstream oss; - caller.call("datastream", {"bottom", "1"}, -1, PUT, oss); - REQUIRE(oss.str() == "datastream [bottom, 1]\n"); + caller.call("udp_datastream", {"bottom", "1"}, -1, PUT, oss); + REQUIRE(oss.str() == "udp_datastream [bottom, 1]\n"); } for (int i = 0; i != det.size(); ++i) { - det.setDataStream(defs::TOP, prev_val_top[i], {i}); - det.setDataStream(defs::BOTTOM, prev_val_bottom[i], {i}); + det.setUDPDataStream(defs::TOP, prev_val_top[i], {i}); + det.setUDPDataStream(defs::BOTTOM, prev_val_bottom[i], {i}); } } } else { - REQUIRE_THROWS(caller.call("datastream", {}, -1, GET)); - REQUIRE_THROWS(caller.call("datastream", {"1"}, -1, PUT)); - REQUIRE_THROWS(caller.call("datastream", {"left", "1"}, -1, PUT)); - REQUIRE_THROWS(caller.call("datastream", {"top", "1"}, -1, PUT)); + REQUIRE_THROWS(caller.call("udp_datastream", {}, -1, GET)); + REQUIRE_THROWS(caller.call("udp_datastream", {"1"}, -1, PUT)); + REQUIRE_THROWS(caller.call("udp_datastream", {"left", "1"}, -1, PUT)); + REQUIRE_THROWS(caller.call("udp_datastream", {"top", "1"}, -1, PUT)); } } diff --git a/slsSupportLib/include/sls/file_utils.h b/slsSupportLib/include/sls/file_utils.h index 81aa3d19b..cc3f61201 100644 --- a/slsSupportLib/include/sls/file_utils.h +++ b/slsSupportLib/include/sls/file_utils.h @@ -11,7 +11,6 @@ namespace sls { - std::vector readBinaryFile(const std::string &fname, const std::string &errorPrefix);