diff options
author | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2014-08-28 16:22:31 +0200 |
---|---|---|
committer | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2014-08-28 16:22:31 +0200 |
commit | 8146a18be0c98751816ffe40661308081a57573d (patch) | |
tree | 69a2ddc07bad88df0d27d6b9a33ebb1ac522b71a /src/bluetooth | |
parent | 9f4c45b58b82b59740dc60e22cba6894efd6c164 (diff) | |
parent | 167faeec86ed4d9c9f099f5180784c7b0cb9aa42 (diff) |
Merge remote-tracking branch 'origin/5.3' into 5.4
Conflicts:
src/bluetooth/qbluetoothdevicediscoveryagent_p.cpp
Change-Id: Ie8bf1903f9c7c1ccd5b05a3f97049ae0882b88b8
Diffstat (limited to 'src/bluetooth')
27 files changed, 393 insertions, 31 deletions
diff --git a/src/bluetooth/android/androidbroadcastreceiver_p.h b/src/bluetooth/android/androidbroadcastreceiver_p.h index af835b9b..347cd968 100644 --- a/src/bluetooth/android/androidbroadcastreceiver_p.h +++ b/src/bluetooth/android/androidbroadcastreceiver_p.h @@ -34,6 +34,18 @@ #ifndef JNIBROADCASTRECEIVER_H #define JNIBROADCASTRECEIVER_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + #include <jni.h> #include <QtCore/QObject> #include <android/log.h> diff --git a/src/bluetooth/android/devicediscoverybroadcastreceiver_p.h b/src/bluetooth/android/devicediscoverybroadcastreceiver_p.h index 7500c937..4ed7027d 100644 --- a/src/bluetooth/android/devicediscoverybroadcastreceiver_p.h +++ b/src/bluetooth/android/devicediscoverybroadcastreceiver_p.h @@ -35,6 +35,17 @@ #ifndef DEVICEDISCOVERYBROADCASTRECEIVER_H #define DEVICEDISCOVERYBROADCASTRECEIVER_H +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + #include "android/androidbroadcastreceiver_p.h" #include <QtBluetooth/QBluetoothDeviceDiscoveryAgent> diff --git a/src/bluetooth/android/inputstreamthread_p.h b/src/bluetooth/android/inputstreamthread_p.h index ee840167..e7f7597e 100644 --- a/src/bluetooth/android/inputstreamthread_p.h +++ b/src/bluetooth/android/inputstreamthread_p.h @@ -35,6 +35,17 @@ #ifndef INPUTSTREAMTHREAD_H #define INPUTSTREAMTHREAD_H +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + #include <QtCore/QObject> #include <QtCore/QMutex> #include <QtAndroidExtras/QAndroidJniObject> diff --git a/src/bluetooth/android/jni_android_p.h b/src/bluetooth/android/jni_android_p.h index 4e1e60c6..0a90cfea 100644 --- a/src/bluetooth/android/jni_android_p.h +++ b/src/bluetooth/android/jni_android_p.h @@ -34,6 +34,17 @@ #ifndef JNI_ANDROID_P_H #define JNI_ANDROID_P_H +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + #include <QtAndroidExtras/QAndroidJniEnvironment> #include <QtAndroidExtras/QAndroidJniObject> diff --git a/src/bluetooth/android/localdevicebroadcastreceiver_p.h b/src/bluetooth/android/localdevicebroadcastreceiver_p.h index cf72ff1e..190ae631 100644 --- a/src/bluetooth/android/localdevicebroadcastreceiver_p.h +++ b/src/bluetooth/android/localdevicebroadcastreceiver_p.h @@ -35,6 +35,17 @@ #include <QtBluetooth/QBluetoothAddress> #include <QtBluetooth/QBluetoothLocalDevice> +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + #ifndef LOCALDEVICEBROADCASTRECEIVER_H #define LOCALDEVICEBROADCASTRECEIVER_H diff --git a/src/bluetooth/android/serveracceptancethread_p.h b/src/bluetooth/android/serveracceptancethread_p.h index 1bfa6d61..1adda433 100644 --- a/src/bluetooth/android/serveracceptancethread_p.h +++ b/src/bluetooth/android/serveracceptancethread_p.h @@ -34,6 +34,17 @@ #ifndef SERVERACCEPTANCETHREAD_H #define SERVERACCEPTANCETHREAD_H +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + #include <QtCore/QMutex> #include <QtAndroidExtras/QAndroidJniObject> #include <QtBluetooth/QBluetoothServer> diff --git a/src/bluetooth/android/servicediscoverybroadcastreceiver_p.h b/src/bluetooth/android/servicediscoverybroadcastreceiver_p.h index c753c5a4..273af121 100644 --- a/src/bluetooth/android/servicediscoverybroadcastreceiver_p.h +++ b/src/bluetooth/android/servicediscoverybroadcastreceiver_p.h @@ -34,6 +34,17 @@ #ifndef SERVICEDISCOVERYBROADCASTRECEIVER_H #define SERVICEDISCOVERYBROADCASTRECEIVER_H +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + #include "android/androidbroadcastreceiver_p.h" #include <QtCore/QList> #include <QtBluetooth/QBluetoothDeviceDiscoveryAgent> diff --git a/src/bluetooth/bluez/bluez_data_p.h b/src/bluetooth/bluez/bluez_data_p.h index bce5b732..a220c32a 100644 --- a/src/bluetooth/bluez/bluez_data_p.h +++ b/src/bluetooth/bluez/bluez_data_p.h @@ -34,6 +34,17 @@ #ifndef BLUEZ_DATA_P_H #define BLUEZ_DATA_P_H +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + #include <QtCore/qglobal.h> #include <sys/socket.h> #include <QtBluetooth/QBluetoothUuid> diff --git a/src/bluetooth/bluez/servicemap_p.h b/src/bluetooth/bluez/servicemap_p.h index 5b0bbda1..6ae3afb3 100644 --- a/src/bluetooth/bluez/servicemap_p.h +++ b/src/bluetooth/bluez/servicemap_p.h @@ -34,6 +34,17 @@ #ifndef SERVICEMAP_P_H #define SERVICEMAP_P_H +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + #include <QtCore/QMap> #include <QtCore/QString> #include <QtDBus/QDBusArgument> diff --git a/src/bluetooth/qbluetoothaddress_p.h b/src/bluetooth/qbluetoothaddress_p.h index 4b748231..be641dca 100644 --- a/src/bluetooth/qbluetoothaddress_p.h +++ b/src/bluetooth/qbluetoothaddress_p.h @@ -34,6 +34,17 @@ #ifndef QBLUETOOTHADDRESS_P_H #define QBLUETOOTHADDRESS_P_H +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + #include "qbluetoothaddress.h" QT_BEGIN_NAMESPACE diff --git a/src/bluetooth/qbluetoothdevicediscoveryagent_p.cpp b/src/bluetooth/qbluetoothdevicediscoveryagent_p.cpp index 0f9d9c62..c89c2d37 100644 --- a/src/bluetooth/qbluetoothdevicediscoveryagent_p.cpp +++ b/src/bluetooth/qbluetoothdevicediscoveryagent_p.cpp @@ -71,21 +71,6 @@ void QBluetoothDeviceDiscoveryAgentPrivate::stop() { } -#ifdef QT_BLUEZ_BLUETOOTH -void QBluetoothDeviceDiscoveryAgentPrivate::_q_deviceFound(const QString &address, - const QVariantMap &dict) -{ - Q_UNUSED(address); - Q_UNUSED(dict); -} - -void QBluetoothDeviceDiscoveryAgentPrivate::_q_propertyChanged(const QString &name, - const QDBusVariant &value) -{ - Q_UNUSED(name); - Q_UNUSED(value); -} -#endif QT_END_NAMESPACE diff --git a/src/bluetooth/qbluetoothdevicediscoveryagent_p.h b/src/bluetooth/qbluetoothdevicediscoveryagent_p.h index 398da58d..f25496dc 100644 --- a/src/bluetooth/qbluetoothdevicediscoveryagent_p.h +++ b/src/bluetooth/qbluetoothdevicediscoveryagent_p.h @@ -34,6 +34,17 @@ #ifndef QBLUETOOTHDEVICEDISCOVERYAGENT_P_H #define QBLUETOOTHDEVICEDISCOVERYAGENT_P_H +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + #include "qbluetoothdevicediscoveryagent.h" #ifdef QT_ANDROID_BLUETOOTH #include <QtAndroidExtras/QAndroidJniObject> diff --git a/src/bluetooth/qbluetoothdeviceinfo_p.h b/src/bluetooth/qbluetoothdeviceinfo_p.h index b9b86c45..5b110993 100644 --- a/src/bluetooth/qbluetoothdeviceinfo_p.h +++ b/src/bluetooth/qbluetoothdeviceinfo_p.h @@ -34,6 +34,17 @@ #ifndef QBLUETOOTHDEVICEINFO_P_H #define QBLUETOOTHDEVICEINFO_P_H +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + #include "qbluetoothdeviceinfo.h" #include "qbluetoothaddress.h" #include "qbluetoothuuid.h" diff --git a/src/bluetooth/qbluetoothhostinfo_p.h b/src/bluetooth/qbluetoothhostinfo_p.h index d5bacd30..7eb46bd6 100644 --- a/src/bluetooth/qbluetoothhostinfo_p.h +++ b/src/bluetooth/qbluetoothhostinfo_p.h @@ -34,6 +34,17 @@ #ifndef QBLUETOOTHHOSTINFO_P_H #define QBLUETOOTHHOSTINFO_P_H +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + #include "qbluetoothhostinfo.h" QT_BEGIN_NAMESPACE diff --git a/src/bluetooth/qbluetoothlocaldevice_p.h b/src/bluetooth/qbluetoothlocaldevice_p.h index 637587f5..5d84af7e 100644 --- a/src/bluetooth/qbluetoothlocaldevice_p.h +++ b/src/bluetooth/qbluetoothlocaldevice_p.h @@ -34,6 +34,17 @@ #ifndef QBLUETOOTHLOCALDEVICE_P_H #define QBLUETOOTHLOCALDEVICE_P_H +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + #include <QtBluetooth/qbluetoothglobal.h> #include "qbluetoothlocaldevice.h" diff --git a/src/bluetooth/qbluetoothserver.cpp b/src/bluetooth/qbluetoothserver.cpp index af54c0ac..34108a91 100644 --- a/src/bluetooth/qbluetoothserver.cpp +++ b/src/bluetooth/qbluetoothserver.cpp @@ -218,6 +218,8 @@ QBluetoothServiceInfo QBluetoothServer::listen(const QBluetoothUuid &uuid, const QBluetoothServiceInfo::Sequence protocolDescriptorList; QBluetoothServiceInfo::Sequence protocol; protocol << QVariant::fromValue(QBluetoothUuid(QBluetoothUuid::L2cap)); + if (d->serverType == QBluetoothServiceInfo::L2capProtocol) + protocol << QVariant::fromValue(serverPort()); protocolDescriptorList.append(QVariant::fromValue(protocol)); protocol.clear(); //! [listen] @@ -225,10 +227,10 @@ QBluetoothServiceInfo QBluetoothServer::listen(const QBluetoothUuid &uuid, const //! [listen2] protocol << QVariant::fromValue(QBluetoothUuid(QBluetoothUuid::Rfcomm)) << QVariant::fromValue(quint8(serverPort())); + protocolDescriptorList.append(QVariant::fromValue(protocol)); //! [listen2] } //! [listen3] - protocolDescriptorList.append(QVariant::fromValue(protocol)); serviceInfo.setAttribute(QBluetoothServiceInfo::ProtocolDescriptorList, protocolDescriptorList); bool result = serviceInfo.registerService(); diff --git a/src/bluetooth/qbluetoothserver_p.h b/src/bluetooth/qbluetoothserver_p.h index fb4ec987..75f1bde6 100644 --- a/src/bluetooth/qbluetoothserver_p.h +++ b/src/bluetooth/qbluetoothserver_p.h @@ -34,6 +34,17 @@ #ifndef QBLUETOOTHSERVER_P_H #define QBLUETOOTHSERVER_P_H +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + #include <QtGlobal> #include <QList> #include <QtBluetooth/QBluetoothSocket> diff --git a/src/bluetooth/qbluetoothservicediscoveryagent_p.h b/src/bluetooth/qbluetoothservicediscoveryagent_p.h index 80467484..b027033e 100644 --- a/src/bluetooth/qbluetoothservicediscoveryagent_p.h +++ b/src/bluetooth/qbluetoothservicediscoveryagent_p.h @@ -34,6 +34,17 @@ #ifndef QBLUETOOTHSERVICEDISCOVERYAGENT_P_H #define QBLUETOOTHSERVICEDISCOVERYAGENT_P_H +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + #include "qbluetoothaddress.h" #include "qbluetoothdeviceinfo.h" #include "qbluetoothserviceinfo.h" diff --git a/src/bluetooth/qbluetoothserviceinfo_p.h b/src/bluetooth/qbluetoothserviceinfo_p.h index 5f292c5d..7ff7132c 100644 --- a/src/bluetooth/qbluetoothserviceinfo_p.h +++ b/src/bluetooth/qbluetoothserviceinfo_p.h @@ -34,6 +34,17 @@ #ifndef QBLUETOOTHSERVICEINFO_P_H #define QBLUETOOTHSERVICEINFO_P_H +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + #include "qbluetoothuuid.h" #include "qbluetoothaddress.h" #include "qbluetoothdeviceinfo.h" diff --git a/src/bluetooth/qbluetoothsocket.cpp b/src/bluetooth/qbluetoothsocket.cpp index a0620141..8f6309d4 100644 --- a/src/bluetooth/qbluetoothsocket.cpp +++ b/src/bluetooth/qbluetoothsocket.cpp @@ -564,10 +564,12 @@ void QBluetoothSocket::serviceDiscovered(const QBluetoothServiceInfo &service) { Q_D(QBluetoothSocket); qCDebug(QT_BT) << "FOUND SERVICE!" << service; - if(service.protocolServiceMultiplexer() != 0 || service.serverChannel() != 0) { + if (service.protocolServiceMultiplexer() > 0 || service.serverChannel() > 0) { connectToService(service, d->openMode); d->discoveryAgent->deleteLater(); d->discoveryAgent = 0; + } else { + qCDebug(QT_BT) << "Could not find port/psm for potential remote service"; } } diff --git a/src/bluetooth/qbluetoothsocket_android.cpp b/src/bluetooth/qbluetoothsocket_android.cpp index c98e66dd..ce68d236 100644 --- a/src/bluetooth/qbluetoothsocket_android.cpp +++ b/src/bluetooth/qbluetoothsocket_android.cpp @@ -76,16 +76,127 @@ bool QBluetoothSocketPrivate::ensureNativeSocket(QBluetoothServiceInfo::Protocol void QBluetoothSocketPrivate::connectToService(const QBluetoothAddress &address, const QBluetoothUuid &uuid, - QIODevice::OpenMode openMode) + QIODevice::OpenMode openMode, + int fallbackServiceChannel) { Q_Q(QBluetoothSocket); q->setSocketState(QBluetoothSocket::ConnectingState); - QtConcurrent::run(this, &QBluetoothSocketPrivate::connectToServiceConc, address, uuid, openMode); + QtConcurrent::run(this, &QBluetoothSocketPrivate::connectToServiceConc, + address, uuid, openMode, fallbackServiceChannel); +} + +bool QBluetoothSocketPrivate::fallBackConnect(QAndroidJniObject uuid, int channel) +{ + qCWarning(QT_BT_ANDROID) << "Falling back to workaround."; + + QAndroidJniEnvironment env; + jclass remoteDeviceClazz = env->GetObjectClass(remoteDevice.object()); + jmethodID getClassMethod = env->GetMethodID(remoteDeviceClazz, "getClass", "()Ljava/lang/Class;"); + if (!getClassMethod) { + qCWarning(QT_BT_ANDROID) << "BluetoothDevice.getClass method could not be found."; + return false; + } + + + QAndroidJniObject remoteDeviceClass = QAndroidJniObject(env->CallObjectMethod(remoteDevice.object(), getClassMethod)); + if (!remoteDeviceClass.isValid()) { + qCWarning(QT_BT_ANDROID) << "Could not invoke BluetoothDevice.getClass."; + return false; + } + + jclass classClass = env->FindClass("java/lang/Class"); + jclass integerClass = env->FindClass("java/lang/Integer"); + jfieldID integerType = env->GetStaticFieldID(integerClass, "TYPE", "Ljava/lang/Class;"); + jobject integerObject = env->GetStaticObjectField(integerClass, integerType); + if (!integerObject) { + qCWarning(QT_BT_ANDROID) << "Could not get Integer.TYPE"; + return false; + } + + jobjectArray paramTypes = env->NewObjectArray(1, classClass, integerObject); + if (!paramTypes) { + qCWarning(QT_BT_ANDROID) << "Could not create new Class[]{Integer.TYPE}"; + return false; + } + + QAndroidJniObject parcelUuid("android/os/ParcelUuid", "(Ljava/util/UUID;)V", + uuid.object()); + if (parcelUuid.isValid()) { + jint socketChannel = remoteDevice.callMethod<jint>("getServiceChannel", + "(Landroid/os/ParcelUuid;)I", + parcelUuid.object()); + if (env->ExceptionCheck()) { + env->ExceptionDescribe(); + env->ExceptionClear(); + } + + if (socketChannel + == remoteDevice.getStaticField<jint>("android/bluetooth/BluetoothDevice", "ERROR")) { + qCWarning(QT_BT_ANDROID) << "Cannot determine RFCOMM service channel."; + } else { + qCWarning(QT_BT_ANDROID) << "Using found rfcomm channel" << socketChannel; + channel = socketChannel; + } + } + + QAndroidJniObject method = remoteDeviceClass.callObjectMethod( + "getMethod", + "(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;", + QAndroidJniObject::fromString(QLatin1String("createRfcommSocket")).object<jstring>(), + paramTypes); + if (!method.isValid() || env->ExceptionCheck()) { + qCWarning(QT_BT_ANDROID) << "Could not invoke getMethod"; + if (env->ExceptionCheck()) { + env->ExceptionDescribe(); + env->ExceptionClear(); + } + return false; + } + + jclass methodClass = env->GetObjectClass(method.object()); + jmethodID invokeMethodId = env->GetMethodID( + methodClass, "invoke", + "(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;"); + if (!invokeMethodId) { + qCWarning(QT_BT_ANDROID) << "Could not invoke method."; + return false; + } + + jmethodID valueOfMethodId = env->GetStaticMethodID(integerClass, "valueOf", "(I)Ljava/lang/Integer;"); + jclass objectClass = env->FindClass("java/lang/Object"); + jobjectArray invokeParams = env->NewObjectArray(1, objectClass, env->CallStaticObjectMethod(integerClass, valueOfMethodId, channel)); + + + jobject invokeResult = env->CallObjectMethod(method.object(), invokeMethodId, + remoteDevice.object(), invokeParams); + if (!invokeResult) + { + qCWarning(QT_BT_ANDROID) << "Invoke Resulted with error."; + if (env->ExceptionCheck()) { + env->ExceptionDescribe(); + env->ExceptionClear(); + } + return false; + } + + socketObject = QAndroidJniObject(invokeResult); + socketObject.callMethod<void>("connect"); + if (env->ExceptionCheck()) { + env->ExceptionDescribe(); + env->ExceptionClear(); + + qCWarning(QT_BT_ANDROID) << "Socket connect via workaround failed."; + + return false; + } + + qCWarning(QT_BT_ANDROID) << "Workaround invoked."; + return true; } void QBluetoothSocketPrivate::connectToServiceConc(const QBluetoothAddress &address, - const QBluetoothUuid &uuid, QIODevice::OpenMode openMode) + const QBluetoothUuid &uuid, QIODevice::OpenMode openMode, int fallbackServiceChannel) { Q_Q(QBluetoothSocket); Q_UNUSED(openMode); @@ -152,16 +263,19 @@ void QBluetoothSocketPrivate::connectToServiceConc(const QBluetoothAddress &addr socketObject.callMethod<void>("connect"); if (env->ExceptionCheck()) { - if (env->ExceptionCheck()) { - env->ExceptionDescribe(); - env->ExceptionClear(); - } + env->ExceptionDescribe(); + env->ExceptionClear(); - socketObject = remoteDevice = QAndroidJniObject(); - errorString = QBluetoothSocket::tr("Connection to service failed"); - q->setSocketError(QBluetoothSocket::ServiceNotFoundError); - q->setSocketState(QBluetoothSocket::UnconnectedState); - return; + bool success = fallBackConnect(uuidObject, fallbackServiceChannel); + if (!success) { + errorString = QBluetoothSocket::tr("Connection to service failed"); + socketObject = remoteDevice = QAndroidJniObject(); + q->setSocketError(QBluetoothSocket::ServiceNotFoundError); + q->setSocketState(QBluetoothSocket::UnconnectedState); + + env->ExceptionClear(); //just in case + return; + } } if (inputThread) { diff --git a/src/bluetooth/qbluetoothsocket_p.h b/src/bluetooth/qbluetoothsocket_p.h index 8214d2b5..1eedbfcd 100644 --- a/src/bluetooth/qbluetoothsocket_p.h +++ b/src/bluetooth/qbluetoothsocket_p.h @@ -34,6 +34,17 @@ #ifndef QBLUETOOTHSOCKET_P_H #define QBLUETOOTHSOCKET_P_H +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + #include "qbluetoothsocket.h" #ifdef QT_QNX_BLUETOOTH @@ -82,13 +93,18 @@ public: ~QBluetoothSocketPrivate(); //On QNX and Android we connect using the uuid not the port -#if defined(QT_QNX_BLUETOOTH) || defined(QT_ANDROID_BLUETOOTH) +#if defined(QT_QNX_BLUETOOTH) void connectToService(const QBluetoothAddress &address, const QBluetoothUuid &uuid, QIODevice::OpenMode openMode); +#elif defined(QT_ANDROID_BLUETOOTH) + void connectToService(const QBluetoothAddress &address, const QBluetoothUuid &uuid, + QIODevice::OpenMode openMode, int fallbackServiceChannel = 1); + bool fallBackConnect(QAndroidJniObject uuid, int channel); #else void connectToService(const QBluetoothAddress &address, quint16 port, QIODevice::OpenMode openMode); #endif #ifdef QT_ANDROID_BLUETOOTH - void connectToServiceConc(const QBluetoothAddress &address, const QBluetoothUuid &uuid, QIODevice::OpenMode openMode); + void connectToServiceConc(const QBluetoothAddress &address, const QBluetoothUuid &uuid, + QIODevice::OpenMode openMode, int fallbackServiceChannel = 1); #endif diff --git a/src/bluetooth/qbluetoothtransferreply_bluez_p.h b/src/bluetooth/qbluetoothtransferreply_bluez_p.h index e472f7ab..0a9f9bca 100644 --- a/src/bluetooth/qbluetoothtransferreply_bluez_p.h +++ b/src/bluetooth/qbluetoothtransferreply_bluez_p.h @@ -34,6 +34,17 @@ #ifndef QBLUETOOTHTRANSFERREPLY_BLUEZ_P_H #define QBLUETOOTHTRANSFERREPLY_BLUEZ_P_H +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + #include <QtCore/QIODevice> #include <QtDBus/QtDBus> diff --git a/src/bluetooth/qbluetoothtransferreply_p.h b/src/bluetooth/qbluetoothtransferreply_p.h index caafd06f..caf3890d 100644 --- a/src/bluetooth/qbluetoothtransferreply_p.h +++ b/src/bluetooth/qbluetoothtransferreply_p.h @@ -34,6 +34,17 @@ #ifndef QBLUETOOTHTRANSFERREPLY_P_H #define QBLUETOOTHTRANSFERREPLY_P_H +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + #include "qbluetoothtransferreply.h" QT_BEGIN_NAMESPACE diff --git a/src/bluetooth/qbluetoothtransferreply_qnx_p.h b/src/bluetooth/qbluetoothtransferreply_qnx_p.h index 4211ec5d..d6b4d64b 100644 --- a/src/bluetooth/qbluetoothtransferreply_qnx_p.h +++ b/src/bluetooth/qbluetoothtransferreply_qnx_p.h @@ -35,6 +35,17 @@ #ifndef QBLUETOOTHTRANSFERREPLY_QNX_P_H #define QBLUETOOTHTRANSFERREPLY_QNX_P_H +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + #include <qbluetoothtransferrequest.h> #include <qbluetoothtransfermanager.h> diff --git a/src/bluetooth/qbluetoothtransferrequest_p.h b/src/bluetooth/qbluetoothtransferrequest_p.h index 22896f29..ff146ec7 100644 --- a/src/bluetooth/qbluetoothtransferrequest_p.h +++ b/src/bluetooth/qbluetoothtransferrequest_p.h @@ -34,6 +34,17 @@ #ifndef QBLUETOOTHTRANSFERREQUESTPRIVATE_H #define QBLUETOOTHTRANSFERREQUESTPRIVATE_H +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + #include <QtBluetooth/qbluetoothglobal.h> #include "qbluetoothtransferrequest.h" diff --git a/src/bluetooth/qprivatelinearbuffer_p.h b/src/bluetooth/qprivatelinearbuffer_p.h index 8bf7fbfb..b13e68d3 100644 --- a/src/bluetooth/qprivatelinearbuffer_p.h +++ b/src/bluetooth/qprivatelinearbuffer_p.h @@ -34,6 +34,17 @@ #ifndef QPRIVATELINEARBUFFER_P_H #define QPRIVATELINEARBUFFER_P_H +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + // This is QIODevice's read buffer, optimised for read(), isEmpty() and getChar() class QPrivateLinearBuffer { |