From 7c2b61302ef932fb3bf0390b603227fe0616b28d Mon Sep 17 00:00:00 2001 From: Annie Wang Date: Mon, 11 Nov 2024 15:32:38 -0800 Subject: [PATCH] fix feature: LoopByCount --- .../model/features/common_features.py | 28 +++++++++++++------ 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/src/navigate/model/features/common_features.py b/src/navigate/model/features/common_features.py index ccccc352a..d8b638ac9 100644 --- a/src/navigate/model/features/common_features.py +++ b/src/navigate/model/features/common_features.py @@ -471,27 +471,37 @@ def __init__(self, model, steps=1): self.data_frames = 1 #: bool: Initialization flag - self.initialized = False + self.initialized = VariableWithLock(bool) + self.initialized.value = False #: dict: A dictionary defining the configuration for the loop control process. self.config_table = { "signal": { - "init": self.pre_signal_func, + "init": self.pre_func, "main": self.signal_func, }, - "data": {"main": self.data_func}, + "data": { + "init": self.pre_func, + "main": self.data_func + }, } - def pre_signal_func(self): + def pre_func(self): """Initialize loop parameters""" - if self.initialized: + if self.initialized.value: return - self.initialized = True + + with self.initialized as initialized: + if initialized.value: + return + + self.get_steps() - self.get_steps() + self.signals = self.steps + self.data_frames = self.steps + initialized.value = True - self.signals = self.steps - self.data_frames = self.steps + logger.debug(f"LoopByCount-initialize: {self.signals}, {self.data_frames}") def signal_func(self): """Control the signal acquisition loop and update the remaining steps.