From 8fcff75086d796bd39b4c6ac457af0ac0d833538 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Mon, 16 Mar 2026 18:00:04 +0100 Subject: [PATCH] wip python --- python/slsdet/powers.py | 24 ++++++++++++++++--- .../slsDetectorFunctionList.c | 5 ++-- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/python/slsdet/powers.py b/python/slsdet/powers.py index a513eedbe..990f1e0bb 100755 --- a/python/slsdet/powers.py +++ b/python/slsdet/powers.py @@ -20,8 +20,26 @@ class Power(DetectorProperty): """ def __init__(self, name, enum, default, detector): - super().__init__(partial(detector.getPower, enum), - lambda x, y : detector.setPower(enum, x, y), + def get_power(modules=[]): + enabled = detector.isPowerEnabled(enum, modules) + values = detector.getDAC(enum, True, modules) + + # replace disabled powers with 0 + return [v if e else 0 for v, e in zip(values, enabled)] + + + def set_power(value, modules=[]): + + # always disable first + detector.setPowerEnabled([enum], False, modules) + + if value > 0: + # set the value + detector.setDAC(enum, value, True, modules) + detector.setPowerEnabled([enum], True, modules) + + super().__init__(get_power, + set_power, detector.size, name) @@ -30,7 +48,7 @@ class Power(DetectorProperty): def __repr__(self): """String representation for a single power in all modules""" - powerstr = ''.join([f'{item:5d}' for item in self.get()]) + powerstr = ''.join([f'{item:5d} mV' for item in self.get()]) return f'{self.__name__:15s}:{powerstr}' class NamedPowers: diff --git a/slsDetectorServers/eigerDetectorServer/slsDetectorFunctionList.c b/slsDetectorServers/eigerDetectorServer/slsDetectorFunctionList.c index b1896607f..cf64c0b3a 100644 --- a/slsDetectorServers/eigerDetectorServer/slsDetectorFunctionList.c +++ b/slsDetectorServers/eigerDetectorServer/slsDetectorFunctionList.c @@ -302,9 +302,8 @@ u_int64_t getDetectorMAC() { char output[255]; #ifdef VIRTUAL FILE *sysFile = - popen("cat /sys/class/net/$(ip route show default | grep -v vpn | awk " - "'/default/ {print $5}')/address", - "r"); + popen("ip link show $(ip route show default | grep -v vpn | awk '/default/ {print $5}') | grep link/ether | awk '{print $2}'", + "r"); #else FILE *sysFile = popen("more /sys/class/net/eth0/address", "r"); #endif