Source code for malcolm.modules.scanning.parts.minturnaroundpart

from annotypes import Anno, add_call_types

from malcolm.core import (
    APartName,
    Display,
    NumberMeta,
    Part,
    PartRegistrar,
    Widget,
    config_tag,
)

from ..hooks import ReportStatusHook, UInfos
from ..infos import MinTurnaroundInfo

with Anno("Initial value for min time between non-joined points"):
    AMinTurnaround = float
with Anno("Minimum interval between turnaround points"):
    ATurnaroundInterval = float


[docs]class MinTurnaroundPart(Part): def __init__( self, name: APartName = "minTurnaround", gap: AMinTurnaround = None, interval: ATurnaroundInterval = None, ) -> None: super().__init__(name) self.gap = NumberMeta( "float64", "Minimum time for any gaps between non-joined points", tags=[Widget.TEXTINPUT.tag(), config_tag()], display=Display(precision=6, units="s"), ).create_attribute_model(gap) self.interval = NumberMeta( "float64", "Minimum interval between turnaround points", tags=[Widget.TEXTINPUT.tag(), config_tag()], display=Display(precision=6, units="s"), ).create_attribute_model(interval)
[docs] @add_call_types def on_report_status(self) -> UInfos: return MinTurnaroundInfo(self.gap.value, self.interval.value)
def setup(self, registrar: PartRegistrar) -> None: registrar.add_attribute_model("minTurnaround", self.gap, self.gap.set_value) registrar.add_attribute_model( "minTurnaroundInterval", self.interval, self.interval.set_value ) # Hooks registrar.hook(ReportStatusHook, self.on_report_status)