w
Some checks failed
CI for csaxs_bec / test (pull_request) Failing after 1m24s
CI for csaxs_bec / test (push) Failing after 1m28s

This commit is contained in:
2026-01-26 10:09:46 +01:00
parent 3f7d888596
commit 8200d3f7c5

View File

@@ -79,7 +79,6 @@ class GalilRIOSignalRO(GalilSignalRO):
super().__init__(signal_name, parent=parent, **kwargs)
self._channel = channel
self._metadata["connected"] = False
self.last_readback = self.parent.last_readback
def _socket_get(self) -> float:
"""Get command for the readback signal"""
@@ -93,8 +92,8 @@ class GalilRIOSignalRO(GalilSignalRO):
def get(self):
"""Get current analog channel values from the Galil RIO controller."""
# If the last readback has happend more than 0.5 seconds ago, read all channels again
logger.debug(f"Reading value for {self.name}, last readback at {self.last_readback}")
if time.monotonic() - self.last_readback < 0.5: # self._READ_TIMEOUT:
logger.debug(f"Reading value for {self.name}, last readback at {self.parent.last_readback}")
if time.monotonic() - self.parent.last_readback < 0.5: # self._READ_TIMEOUT:
logger.debug(f"Using cached readback value for {self.name}: {self._readback}")
return self._readback
self._readback = self._socket_get()
@@ -112,7 +111,7 @@ class GalilRIOSignalRO(GalilSignalRO):
"""
timestamp = time.time()
# NOTE: Update parent's last readback before running subscriptions!!
self.parent.last_readback = time.monotonic()
self.parent._last_readback = time.monotonic()
for walk in self.parent.walk_signals():
if walk.item.attr_name.startswith("an_ch"):
idx = int(walk.item.attr_name[-1])
@@ -162,12 +161,17 @@ class GalilRIO(PSIDeviceBase):
self.controller = GalilRIOController(
socket_cls=socket_cls, socket_host=host, socket_port=port, device_manager=device_manager
)
self.last_readback: float = time.monotonic()
self._last_readback: float = time.monotonic()
super().__init__(name=name, device_manager=device_manager, scan_info=scan_info, **kwargs)
self.controller.subscribe(
self._update_connection_state, event_type=self.SUB_CONNECTION_CHANGE
)
@property
def last_readback(self) -> float:
"""Return the time of the last readback from the controller."""
return self._last_readback
def wait_for_connection(self, timeout: float = 30.0) -> None:
"""Wait for the RIO controller to be connected within timeout period."""
self.controller.on(timeout=timeout)