From 38bc600dc99e46984ff49fd3953f5c1d5aff54c7 Mon Sep 17 00:00:00 2001 From: froejdh_e Date: Thu, 11 Dec 2025 15:42:20 +0100 Subject: [PATCH] first try --- python/slsdet/detector.py | 31 +++++++++++++++++++++++++++++++ python/slsdet/registers.py | 13 +++++++++++++ 2 files changed, 44 insertions(+) diff --git a/python/slsdet/detector.py b/python/slsdet/detector.py index 786e6af3f..13c1d1eec 100755 --- a/python/slsdet/detector.py +++ b/python/slsdet/detector.py @@ -1814,6 +1814,37 @@ class Detector(CppDetectorApi): [Eiger] Address is +0x100 for only left, +0x200 for only right. """ return self._register + + def define_reg(self, name, addr): + addr = RegisterAddress(addr) + self.setRegisterDefinition(name, addr) + + + def define_bit(self, name, addr, bitnr): + addr = RegisterAddress(addr) + bitnr = BitAddress(addr, bitnr) + self.setBitDefinition(name, bitnr) + + def setBit(self, bit_or_addr, number=None): + + #Old usage passing two ints + if isinstance(bit_or_addr, int): + return super().setBit(bit_or_addr, number) + + #New usage with str or BitAddress + if isinstance(bit_or_addr, str): + bit_or_addr = self.getBitDefinition(bit_or_addr) + return super().setBit(bit_or_addr) + + + + + + + + + + @property def slowadc(self): diff --git a/python/slsdet/registers.py b/python/slsdet/registers.py index 4c80585e9..846306457 100755 --- a/python/slsdet/registers.py +++ b/python/slsdet/registers.py @@ -1,13 +1,26 @@ # SPDX-License-Identifier: LGPL-3.0-or-other # Copyright (C) 2021 Contributors to the SLS Detector Package + +from ._slsdet import RegisterValue, RegisterAddress + class Register: def __init__(self, detector): self._detector = detector def __getitem__(self, key): + if isinstance(key, str): + key = self._detector.getRegisterDefinition(key) return self._detector.readRegister(key) def __setitem__(self, key, value): + if isinstance(key, str): + key = self._detector.getRegisterDefinition(key) + elif isinstance(key, int): + key = RegisterAddress(key) + + if isinstance(value, int): + value = RegisterValue(value) + self._detector.writeRegister(key, value, False) class Adc_register: