frappy.mixins.HasOutputModule

add 'set_control_active' method for overriding by subclasses

Change-Id: Ib344319862a4a0bf29efef16a63db09d1f314a82
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31375
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
This commit is contained in:
zolliker 2023-06-19 10:33:24 +02:00
parent 36dfe968e8
commit 644d005dad

View File

@ -53,7 +53,7 @@ class HasControlledBy:
to be called from the write_target method to be called from the write_target method
""" """
if self.controlled_by: if self.controlled_by:
self.controlled_by = 0 self.controlled_by = 0 # self
for deactivate_control in self.inputCallbacks.values(): for deactivate_control in self.inputCallbacks.values():
deactivate_control(self.name) deactivate_control(self.name)
@ -74,6 +74,10 @@ class HasOutputModule:
if self.output_module: if self.output_module:
self.output_module.register_input(self.name, self.deactivate_control) self.output_module.register_input(self.name, self.deactivate_control)
def set_control_active(self, active):
"""to be overridden for switching hw control"""
self.control_active = active
def activate_control(self): def activate_control(self):
"""method to switch control_active on """method to switch control_active on
@ -85,10 +89,10 @@ class HasOutputModule:
if name != self.name: if name != self.name:
deactivate_control(self.name) deactivate_control(self.name)
out.controlled_by = self.name out.controlled_by = self.name
self.control_active = True self.set_control_active(True)
def deactivate_control(self, source): def deactivate_control(self, source=None):
"""called when an other module takes over control""" """called when an other module takes over control"""
if self.control_active: if self.control_active:
self.control_active = False self.set_control_active(False)
self.log.warning(f'switched to manual mode by {source}') self.log.warning(f'switched to manual mode by {source or self.name}')