diff --git a/python/slsdet/proxy.py b/python/slsdet/proxy.py new file mode 100644 index 000000000..9467bb288 --- /dev/null +++ b/python/slsdet/proxy.py @@ -0,0 +1,53 @@ +from .utils import element_if_equal +from .enums import dacIndex + +class JsonProxy: + """ + Proxy class to allow for intuitive setting and getting of rx_jsonpara + This class is returned by Detectr.rx_jsonpara + """ + def __init__(self, det): + self.det = det + + def __getitem__(self, key): + return element_if_equal(self.det.getAdditionalJsonParameter(key)) + + def __setitem__(self, key, value): + self.det.setAdditionalJsonParameter(key, str(value)) + + def __repr__(self): + r = element_if_equal(self.det.getAdditionalJsonHeader()) + if isinstance(r, list): + rstr = '' + for i, list_item in enumerate(r): + list_item = dict(list_item) + rstr += ''.join([f'{i}:{key}: {value}\n' for key, value in list_item.items()]) + + return rstr.strip('\n') + else: + r = dict(r) + return '\n'.join([f'{key}: {value}' for key, value in r.items()]) + + + +class SlowAdcProxy: + """ + Proxy class to allow for more intuitive reading the slow ADCs + """ + def __init__(self, det): + self.det = det + + def __getitem__(self, key): + dac_index = dacIndex(int(dacIndex.SLOW_ADC0)+key) + return element_if_equal(self.det.getSlowADC(dac_index)) + + def __repr__(self): + rstr = '' + for i in range(7): + r = element_if_equal(self.__getitem__(i)) + if isinstance(r, list): + rstr += ' '.join(f'{item} mV' for item in r) + else: + rstr += f'{i}: {r} mV\n' + + return rstr.strip('\n') \ No newline at end of file