From 12a2eb420a1cb5fca3eb8a628c9af007b505dcfb Mon Sep 17 00:00:00 2001 From: misyaguziya Date: Fri, 27 Sep 2024 17:39:24 +0900 Subject: [PATCH] =?UTF-8?q?=F0=9F=91=8D=EF=B8=8F[Update]=20Controller=20:?= =?UTF-8?q?=20volume=20check=E6=99=82=E3=81=ABDevice=E3=81=AE=E8=87=AA?= =?UTF-8?q?=E5=8B=95=E5=88=87=E3=82=8A=E6=9B=BF=E3=81=88=E5=87=A6=E7=90=86?= =?UTF-8?q?=E3=81=8C=E5=8B=95=E4=BD=9C=E3=81=97=E3=81=AA=E3=81=84=E5=95=8F?= =?UTF-8?q?=E9=A1=8C=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../transcription/transcription_utils.py | 20 +++++++++++++++++-- src-python/webui_controller.py | 18 +++++++++++++++-- 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/src-python/models/transcription/transcription_utils.py b/src-python/models/transcription/transcription_utils.py index 70552bab..b39a77f5 100644 --- a/src-python/models/transcription/transcription_utils.py +++ b/src-python/models/transcription/transcription_utils.py @@ -19,6 +19,12 @@ class Client(MMNotificationClient): def on_device_removed(self, removed_device_id): self.loop = False + def on_device_state_changed(self, device_id, state): + self.loop = False + + def on_property_value_changed(self, device_id, key): + self.loop = False + class DeviceManager: _instance = None @@ -46,6 +52,7 @@ class DeviceManager: self.callback_host_list = None self.callback_mic_device_list = None self.callback_speaker_device_list = None + self.callback_prev_update = None self.monitoring_flag = False self.startMonitoring() @@ -133,8 +140,8 @@ class DeviceManager: while cb.loop is True: sleep(1) enumerator.UnregisterEndpointNotificationCallback(cb) - sleep(1) - + self.runPrevUpdateDevices() + sleep(2) self.update() self.noticeDefaultDevice() @@ -185,6 +192,15 @@ class DeviceManager: def clearCallbackSpeakerDeviceList(self): self.callback_speaker_device_list = None + def setCallbackPrevUpdateDevices(self, callback): + self.callback_prev_update = callback + + def clearCallbackPrevUpdateDevices(self): + self.callback_prev_update = None + + def runPrevUpdateDevices(self): + self.callback_prev_update() + def noticeDefaultDevice(self): if self.callback_default_mic_device is not None: if self.prev_default_mic_device["device"]["name"] != self.default_mic_device["device"]["name"]: diff --git a/src-python/webui_controller.py b/src-python/webui_controller.py index 0a2ff0a5..80677a9b 100644 --- a/src-python/webui_controller.py +++ b/src-python/webui_controller.py @@ -55,6 +55,16 @@ class Controller: model.getListSpeakerDevice(), ) + def prevUpdateSelectedDevices(self) -> None: + if config.ENABLE_TRANSCRIPTION_SEND is True: + model.stopMicTranscript() + if config.ENABLE_TRANSCRIPTION_RECEIVE is True: + model.stopSpeakerTranscript() + if config.ENABLE_CHECK_ENERGY_SEND is True: + model.stopCheckMicEnergy() + if config.ENABLE_CHECK_ENERGY_RECEIVE is True: + model.stopCheckSpeakerEnergy() + def updateSelectedMicDevice(self, host, device) -> None: config.SELECTED_MIC_HOST = host config.SELECTED_MIC_DEVICE = device @@ -588,6 +598,7 @@ class Controller: def setEnableAutoMicSelect(self, *args, **kwargs) -> dict: config.AUTO_MIC_SELECT = True + device_manager.setCallbackPrevUpdateDevices(self.prevUpdateSelectedDevices) device_manager.setCallbackDefaultMicDevice(self.updateSelectedMicDevice) device_manager.noticeDefaultDevice() device_manager.forceSetMicDefaultDevice() @@ -595,6 +606,7 @@ class Controller: @staticmethod def setDisableAutoMicSelect(*args, **kwargs) -> dict: + device_manager.clearCallbackPrevUpdateDevices() device_manager.clearCallbackDefaultMicDevice() config.AUTO_MIC_SELECT = False return {"status":200, "result":config.AUTO_MIC_SELECT} @@ -771,6 +783,7 @@ class Controller: def setEnableAutoSpeakerSelect(self, *args, **kwargs) -> dict: config.AUTO_SPEAKER_SELECT = True + device_manager.setCallbackPrevUpdateDevices(self.prevUpdateSelectedDevices) device_manager.setCallbackDefaultSpeakerDevice(self.updateSelectedSpeakerDevice) device_manager.noticeDefaultDevice() device_manager.forceSetSpeakerDefaultDevice() @@ -778,6 +791,7 @@ class Controller: @staticmethod def setDisableAutoSpeakerSelect(*args, **kwargs) -> dict: + device_manager.clearCallbackPrevUpdateDevices() device_manager.clearCallbackDefaultSpeakerDevice() config.AUTO_SPEAKER_SELECT = False return {"status":200, "result":config.AUTO_SPEAKER_SELECT} @@ -1535,10 +1549,10 @@ class Controller: # init Auto device selection printLog("Init Auto Device Selection") if config.AUTO_MIC_SELECT is True: - device_manager.setCallbackDefaultMicDevice(self.updateSelectedMicDevice) + self.setEnableAutoMicSelect() if config.AUTO_SPEAKER_SELECT is True: - device_manager.setCallbackDefaultSpeakerDevice(self.updateSelectedSpeakerDevice) + self.setEnableAutoSpeakerSelect() device_manager.setCallbackHostList(self.updateMicHostList) device_manager.setCallbackMicDeviceList(self.updateMicDeviceList)