From bad71705375226f545ce3430cbe7801f6e46a744 Mon Sep 17 00:00:00 2001
From: Christoph Schmidt <christoph.,schmidt@tugraz.at>
Date: Thu, 4 Jan 2024 10:41:20 +0100
Subject: [PATCH] Added new flag to determine if the deive is ready for
 recording

---
 src/CaptDeviceControl/controller/BaseAD2CaptDevice.py |  4 ++++
 .../controller/mp_AD2Capture/MPCaptDevice.py          |  7 +++++++
 .../model/submodels/AD2CaptDeviceCapturingModel.py    | 11 +++++++++++
 3 files changed, 22 insertions(+)

diff --git a/src/CaptDeviceControl/controller/BaseAD2CaptDevice.py b/src/CaptDeviceControl/controller/BaseAD2CaptDevice.py
index d2899ab..5a5793d 100644
--- a/src/CaptDeviceControl/controller/BaseAD2CaptDevice.py
+++ b/src/CaptDeviceControl/controller/BaseAD2CaptDevice.py
@@ -41,6 +41,7 @@ class BaseAD2CaptDevice(cmp.CProcessControl):
     device_state_changed = Signal(AD2Constants.DeviceState, name="device_state_changed")
 
     capture_process_state_changed = Signal(AD2Constants.CapturingState, name="capture_process_state_changed")
+    ready_for_recording_changed = Signal(bool, name="ready_for_recording_changed")
 
     def __init__(self, ad2capt_model: AD2CaptDeviceModel, start_capture_flag: Value):
         super().__init__(
@@ -114,6 +115,9 @@ class BaseAD2CaptDevice(cmp.CProcessControl):
         self.capture_process_state_changed.connect(
             lambda x: type(self.model.capturing_information).device_capturing_state.fset(
                 self.model.capturing_information, x))
+        self.ready_for_recording_changed.connect(
+            lambda x: type(self.model.capturing_information).ready_for_recording.fset(
+                self.model.capturing_information, x))
 
         self.open_device_finished.connect(self.on_open_device_finished)
 
diff --git a/src/CaptDeviceControl/controller/mp_AD2Capture/MPCaptDevice.py b/src/CaptDeviceControl/controller/mp_AD2Capture/MPCaptDevice.py
index ef96ce4..cb47c2b 100644
--- a/src/CaptDeviceControl/controller/mp_AD2Capture/MPCaptDevice.py
+++ b/src/CaptDeviceControl/controller/mp_AD2Capture/MPCaptDevice.py
@@ -167,6 +167,13 @@ class MPCaptDevice(cmp.CProcess, ):
         self.ain_buffer_size = self.get_ain_buffer_size(self._selected_device_index)
 
 
+    @CProperty
+    def ready_for_recording(self):
+        return self._ready_for_recording
+
+    @ready_for_recording.setter(emit_to='ready_for_recording_changed')
+    def ready_for_recording(self, value: bool):
+        self._ready_for_recording = value
     # ==================================================================================================================
     #
     # ==================================================================================================================
diff --git a/src/CaptDeviceControl/model/submodels/AD2CaptDeviceCapturingModel.py b/src/CaptDeviceControl/model/submodels/AD2CaptDeviceCapturingModel.py
index 8e48974..d3a1921 100644
--- a/src/CaptDeviceControl/model/submodels/AD2CaptDeviceCapturingModel.py
+++ b/src/CaptDeviceControl/model/submodels/AD2CaptDeviceCapturingModel.py
@@ -10,6 +10,7 @@ class AD2CaptDeviceCapturingSignals(QObject):
     def __init__(self, parent=None):
         super().__init__(parent)
 
+
     # Acquisition Settings
     sample_rate_changed = Signal(int)
     streaming_rate_changed = Signal(int)
@@ -27,6 +28,7 @@ class AD2CaptDeviceCapturingSignals(QObject):
 
     # Recording Flags (starting, stopping and pausing)
     device_capturing_state_changed = Signal(AD2Constants.CapturingState)
+    ready_for_recording_changed = Signal(bool)
     start_recording_changed = Signal(bool)
     stop_recording_changed = Signal(bool)
     reset_recording_changed = Signal(bool)
@@ -57,6 +59,7 @@ class AD2CaptDeviceCapturingModel:
 
         # Recording Flags (starting, stopping and pausing)
         self._device_capturing_state: AD2Constants.CapturingState = AD2Constants.CapturingState.STOPPED()
+        self._ready_for_recording: bool = False
         self._start_recording = False
         self._stop_recording = True
         self._reset_recording = True
@@ -135,6 +138,14 @@ class AD2CaptDeviceCapturingModel:
         self.signals.device_capturing_state_changed.emit(self.device_capturing_state)
 
     @property
+    def ready_for_recording(self) -> bool:
+        return self._ready_for_recording
+
+    @ready_for_recording.setter
+    def ready_for_recording(self, value: bool):
+        self._ready_for_recording = value
+        self.signals.ready_for_recording_changed.emit(self.ready_for_recording)
+    @property
     def start_recording(self) -> bool:
         print(f">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> {self._start_recording}")
         return self._start_recording
-- 
GitLab