From 2c8489a0ded024579c190dd7a8e9fde047c7610a Mon Sep 17 00:00:00 2001 From: cheykrym Date: Tue, 31 Mar 2026 23:18:38 +0300 Subject: [PATCH] bluetooth service --- build_info.py | 1 + screens/setting/bluetooth_screen.py | 5 +++++ services/bluetooth_service.py | 13 ++++++++++++- 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/build_info.py b/build_info.py index 99c4915..381bffd 100644 --- a/build_info.py +++ b/build_info.py @@ -13,6 +13,7 @@ DEFAULT_SOUND_VOLUME = 100 DEFAULT_PREMUTE_VOLUME = 10 DEFAULT_DUCKING_VOLUME = 35 DEV_MODE_ENABLE = (Path(__file__).resolve().parent / "dev_mode_enable").exists() +BLUETOOTH_MAX_PAIRED_DEVICES = 2 def get_device_model() -> str: diff --git a/screens/setting/bluetooth_screen.py b/screens/setting/bluetooth_screen.py index 58081f2..00a65c7 100644 --- a/screens/setting/bluetooth_screen.py +++ b/screens/setting/bluetooth_screen.py @@ -13,6 +13,7 @@ from PySide6.QtWidgets import ( QScroller, ) +import build_info from services.bluetooth_service import BluetoothService, BluetoothDevice @@ -119,6 +120,10 @@ class BluetoothScreen(QWidget): success = self._bt_service.make_discoverable() if self._bt_service.last_error == "power_off": self.status.setText("Статус: питание BT выключено (проверьте rfkill)") + elif self._bt_service.last_error == "max_devices": + self.status.setText( + f"Статус: достигнуто макс. число устройств ({build_info.BLUETOOTH_MAX_PAIRED_DEVICES})" + ) elif not success: self.status.setText(f"Статус: ошибка ({self._bt_service.last_error})") else: diff --git a/services/bluetooth_service.py b/services/bluetooth_service.py index 2e90e6c..e6799a2 100644 --- a/services/bluetooth_service.py +++ b/services/bluetooth_service.py @@ -9,6 +9,8 @@ from pathlib import Path from PySide6.QtCore import QObject, Signal +import build_info + @dataclass class BluetoothDevice: @@ -80,7 +82,16 @@ class BluetoothService(QObject): return success def make_discoverable(self) -> bool: - """Сделать устройство видимым для сопряжения.""" + """Сделать устройство видимым для сопряжения. + + Возвращает False, если достигнуто максимальное количество сопряженных устройств. + """ + # Проверка лимита сопряженных устройств + paired_devices = self.get_paired_devices() + if len(paired_devices) >= build_info.BLUETOOTH_MAX_PAIRED_DEVICES: + self._last_error = "max_devices" + return False + self._last_error = "" script_out = self._run_btctl_script( [