From c772a806322f970988db5b216f1e3d56e6abafc2 Mon Sep 17 00:00:00 2001 From: David Lesnjak Date: Tue, 21 Jul 2026 12:32:43 +0200 Subject: [PATCH 1/2] SDSIO-Server: fix index-based playback log messages --- utilities/sdsio-server.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/utilities/sdsio-server.py b/utilities/sdsio-server.py index 2b23ce9..99d9db3 100644 --- a/utilities/sdsio-server.py +++ b/utilities/sdsio-server.py @@ -40,7 +40,7 @@ import termios import tty -SDSIO_SERVER_VERSION = "3.0.1-dev4" +SDSIO_SERVER_VERSION = "3.0.1-dev5" class StreamInfo(NamedTuple): name: str = None @@ -911,7 +911,8 @@ def _request_auto_playback_if_needed(self, target_flags: Optional[int] = None): self._flags.request_auto_playback_start() elif self._flags.auto_playback and self._last_playback_stream_name: if self._flags.request_auto_playback_terminate(): - logger.info("Playback complete - no more steps remaining.") + _complete_msg = "Playback complete - no more steps remaining." if self._play_list else "Playback complete." + logger.info(_complete_msg) if self._exit_after_playback: logger.info("SDSIO-Server terminating (playback complete).") self._send_ci_terminate_on_shutdown = True @@ -950,6 +951,7 @@ def _open(self, mode, name): if self._playback_mode: if not self._label_list: # Get flags, Set working dir + _index_based_playback = False if self._play_list: if self._play_step_index < len(self._play_list): _step = self._play_list[self._play_step_index] @@ -969,6 +971,7 @@ def _open(self, mode, name): else: _set_flags = 0 _clear_flags = 0 + _index_based_playback = True if _set_flags or _clear_flags: logger.debug(f"Applying flags for playback stream '{name}': set=0x{_set_flags:08X}, clear=0x{_clear_flags:08X}.") @@ -983,6 +986,8 @@ def _open(self, mode, name): logger.error(f"Open Failed. No files found for playback stream '{name}'.") return _resp_err self._label_list = _play_label_list + if _index_based_playback and self._play_step_index == 0: + logger.info("No play steps, index based playback started.") else: if mode == 0: From 83a9b1aa246170ac35115c3fe2e9c9f3e1e4bbcf Mon Sep 17 00:00:00 2001 From: David Lesnjak Date: Tue, 21 Jul 2026 12:46:52 +0200 Subject: [PATCH 2/2] SDSIO-VSI: synchronize sdsio.py with sdsio-server.py --- template/Board/Corstone-300/vsi/python/sdsio.py | 15 +++++++++------ template/Board/Corstone-320/vsi/python/sdsio.py | 15 +++++++++------ 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/template/Board/Corstone-300/vsi/python/sdsio.py b/template/Board/Corstone-300/vsi/python/sdsio.py index d2921da..2b62110 100644 --- a/template/Board/Corstone-300/vsi/python/sdsio.py +++ b/template/Board/Corstone-300/vsi/python/sdsio.py @@ -27,7 +27,7 @@ # ---------------------------------------------------------------------------- # # SDSIO server-compatible stream implementation # # ---------------------------------------------------------------------------- # -SDSIO_VSI_VERSION = "3.0.1-dev2" +SDSIO_VSI_VERSION = "3.0.1-dev5" class StreamInfo(NamedTuple): name: str = None @@ -269,7 +269,7 @@ def __init__( if monitor_factory: self._monitor = monitor_factory(self._mon_port, self._flags) self._ctrl_input = None - if control_input_factory is not False: + if control_input_factory is not False and sys.stdin.isatty(): if control_input_factory is None: control_input_factory = sdsControlInput if control_input_factory: @@ -501,7 +501,8 @@ def _request_auto_playback_if_needed(self, target_flags: Optional[int] = None): self._flags.request_auto_playback_start() elif self._flags.auto_playback and self._last_playback_stream_name: if self._flags.request_auto_playback_terminate(): - logger.info("Playback complete - no more steps remaining.") + _complete_msg = "Playback complete - no more steps remaining." if self._play_list else "Playback complete." + logger.info(_complete_msg) if self._exit_after_playback: logger.info("SDSIO-Server terminating (playback complete).") self._send_ci_terminate_on_shutdown = True @@ -540,6 +541,7 @@ def _open(self, mode, name): if self._playback_mode: if not self._label_list: # Get flags, Set working dir + _index_based_playback = False if self._play_list: if self._play_step_index < len(self._play_list): _step = self._play_list[self._play_step_index] @@ -559,6 +561,7 @@ def _open(self, mode, name): else: _set_flags = 0 _clear_flags = 0 + _index_based_playback = True if _set_flags or _clear_flags: logger.debug(f"Applying flags for playback stream '{name}': set=0x{_set_flags:08X}, clear=0x{_clear_flags:08X}.") @@ -573,6 +576,8 @@ def _open(self, mode, name): logger.error(f"Open Failed. No files found for playback stream '{name}'.") return _resp_err self._label_list = _play_label_list + if _index_based_playback and self._play_step_index == 0: + logger.info("No play steps, index based playback started.") else: if mode == 0: @@ -867,10 +872,8 @@ def get_async_response(self): def get_shutdown_flags(self): _resp = bytearray() _cmd = CMD_FLAGS - _set_mask = self._flags.consume_set() - self._flags.consume_clear() if self._send_ci_terminate_on_shutdown: - _set_mask &= SDS_FLAG_MASK_CI_TERMINATE + _set_mask = SDS_FLAG_MASK_CI_TERMINATE else: _set_mask = 0 _clear_mask = SDS_FLAG_MASK_ALIVE diff --git a/template/Board/Corstone-320/vsi/python/sdsio.py b/template/Board/Corstone-320/vsi/python/sdsio.py index d2921da..2b62110 100644 --- a/template/Board/Corstone-320/vsi/python/sdsio.py +++ b/template/Board/Corstone-320/vsi/python/sdsio.py @@ -27,7 +27,7 @@ # ---------------------------------------------------------------------------- # # SDSIO server-compatible stream implementation # # ---------------------------------------------------------------------------- # -SDSIO_VSI_VERSION = "3.0.1-dev2" +SDSIO_VSI_VERSION = "3.0.1-dev5" class StreamInfo(NamedTuple): name: str = None @@ -269,7 +269,7 @@ def __init__( if monitor_factory: self._monitor = monitor_factory(self._mon_port, self._flags) self._ctrl_input = None - if control_input_factory is not False: + if control_input_factory is not False and sys.stdin.isatty(): if control_input_factory is None: control_input_factory = sdsControlInput if control_input_factory: @@ -501,7 +501,8 @@ def _request_auto_playback_if_needed(self, target_flags: Optional[int] = None): self._flags.request_auto_playback_start() elif self._flags.auto_playback and self._last_playback_stream_name: if self._flags.request_auto_playback_terminate(): - logger.info("Playback complete - no more steps remaining.") + _complete_msg = "Playback complete - no more steps remaining." if self._play_list else "Playback complete." + logger.info(_complete_msg) if self._exit_after_playback: logger.info("SDSIO-Server terminating (playback complete).") self._send_ci_terminate_on_shutdown = True @@ -540,6 +541,7 @@ def _open(self, mode, name): if self._playback_mode: if not self._label_list: # Get flags, Set working dir + _index_based_playback = False if self._play_list: if self._play_step_index < len(self._play_list): _step = self._play_list[self._play_step_index] @@ -559,6 +561,7 @@ def _open(self, mode, name): else: _set_flags = 0 _clear_flags = 0 + _index_based_playback = True if _set_flags or _clear_flags: logger.debug(f"Applying flags for playback stream '{name}': set=0x{_set_flags:08X}, clear=0x{_clear_flags:08X}.") @@ -573,6 +576,8 @@ def _open(self, mode, name): logger.error(f"Open Failed. No files found for playback stream '{name}'.") return _resp_err self._label_list = _play_label_list + if _index_based_playback and self._play_step_index == 0: + logger.info("No play steps, index based playback started.") else: if mode == 0: @@ -867,10 +872,8 @@ def get_async_response(self): def get_shutdown_flags(self): _resp = bytearray() _cmd = CMD_FLAGS - _set_mask = self._flags.consume_set() - self._flags.consume_clear() if self._send_ci_terminate_on_shutdown: - _set_mask &= SDS_FLAG_MASK_CI_TERMINATE + _set_mask = SDS_FLAG_MASK_CI_TERMINATE else: _set_mask = 0 _clear_mask = SDS_FLAG_MASK_ALIVE