diff options
Diffstat (limited to 'examples/bluetooth/btscanner/service.py')
-rw-r--r-- | examples/bluetooth/btscanner/service.py | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/examples/bluetooth/btscanner/service.py b/examples/bluetooth/btscanner/service.py new file mode 100644 index 000000000..31df8a9ea --- /dev/null +++ b/examples/bluetooth/btscanner/service.py @@ -0,0 +1,48 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +from PySide6.QtCore import Slot +from PySide6.QtWidgets import QDialog +from PySide6.QtBluetooth import (QBluetoothAddress, QBluetoothServiceInfo, + QBluetoothServiceDiscoveryAgent, QBluetoothLocalDevice) + +from ui_service import Ui_ServiceDiscovery + + +class ServiceDiscoveryDialog(QDialog): + def __init__(self, name, address, parent=None): + super().__init__(parent) + self._ui = Ui_ServiceDiscovery() + self._ui.setupUi(self) + + # Using default Bluetooth adapter + local_device = QBluetoothLocalDevice() + adapter_address = QBluetoothAddress(local_device.address()) + + # In case of multiple Bluetooth adapters it is possible to + # set which adapter will be used by providing MAC Address. + # Example code: + # + # adapterAddress = QBluetoothAddress("XX:XX:XX:XX:XX:XX") + # discoveryAgent = QBluetoothServiceDiscoveryAgent(adapterAddress) + + self._discovery_agent = QBluetoothServiceDiscoveryAgent(adapter_address) + self._discovery_agent.setRemoteAddress(address) + + self.setWindowTitle(name) + + self._discovery_agent.serviceDiscovered.connect(self.add_service) + self._discovery_agent.finished.connect(self._ui.status.hide) + self._discovery_agent.start() + + @Slot(QBluetoothServiceInfo) + def add_service(self, info): + line = info.serviceName() + if not line: + return + + if info.serviceDescription(): + line += "\n\t" + info.serviceDescription() + if info.serviceProvider(): + line += "\n\t" + info.serviceProvider() + self._ui.list.addItem(line) |