From 7048a758087de51ed1a291aa835b7aa7ffc7fc4c Mon Sep 17 00:00:00 2001 From: Erik Frojdh Date: Thu, 3 Sep 2020 16:21:15 +0200 Subject: [PATCH 1/3] triggersl and print fix for acq --- python/scripts/basic.py | 1 + python/scripts/cmd_python.py | 61 +++++++++++++++++++++++++++++++++--- python/slsdet/detector.py | 58 ++++++++++++++++++++++++++++++++++ 3 files changed, 116 insertions(+), 4 deletions(-) diff --git a/python/scripts/basic.py b/python/scripts/basic.py index 65ba3b36b..77fdf2f67 100755 --- a/python/scripts/basic.py +++ b/python/scripts/basic.py @@ -14,3 +14,4 @@ g = Gotthard2() # j = Jungfrau() # m = Mythen3() m = Moench() + diff --git a/python/scripts/cmd_python.py b/python/scripts/cmd_python.py index 7c01a82d0..9b4ddf7a8 100644 --- a/python/scripts/cmd_python.py +++ b/python/scripts/cmd_python.py @@ -15,11 +15,60 @@ pycmd += ['vrf', 'vtr', 'vrs', 'vtgstv', 'vsvn', 'vtrim', 'vpreamp', 'vref_comp', 'vref_comp_fe vref_ds', 'vref_h_adc', 'vref_l_adc', 'iodelay', 'list', 'vref_ds', 'vis', 'vpl', 'vref_comp_fe', 'vph', 'vout_cm', 'vcp', 'vcn', 'vcmp_ll', 'vcmp_lr' -, 'vcmp_rl', 'vcmp_rr', 'vcal', 'vcas', 'vipre', -'vin_com', 'vin_cm', 'vrshaper', 'vrshaper_n', 'vrpreamp', 'vishaper', -'vicin', 'vcassh', 'vcal_n', 'vcal_p'] -# command : reason +] + + +# dacs are in general not included in the python commands and we expect to +# set them from the specialized class or using an enum +dacs = [ + 'vicin', + 'vcassh', + 'vcal_n', + 'vcal_p' + 'vipre_out', + 'vipre_cds', + 'vdd_prot', + 'vcmp_rl', + 'vcmp_rr', + 'vcal', 'vcas', + 'vipre', + 'vin_com', + 'vin_cm', + 'vrshaper', + 'vrshaper_n', + 'vrpreamp', + 'vishaper', + 'vipre_out', + 'vcom_adc1', + 'vcom_adc2', + 'vcom_cds', + 'vdcsh', + 'v_chip', + 'vb_comp', + 'vb_comp_adc', + 'vb_comp_fe', + 'vb_cs', + 'vb_ds', + 'vb_opa_1st', + 'vb_opa_fd', + 'vb_pixbuf', + 'vb_sda', + 'vbp_colbuf', + 'vcal_p', + 'vcasc_out', + 'vcasc_sfp', + 'vcascn_pb', + 'vcascp_pb', + 'vchip_comp_adc', + 'vchip_comp_fe', + 'vchip_cs', + 'vchip_opa_1st', + 'vchip_opa_fd', + 'vchip_ref_comp_fe', + +] + intentionally_missing = [ 'temp_10ge', #temperatures already available from enum or specialized class 'temp_adc', @@ -32,9 +81,13 @@ intentionally_missing = [ 'temp_sodl', 'temp_sodr', 'trigger', #use sendSoftwareTrigger + 'update', #use updateServerAndFirmare + 'udp_validate', #use validateUdpConfiguration + 'udp_reconfigure', #use reconfigureUdpDestination ] pycmd += intentionally_missing +pycmd += dacs missing = [] for c in cmd: if c not in pycmd: diff --git a/python/slsdet/detector.py b/python/slsdet/detector.py index 163916e6d..b86ba0e21 100755 --- a/python/slsdet/detector.py +++ b/python/slsdet/detector.py @@ -929,6 +929,18 @@ class Detector(CppDetectorApi): fname = ut.make_string_path(fname) self.loadTrimbits(fname) + @property + @element + def trimval(self): + """ + [Eiger][Mythen3] Set all trimbits to this value. Returns -1 if all trimbits are different values. + """ + return self.getAllTrimbits() + + @trimval.setter + def trimval(self, value): + self.setAllTrimbits(value) + @property def lock(self): """Lock detector to one client IP, 1 locks, 0 unlocks. Default is unlocked.""" @@ -1009,6 +1021,16 @@ class Detector(CppDetectorApi): """ return self._adc_register + @property + @element + def triggersl(self): + return self.getNumberOfTriggersLeft() + + @property + @element + def timestamp(self): + return self.getMeasurementTime() + @property def led(self): """[Ctb] Switches on/off all LEDs. Default is enabled. """ @@ -1018,6 +1040,13 @@ class Detector(CppDetectorApi): def led(self, value): self.setLEDEnable(value) + def acquire(self): + """ + Run the configured measurement + """ + super().acquire() + print('\n', end = '') + @property def versions(self): @@ -1464,6 +1493,35 @@ class Detector(CppDetectorApi): self.setVetoFile(chip_index, fname) + @property + def vetophoton(self): + raise NotImplementedError('vetofile is set only') + + @vetophoton.setter + def vetophoton(self, args): + chip_index, n_photons, photon_energy, fname = args + self.setVetoPhoton(chip_index, n_photons, photon_energy, fname) + + @property + @element + def vetoref(self): + """ + [Gotthard2] Set veto reference for all 128 channels for all chips. + + Examples: + ---------- + + >>> d.vetoref = chip, value + + """ + raise NotImplementedError('vetoref is set only') + + @vetoref.setter + def vetoref(self, args): + gain_index, value = args + self.setVetoReference(gain_index, value) + + """ Mythen3 specific """ From 89f0479318383f60bb962e4a694cf49eabf716f3 Mon Sep 17 00:00:00 2001 From: Erik Frojdh Date: Thu, 3 Sep 2020 16:30:13 +0200 Subject: [PATCH 2/3] txndelay in python --- python/slsdet/detector.py | 41 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/python/slsdet/detector.py b/python/slsdet/detector.py index b86ba0e21..16281375d 100755 --- a/python/slsdet/detector.py +++ b/python/slsdet/detector.py @@ -374,6 +374,47 @@ class Detector(CppDetectorApi): # TODO! add txdelay + @property + @element + def txndelay_frame(self): + return self.getTransmissionDelayFrame() + + @txndelay_frame.setter + def txndelay_frame(self, args): + if isinstance(args, dict): + for key, value in args.items(): + self.setTransmissionDelayFrame(value, [key]) + else: + self.setTransmissionDelayFrame(args) + + + @property + @element + def txndelay_left(self): + return self.getTransmissionDelayLeft() + + @txndelay_left.setter + def txndelay_left(self, args): + if isinstance(args, dict): + for key, value in args.items(): + self.setTransmissionDelayLeft(value, [key]) + else: + self.setTransmissionDelayLeft(args) + + + @property + @element + def txndelay_right(self): + return self.getTransmissionDelayRight() + + @txndelay_right.setter + def txndelay_right(self, args): + if isinstance(args, dict): + for key, value in args.items(): + self.setTransmissionDelayRight(value, [key]) + else: + self.setTransmissionDelayRight(args) + @property def use_receiver(self): return element_if_equal(self.getUseReceiverFlag()) From 891b8dbd2ce95bc7f404b0cc6b051d24ac7f112f Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Thu, 3 Sep 2020 17:04:58 +0200 Subject: [PATCH 3/3] mythen3: wrong hardware version number, so it didnt reboot after programfpga --- .../bin/mythen3DetectorServer_developer | Bin 211172 -> 211172 bytes .../slsDetectorFunctionList.c | 6 +++--- slsSupportLib/include/versionAPI.h | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/slsDetectorServers/mythen3DetectorServer/bin/mythen3DetectorServer_developer b/slsDetectorServers/mythen3DetectorServer/bin/mythen3DetectorServer_developer index 043cdff1e1dc1a114d198039f11dcbf8fcee9165..4ff574d26d6b9a3e82ddb70438983699492b38c4 100755 GIT binary patch delta 79 zcmV-V0I>h$@eJhg46vji0mPHtASjc~AP)h=v)v#l0h2Kz9Fsjk50m^M9kWd$i>Lws lB7@q>huX>kx7x}Awjl)|LI40Px0UPyzZn5Ew^arMk1|g}AAkS= delta 83 zcmV-Z0IdJy@eJhg46vji0YsDCASjc~AP)gVv)v#l0h2i*6q7wc50fw=36ljP9J5U# pi>LyCA%oh=huX>kx7x}Awjl)=LI40Xx0UPyzZn56w^arMk1|&99_|1D diff --git a/slsDetectorServers/mythen3DetectorServer/slsDetectorFunctionList.c b/slsDetectorServers/mythen3DetectorServer/slsDetectorFunctionList.c index 7643fc0fa..8db552853 100644 --- a/slsDetectorServers/mythen3DetectorServer/slsDetectorFunctionList.c +++ b/slsDetectorServers/mythen3DetectorServer/slsDetectorFunctionList.c @@ -249,15 +249,15 @@ u_int16_t getHardwareVersionNumber() { #ifdef VIRTUAL return 0; #endif - return bus_r(MCB_SERIAL_NO_REG); + return ((bus_r(MCB_SERIAL_NO_REG) & MCB_SERIAL_NO_VRSN_MSK) >> + MCB_SERIAL_NO_VRSN_OFST); } u_int32_t getDetectorNumber() { #ifdef VIRTUAL return 0; #endif - return ((bus_r(MCB_SERIAL_NO_REG) & MCB_SERIAL_NO_VRSN_MSK) >> - MCB_SERIAL_NO_VRSN_OFST); + return bus_r(MCB_SERIAL_NO_REG); } u_int64_t getDetectorMAC() { diff --git a/slsSupportLib/include/versionAPI.h b/slsSupportLib/include/versionAPI.h index f45cf6141..02dc7f6de 100644 --- a/slsSupportLib/include/versionAPI.h +++ b/slsSupportLib/include/versionAPI.h @@ -8,5 +8,5 @@ #define APIJUNGFRAU 0x200810 #define APIMOENCH 0x200810 #define APIEIGER 0x200831 -#define APIMYTHEN3 0x200901 #define APIGOTTHARD2 0x200902 +#define APIMYTHEN3 0x200903