HasControlledBy: update target without switching to self control

when a HeaterOutput module is used e.g. from a software loop,
a method is needed to update the output without switching to
self-controlled

Change-Id: I9c83b4e172e14812a405e836757491622ff5f949
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33903
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
This commit is contained in:
2024-06-11 09:32:49 +02:00
parent 516e0c7a59
commit e74192d45e

View File

@@ -56,6 +56,20 @@ class HasControlledBy:
for deactivate_control in self.inputCallbacks.values():
deactivate_control(self.name)
def update_target(self, module, value):
"""update internal target value
as write_target would switch to manual mode, the controlling module
has to use this method to update the value
override and super call, if other actions are needed
"""
if self.controlled_by != module:
deactivate_control = self.inputCallbacks.get(self.controlled_by)
if deactivate_control:
deactivate_control(module)
self.target = value
class HasOutputModule:
"""mixin for modules having an output module