Source code for malcolm.modules.pmac.parts.pmacstatuspart

from annotypes import Anno, add_call_types

from malcolm.core import PartRegistrar
from malcolm.modules import builtin, scanning

from ..infos import PmacVariablesInfo

with Anno("The Servo Frequency of the PMAC in Hz"):
    AServoFrequency = float


[docs]class PmacStatusPart(builtin.parts.ChildPart): def setup(self, registrar: PartRegistrar) -> None: super().setup(registrar) # Add methods registrar.add_method_model( self.servo_frequency, "servoFrequency", needs_context=True ) # Hooks registrar.hook(scanning.hooks.ReportStatusHook, self.report_status)
[docs] @add_call_types def servo_frequency(self, context: builtin.hooks.AContext) -> AServoFrequency: return context.block_view(self.mri).servoFreq.value
[docs] @add_call_types def report_status(self, context: scanning.hooks.AContext) -> scanning.hooks.UInfos: child = context.block_view(self.mri) info = PmacVariablesInfo( child.iVariables.value, child.pVariables.value, child.mVariables.value ) return info