diff options
author | Alex Blasche <alexander.blasche@qt.io> | 2018-07-23 13:13:49 +0200 |
---|---|---|
committer | Alex Blasche <alexander.blasche@qt.io> | 2018-07-25 11:16:30 +0000 |
commit | e84d9f24cbb7c686535cbe7e13f28a1c0baaa48d (patch) | |
tree | aba4b661532d1843706b15b17f92e328a9ab70bb /src/bluetooth/qbluetoothsocket_android.cpp | |
parent | 81de083e4f9fdee7f1ef7d2fffc7d2147ddbc1b0 (diff) |
Move QBluetoothSocket::connectToService() to private implementations
This permits each platform to customize the implementations without
the need for ifdefs. Upcoming changes such as the BLuez DBuS addition
will increase the platform differences.
Task-number: QTBUG-68550
Change-Id: I8fc9a74d3ce704466f0bf2c16287e32f222c4376
Reviewed-by: Lubomir I. Ivanov <neolit123@gmail.com>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Diffstat (limited to 'src/bluetooth/qbluetoothsocket_android.cpp')
-rw-r--r-- | src/bluetooth/qbluetoothsocket_android.cpp | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/src/bluetooth/qbluetoothsocket_android.cpp b/src/bluetooth/qbluetoothsocket_android.cpp index 109d3141..9047bb31 100644 --- a/src/bluetooth/qbluetoothsocket_android.cpp +++ b/src/bluetooth/qbluetoothsocket_android.cpp @@ -41,6 +41,8 @@ #include "qbluetoothsocket.h" #include "qbluetoothsocket_android_p.h" #include "qbluetoothaddress.h" +#include "qbluetoothdeviceinfo.h" +#include "qbluetoothserviceinfo.h" #include <QtCore/QLoggingCategory> #include <QtCore/QThread> #include <QtCore/QTime> @@ -503,6 +505,70 @@ void QBluetoothSocketPrivateAndroid::connectToServiceHelper(const QBluetoothAddr emit connectJavaSocket(); } +void QBluetoothSocketPrivateAndroid::connectToService( + const QBluetoothServiceInfo &service, QIODevice::OpenMode openMode) +{ + Q_Q(QBluetoothSocket); + + if (q->state() != QBluetoothSocket::UnconnectedState + && q->state() != QBluetoothSocket::ServiceLookupState) { + qCWarning(QT_BT_ANDROID) << "QBluetoothSocketPrivateAndroid::connectToService called on busy socket"; + errorString = QBluetoothSocket::tr("Trying to connect while connection is in progress"); + q->setSocketError(QBluetoothSocket::OperationError); + return; + } + + if (!ensureNativeSocket(service.socketProtocol())) { + errorString = QBluetoothSocket::tr("Socket type not supported"); + q->setSocketError(QBluetoothSocket::UnsupportedProtocolError); + return; + } + connectToServiceHelper(service.device().address(), service.serviceUuid(), openMode); +} + +void QBluetoothSocketPrivateAndroid::connectToService( + const QBluetoothAddress &address, const QBluetoothUuid &uuid, + QIODevice::OpenMode openMode) +{ + Q_Q(QBluetoothSocket); + + if (q->state() != QBluetoothSocket::UnconnectedState) { + qCWarning(QT_BT_ANDROID) << "QBluetoothSocketPrivateAndroid::connectToService called on busy socket"; + errorString = QBluetoothSocket::tr("Trying to connect while connection is in progress"); + q->setSocketError(QBluetoothSocket::OperationError); + return; + } + + if (q->socketType() == QBluetoothServiceInfo::UnknownProtocol) { + qCWarning(QT_BT_ANDROID) << "QBluetoothSocketPrivateAndroid::connectToService cannot " + "connect with 'UnknownProtocol' (type provided by given service)"; + errorString = QBluetoothSocket::tr("Socket type not supported"); + q->setSocketError(QBluetoothSocket::UnsupportedProtocolError); + return; + } + + if (!ensureNativeSocket(q->socketType())) { + errorString = QBluetoothSocket::tr("Socket type not supported"); + q->setSocketError(QBluetoothSocket::UnsupportedProtocolError); + return; + } + connectToServiceHelper(address, uuid, openMode); +} + +void QBluetoothSocketPrivateAndroid::connectToService( + const QBluetoothAddress &address, quint16 port, QIODevice::OpenMode openMode) +{ + Q_UNUSED(port); + Q_UNUSED(openMode); + Q_UNUSED(address); + + Q_Q(QBluetoothSocket); + + errorString = tr("Connecting to port is not supported"); + q->setSocketError(QBluetoothSocket::ServiceNotFoundError); + qCWarning(QT_BT_ANDROID) << "Connecting to port is not supported"; +} + void QBluetoothSocketPrivateAndroid::socketConnectSuccess(const QAndroidJniObject &socket) { Q_Q(QBluetoothSocket); |