flamedil as of 2023-07-03
This commit is contained in:
@ -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:
|
||||
|
Reference in New Issue
Block a user