diff --git a/examples/main.py b/examples/main.py
index 3137e01ba1d274dad7136e31abc9e6dd2c50a0a3..be81ffce236925c42a161735e7eac93642a8f7ca 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 9084f8b620711845072cdf73e4df7f53d36d1b12..22f6cb730ad88247cec05314a68360e107662c01 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 773dc1a8466c4ab692c72a1f98ca860153400d56..20575af8ee8600521abbf3096d0389d18de28a20 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 621ec1c83ac29cbdc4b299a60a008eb5e653c324..8f51713ca8695efff2937ee5dd4e9e4f91921f93 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 537c1c1384e1c638595446650af53c83ef02644b..e845f1ea045781fd1e6183f3bc396e43e352c818 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 0ba7c3ffe44597537a2b59890c3a711fae766338..dbdc6ae3dbe3a52f0be85f69efa3b831fa66bb44 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)