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