From 59bff5fbdfb3d74d8d55fee3ac5d1aef2bfad8fd Mon Sep 17 00:00:00 2001
From: Christoph Schmidt <christoph.,schmidt@tugraz.at>
Date: Thu, 4 Jan 2024 14:14:57 +0100
Subject: [PATCH] Cleaned up log output. Updated to version 0.2.3

---
 examples/main.py                              |  2 +-
 src/CaptDeviceControl/CaptDeviceConfig.py     |  2 +-
 .../controller/BaseAD2CaptDevice.py           | 17 +++++--
 .../controller/mp_AD2Capture/MPCaptDevice.py  | 49 +++++++++++--------
 .../mp_AD2Capture/MPCaptDeviceControl.py      |  8 +--
 .../AD2CaptDeviceInformationModel.py          |  1 -
 6 files changed, 48 insertions(+), 31 deletions(-)

diff --git a/examples/main.py b/examples/main.py
index 3137e01..be81ffc 100644
--- a/examples/main.py
+++ b/examples/main.py
@@ -38,7 +38,7 @@ if __name__ == "__main__":
 
 
     model = CaptDevice.Model(conf)
-    controller = CaptDevice.Controller(model, None)
+    controller = CaptDevice.Controller(model, None, log_file="log.log")
     window = CaptDevice.View(model, controller)
 
     window.show()
diff --git a/src/CaptDeviceControl/CaptDeviceConfig.py b/src/CaptDeviceControl/CaptDeviceConfig.py
index 9084f8b..22f6cb7 100644
--- a/src/CaptDeviceControl/CaptDeviceConfig.py
+++ b/src/CaptDeviceControl/CaptDeviceConfig.py
@@ -12,7 +12,7 @@ import confighandler as cfg
 class CaptDeviceConfig(cfg.ConfigNode):
 
     def __init__(self) -> None:
-        super().__init__(internal_log=True, internal_log_level=logging.DEBUG)
+        super().__init__(internal_log=False, internal_log_level=logging.DEBUG)
         self.selected_device_index = cfg.Field(0, friendly_name="Selected device",
                                          description="Selected device from the device list provided by the DreamWaves API.")
 
diff --git a/src/CaptDeviceControl/controller/BaseAD2CaptDevice.py b/src/CaptDeviceControl/controller/BaseAD2CaptDevice.py
index 773dc1a..20575af 100644
--- a/src/CaptDeviceControl/controller/BaseAD2CaptDevice.py
+++ b/src/CaptDeviceControl/controller/BaseAD2CaptDevice.py
@@ -29,6 +29,7 @@ class BaseAD2CaptDevice(cmp.CProcessControl):
 
     ain_channels_changed = Signal(list, name="ain_channels_changed")
     selected_ain_channel_changed = Signal(int, name="selected_ain_channel_changed")
+    sample_rate_changed = Signal(float, name="sample_rate_changed")
     ain_buffer_size_changed = Signal(int, name="ain_buffer_size_changed")
     analog_in_bits_changed = Signal(int, name="analog_in_bits_changed")
     analog_in_buffer_size_changed = Signal(int, name="analog_in_buffer_size_changed")
@@ -43,10 +44,9 @@ class BaseAD2CaptDevice(cmp.CProcessControl):
     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__(
-            internal_log=True,
-            internal_log_level=logging.DEBUG)
+    def __init__(self, ad2capt_model: AD2CaptDeviceModel, start_capture_flag: Value,
+                 internal_log=True, internal_log_level=logging.WARNING, log_file=None):
+        super().__init__(internal_log=internal_log, internal_log_level=internal_log_level, log_file=log_file)
 
         self.model = ad2capt_model
 
@@ -75,6 +75,9 @@ class BaseAD2CaptDevice(cmp.CProcessControl):
             self.start_capture_flag,
             self.kill_capture_flag
         )
+        self.logger.setLevel(logging.INFO)
+        self.set_child_log_level(logging.INFO)
+
         self.connect_signals()
         self._connect_config_signals()
 
@@ -82,6 +85,8 @@ class BaseAD2CaptDevice(cmp.CProcessControl):
 
         self.selected_ain_channel = self.model.analog_in.selected_ain_channel
 
+
+
     def connect_signals(self):
         self.dwf_version_changed.connect(self._on_dwf_version_changed)
         self.discovered_devices_changed.connect(self.on_discovered_devices_changed)
@@ -188,6 +193,7 @@ class BaseAD2CaptDevice(cmp.CProcessControl):
     # DWF Version
     # ==================================================================================================================
     def _on_dwf_version_changed(self, version):
+        self.logger.info(f"DWF Version returned: {version}")
         self.model.dwf_version = version
 
     # ==================================================================================================================
@@ -200,7 +206,10 @@ class BaseAD2CaptDevice(cmp.CProcessControl):
             :return:
         """
 
+
     def on_discovered_devices_changed(self, devices: list):
+        self.logger.info(f"Discovered devices: {len(devices)}")
+        self.logger.debug(f"Discovered devices: {devices}")
         self.model.device_information.connected_devices = devices
 
     def _on_selected_device_index_changed(self, index):
diff --git a/src/CaptDeviceControl/controller/mp_AD2Capture/MPCaptDevice.py b/src/CaptDeviceControl/controller/mp_AD2Capture/MPCaptDevice.py
index 621ec1c..8f51713 100644
--- a/src/CaptDeviceControl/controller/mp_AD2Capture/MPCaptDevice.py
+++ b/src/CaptDeviceControl/controller/mp_AD2Capture/MPCaptDevice.py
@@ -33,11 +33,11 @@ class MPCaptDevice(cmp.CProcess, ):
                  start_capture_flag: Value,
                  kill_capture_flag: Value,
                  kill_flag: Value,
-                 internal_log, internal_log_level):
+                 internal_log, internal_log_level, log_file):
         super().__init__(state_queue, cmd_queue,
                          kill_flag=kill_flag,
                          internal_log=internal_log,
-                         internal_log_level=internal_log_level)
+                         internal_log_level=internal_log_level, log_file=log_file)
 
         # Objects for data exchange
         self.start_capture_flag: Value = start_capture_flag
@@ -124,7 +124,6 @@ class MPCaptDevice(cmp.CProcess, ):
 
     @ain_channels.setter(emit_to='ain_channels_changed')
     def ain_channels(self, value):
-        self.logger.info("Setting ain channels.")
         self._ain_channels = value
 
     @CProperty
@@ -203,7 +202,8 @@ class MPCaptDevice(cmp.CProcess, ):
     # Device Enumeration without connecting to the device
     # ==================================================================================================================
     @cmp.CProcess.register_signal()
-    def discover_connected_devices(self):
+    def discover_connected_devices(self, filter_type: int = enumfilterType.value | enumfilterDemo.value | enumfilterUSB.value):
+
 
         self.logger.info(f"Discovering connected devices...")
         # enumerate connected devices
@@ -215,22 +215,24 @@ class MPCaptDevice(cmp.CProcess, ):
         #                     (c_int32(enumfilterType.value | enumfilterAudio.value), 'Audio'),
         #                     (c_int32(enumfilterType.value | enumfilterDemo.value), 'Demo')]:
         cDevice = c_int()
-        filter, type = (c_int32(enumfilterType.value | enumfilterDemo.value | enumfilterUSB.value), 'USB')
+        filter, type = (c_int32(filter_type), 'USB')
         # filter, type = (c_int32(enumfilterType.value | enumfilterDemo.value), 'DEMO')
-        self.logger.debug(f"Filtering {type} devices...")
+        self.logger.debug(f"Filter has been used: {hex(int(filter_type))}")
         self.dwf.FDwfEnum(filter, byref(cDevice))
 
-        self.logger.debug(f"Found {cDevice.value} {type} devices.")
-
         for iDevice in range(0, cDevice.value):
+            if self.get_device_serial_number(iDevice) == "DEMO":
+                _type = "DEMO"
+            else:
+                _type = type
             connected_devices.append({
-                'type': type,
+                'type': _type,
                 'device_id': int(iDevice),
                 'device_name': self.get_device_name(iDevice),
                 'serial_number': self.get_device_serial_number(iDevice)
             })
             # _mp_log_debug(f"Found {type} device: {devicename.value.decode('UTF-8')} ({serialnum.value.decode('UTF-8')})")
-        self.logger.info(f"Found {len(connected_devices)} devices.")
+        self.logger.debug(f"Found {len(connected_devices)} devices.")
         return connected_devices
     # ==================================================================================================================
     # Settings from process Control
@@ -287,7 +289,7 @@ class MPCaptDevice(cmp.CProcess, ):
 
     def close_device(self):
         # self.dwf.FDwfAnalogOutReset(self.hdwf, c_int(channel))
-        self.logger.info(f"[Task] Closing device...")
+        self.logger.debug(f"[Task] Closing device...")
         self.dwf.FDwfDeviceClose(self.hdwf)
         self.hdwf.value = 0
         self.connected = False
@@ -297,17 +299,21 @@ class MPCaptDevice(cmp.CProcess, ):
     # Device Information
     # ==================================================================================================================
     def get_ain_channels(self) -> list:
-        cInfo = c_int()
-        self.dwf.FDwfEnumConfigInfo(c_int(self.selected_device_index), c_int(1), byref(cInfo))
-        ain_channels = cInfo.value
-        if ain_channels == 0:
+        #self.logger.debug(f"Reading available analog input channels for device {self.selected_device_index}.")
+        #cInfo = c_int()
+        #print(f">>> {cInfo}")
+        #self.dwf.FDwfEnumConfigInfo(c_int(self.selected_device_index), c_int(1), byref(cInfo))
+        #print(f">>><<<< {cInfo}")
+        #self.ain_channels = cInfo.value
+        #if self.ain_channels == 0:
             # Sometimes, the device reports a wrong number of ain channels
             # so we can try to connect to the device first and retrieve the information
-            self.open_device(self.selected_device_index)
-            ain_channels = self.analog_in_channels_count()
-            self.close_device()
-        self.logger.debug(f"Device {self.selected_device_index} has {ain_channels} analog input channels.")
-        return list(range(0, ain_channels))
+        self.open_device()
+        self.ain_channels = self.analog_in_channels_count()
+        self.close_device()
+        self.logger.info(f"Device {self.device_name} (#{self.selected_device_index}, SNR: {self.device_serial_number}) "
+                          f"AIn: {self.ain_channels}")
+        return list(range(0, self.ain_channels))
 
     def get_ain_buffer_size(self, device_id) -> int:
         cInfo = c_int()
@@ -355,7 +361,8 @@ class MPCaptDevice(cmp.CProcess, ):
         Calls WaveForms API Function 'FDwfAnalogInChannelCount(HDWF hdwf, int *pcChannel)'
         :return: The number of analog in channels.
         """
-        if self.connected():
+        if self.device_connected():
+            self.logger.debug(f"Reading AnalogIn Channel Count from device {self._device_name}")
             try:
                 int0 = c_int()
                 self.dwf.FDwfAnalogInChannelCount(self.hdwf, byref(int0))
diff --git a/src/CaptDeviceControl/controller/mp_AD2Capture/MPCaptDeviceControl.py b/src/CaptDeviceControl/controller/mp_AD2Capture/MPCaptDeviceControl.py
index 537c1c1..e845f1e 100644
--- a/src/CaptDeviceControl/controller/mp_AD2Capture/MPCaptDeviceControl.py
+++ b/src/CaptDeviceControl/controller/mp_AD2Capture/MPCaptDeviceControl.py
@@ -7,6 +7,8 @@ from PySide6.QtCore import Signal
 
 from CaptDeviceControl.model.AD2CaptDeviceModel import AD2CaptDeviceSignals, AD2CaptDeviceModel
 from CaptDeviceControl.model.AD2Constants import AD2Constants
+from CaptDeviceControl.controller.mp_AD2Capture.MPCaptDevice import MPCaptDevice
+
 
 class MPCaptDeviceControl(cmp.CProcessControl):
 
@@ -36,9 +38,9 @@ class MPCaptDeviceControl(cmp.CProcessControl):
                  capturing_data_queue,
                  start_capture_flag,
                  kill_capture_flag,
-                 parent=None,
-                 internal_log=True,
-                 internal_log_level=logging.DEBUG):
+                 internal_log,
+                 internal_log_level,
+                 parent=None):
         super().__init__(parent,
                          internal_log=internal_log,
                          internal_log_level=internal_log_level)
diff --git a/src/CaptDeviceControl/model/submodels/AD2CaptDeviceInformationModel.py b/src/CaptDeviceControl/model/submodels/AD2CaptDeviceInformationModel.py
index 0ba7c3f..dbdc6ae 100644
--- a/src/CaptDeviceControl/model/submodels/AD2CaptDeviceInformationModel.py
+++ b/src/CaptDeviceControl/model/submodels/AD2CaptDeviceInformationModel.py
@@ -69,7 +69,6 @@ class AD2CaptDeviceInformationModel:
 
     @selected_device_index.setter
     def selected_device_index(self, value: int):
-        print("selected_device_index", value)
         self._config.selected_device_index.set(value)
         self.signals.selected_device_index_changed.emit(self.selected_device_index)
 
-- 
GitLab