From 47da2540af13c9d1457715a412ad462ea83fd9eb Mon Sep 17 00:00:00 2001 From: Erik Frojdh Date: Thu, 3 Sep 2020 17:20:38 +0200 Subject: [PATCH] json --- python/slsdet/detector.py | 77 +++++++++++++++++++++++++++++---------- python/slsdet/utils.py | 10 ++++- 2 files changed, 66 insertions(+), 21 deletions(-) diff --git a/python/slsdet/detector.py b/python/slsdet/detector.py index 16281375d..613f8516e 100755 --- a/python/slsdet/detector.py +++ b/python/slsdet/detector.py @@ -138,6 +138,17 @@ class Detector(CppDetectorApi): else: raise ValueError("hostname needs to be string or list of strings") + + @property + @element + def stopport(self): + return self.getStopPort() + + @stopport.setter + def stopport(self, args): + ut.set_using_dict(self.setStopPort, args) + + @property def firmwareversion(self): return element_if_equal(self.getFirmwareVersion()) @@ -381,12 +392,7 @@ class Detector(CppDetectorApi): @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) - + ut.set_using_dict(self.setTransmissionDelayFrame, args) @property @element @@ -395,12 +401,7 @@ class Detector(CppDetectorApi): @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) - + ut.set_using_dict(self.setTransmissionDelayLeft, args) @property @element @@ -409,11 +410,7 @@ class Detector(CppDetectorApi): @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) + ut.set_using_dict(self.setTransmissionDelayRight, args) @property def use_receiver(self): @@ -1169,6 +1166,16 @@ class Detector(CppDetectorApi): def speed(self, value): self.setSpeed(value) + @property + def rx_jsonpara(self): + raise NotImplementedError('use d.getAdditionalJsonParameter(\'key\')') + + @rx_jsonpara.setter + def rx_jsonpara(self, args): + for key, value in args.items(): + self.setAdditionalJsonParameter(key, str(value)) + + @property def frameindex(self): return self.getRxCurrentFrameIndex() @@ -1220,9 +1227,20 @@ class Detector(CppDetectorApi): return element_if_equal(self.getNumMissingPackets()) """ - Some Eiger stuff, does this have to be here or can we move it to subclass? + + <<>> + """ + @property + @element + def quad(self): + return self.getQuad() + + @quad.setter + def quad(self, value): + self.setQuad(value) + @property def subexptime(self): """ @@ -1491,9 +1509,19 @@ class Detector(CppDetectorApi): self.selectUDPInterface(i) """ - Gotthard2 + <<>> """ + @property + @element + def timingsource(self): + return self.getTimingSource() + + @timingsource.setter + def timingsource(self, args): + ut.set_using_dict(self.setTimingSource, args) + + @property @element def veto(self): @@ -1630,9 +1658,18 @@ class Detector(CppDetectorApi): self.setCounterMask(list_to_bitmask(values)) """ - CTB stuff + <<>> """ + @property + @element + def samples(self): + return self.getNumberOfAnalogSamples() + + @samples.setter + def samples(self, nsamples): + self.setNumberOfAnalogSamples(nsamples) + @property def runclk(self): """[Ctb][Moench] Run clock in MHz.""" diff --git a/python/slsdet/utils.py b/python/slsdet/utils.py index e9230f0bd..c7fd6517f 100755 --- a/python/slsdet/utils.py +++ b/python/slsdet/utils.py @@ -107,4 +107,12 @@ def make_string_path(path): elif isinstance(path, str): return os.path.expanduser(path) else: - raise ValueError("Cannot convert argument to posix path") \ No newline at end of file + raise ValueError("Cannot convert argument to posix path") + + +def set_using_dict(func, args): + if isinstance(args, dict): + for key, value in args.items(): + func(value, [key]) + else: + func(args) \ No newline at end of file