flamedil as of 2023-07-03

This commit is contained in:
l_samenv
2023-07-03 17:11:07 +02:00
parent b4cfdcfc1a
commit 6ac3938b78
3 changed files with 48 additions and 30 deletions

View File

@ -130,7 +130,7 @@ def set_enabled(modobj, value):
modobj.write_enabled(value)
def get_value(self, obj, default):
def get_value(obj, default):
"""get the value of given module. if not valid, return the limit (min_high or max_low)"""
if not getattr(obj, 'enabled', True):
return default
@ -151,28 +151,29 @@ class SwitchDriv(HasConvergence, Drivable):
def doPoll(self):
super().doPoll()
if not self.isBusy():
low = self.get_value(self.low, self.max_low)
high = self.get_value(self.high, self.min_high)
low = get_value(self.low, self.max_low)
high = get_value(self.high, self.min_high)
low_valid = low < self.max_low
high_valid = high > self.min_high
if low_valid > high_valid:
self.write_selected(self.selected.low)
elif high_valid > low_valid:
self.write_selected(self.selected.high)
if high_valid or low_valid:
set_enabled(self.low, low_valid)
set_enabled(self.high, high_valid)
else: # both invalid: measure both!
set_enabled(self.low, True)
set_enabled(self.high, True)
if high_valid and high > self.max_low:
if not low_valid:
set_enabled(self.low, False)
return
if low_valid and low < self.min_high:
if not high_valid:
set_enabled(self.high, False)
return
set_enabled(self.low, True)
set_enabled(self.high, True)
def read_value(self):
return self.low.value if self.selected == self.selected.low else self.high.value
def read_status(self):
status = self.low.status if self.selected == self.selected.low else self.high.status
# merge with convergence status
return merge_status(status, super().read_status())
if status[0] >= ERROR:
return status
return super().read_status() # convergence status
def read_target(self):
if self.selected == self.selected.low: