summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--dist/changes-5.3.249
-rw-r--r--src/bluetooth/android/androidbroadcastreceiver_p.h12
-rw-r--r--src/bluetooth/android/devicediscoverybroadcastreceiver_p.h11
-rw-r--r--src/bluetooth/android/inputstreamthread_p.h11
-rw-r--r--src/bluetooth/android/jni_android_p.h11
-rw-r--r--src/bluetooth/android/localdevicebroadcastreceiver_p.h11
-rw-r--r--src/bluetooth/android/serveracceptancethread_p.h11
-rw-r--r--src/bluetooth/android/servicediscoverybroadcastreceiver_p.h11
-rw-r--r--src/bluetooth/bluez/bluez_data_p.h11
-rw-r--r--src/bluetooth/bluez/servicemap_p.h11
-rw-r--r--src/bluetooth/qbluetoothaddress_p.h11
-rw-r--r--src/bluetooth/qbluetoothdevicediscoveryagent_p.cpp15
-rw-r--r--src/bluetooth/qbluetoothdevicediscoveryagent_p.h11
-rw-r--r--src/bluetooth/qbluetoothdeviceinfo_p.h11
-rw-r--r--src/bluetooth/qbluetoothhostinfo_p.h11
-rw-r--r--src/bluetooth/qbluetoothlocaldevice_p.h11
-rw-r--r--src/bluetooth/qbluetoothserver.cpp4
-rw-r--r--src/bluetooth/qbluetoothserver_p.h11
-rw-r--r--src/bluetooth/qbluetoothservicediscoveryagent_p.h11
-rw-r--r--src/bluetooth/qbluetoothserviceinfo_p.h11
-rw-r--r--src/bluetooth/qbluetoothsocket.cpp4
-rw-r--r--src/bluetooth/qbluetoothsocket_android.cpp138
-rw-r--r--src/bluetooth/qbluetoothsocket_p.h20
-rw-r--r--src/bluetooth/qbluetoothtransferreply_bluez_p.h11
-rw-r--r--src/bluetooth/qbluetoothtransferreply_p.h11
-rw-r--r--src/bluetooth/qbluetoothtransferreply_qnx_p.h11
-rw-r--r--src/bluetooth/qbluetoothtransferrequest_p.h11
-rw-r--r--src/bluetooth/qprivatelinearbuffer_p.h11
-rw-r--r--src/imports/bluetooth/qdeclarativebluetoothdiscoverymodel_p.h11
-rw-r--r--src/imports/bluetooth/qdeclarativebluetoothservice_p.h11
-rw-r--r--src/imports/bluetooth/qdeclarativebluetoothsocket_p.h11
-rw-r--r--src/imports/nfc/qdeclarativendeffilter_p.h11
-rw-r--r--src/imports/nfc/qdeclarativendefmimerecord_p.h11
-rw-r--r--src/imports/nfc/qdeclarativendeftextrecord_p.h11
-rw-r--r--src/imports/nfc/qdeclarativendefurirecord_p.h11
-rw-r--r--src/imports/nfc/qdeclarativenearfield_p.h11
-rw-r--r--src/imports/nfc/qdeclarativenearfieldsocket_p.h11
-rw-r--r--src/nfc/qllcpserver_p_p.h11
-rw-r--r--src/nfc/qllcpserver_qnx_p.h11
-rw-r--r--src/nfc/qllcpserver_simulator_p.h11
-rw-r--r--src/nfc/qllcpsocket_p_p.h11
-rw-r--r--src/nfc/qllcpsocket_qnx_p.h11
-rw-r--r--src/nfc/qllcpsocket_simulator_p.h11
-rw-r--r--src/nfc/qndefnfcsmartposterrecord_p.h11
-rw-r--r--src/nfc/qndefrecord_p.h12
-rw-r--r--src/nfc/qnearfieldmanager_emulator_p.h11
-rw-r--r--src/nfc/qnearfieldmanager_p.h11
-rw-r--r--src/nfc/qnearfieldmanager_qnx_p.h11
-rw-r--r--src/nfc/qnearfieldmanager_simulator_p.h11
-rw-r--r--src/nfc/qnearfieldmanagerimpl_p.h11
-rw-r--r--src/nfc/qnearfieldmanagervirtualbase_p.h11
-rw-r--r--src/nfc/qnearfieldsharemanager_p.h11
-rw-r--r--src/nfc/qnearfieldsharemanager_qnx_p.h11
-rw-r--r--src/nfc/qnearfieldsharemanagerimpl_p.h11
-rw-r--r--src/nfc/qnearfieldsharetarget_p.h11
-rw-r--r--src/nfc/qnearfieldsharetarget_qnx_p.h11
-rw-r--r--src/nfc/qnearfieldsharetargetimpl_p.h11
-rw-r--r--src/nfc/qnearfieldtarget_emulator_p.h11
-rw-r--r--src/nfc/qnearfieldtarget_p.h11
-rw-r--r--src/nfc/qnearfieldtarget_qnx_p.h11
-rw-r--r--src/nfc/qnx/qnxnfceventfilter_p.h11
-rw-r--r--src/nfc/qnx/qnxnfcmanager_p.h11
-rw-r--r--src/nfc/qnx/qnxnfcsharemanager_p.h11
-rw-r--r--src/nfc/qtlv_p.h11
-rw-r--r--src/nfc/targetemulator_p.h11
-rw-r--r--tests/bttestui/btlocaldevice.cpp22
67 files changed, 865 insertions, 39 deletions
diff --git a/.gitignore b/.gitignore
index 344041e8..a5f6a7ea 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
+.DS_Store
*.pro.user
*.pro.shared
*~
diff --git a/dist/changes-5.3.2 b/dist/changes-5.3.2
new file mode 100644
index 00000000..e700e85e
--- /dev/null
+++ b/dist/changes-5.3.2
@@ -0,0 +1,49 @@
+Qt 5.3.2 is a bug-fix release. It maintains both forward and backward
+compatibility (source and binary) with Qt 5.3.0 and Qt 5.3.1.
+
+For more details, refer to the online documentation included in this
+distribution. The documentation is also available online:
+
+ http://qt-project.org/doc/qt-5.3
+
+The Qt version 5.3 series is binary compatible with the 5.2.x series.
+Applications compiled for 5.2 will continue to run with 5.3.
+
+Some of the changes listed in this file include issue tracking numbers
+corresponding to tasks in the Qt Bug Tracker:
+
+ http://bugreports.qt-project.org/
+
+Each of these identifiers can be entered in the bug tracker to obtain more
+information about a particular change.
+
+****************************************************************************
+* General *
+****************************************************************************
+
+QtBluetooth
+-----------
+
+ - Removed dead code from the library.
+
+****************************************************************************
+* Platform Specific Changes *
+****************************************************************************
+
+Android
+-------
+
+ - [QTBUG-39815] Removed calls to Android's BluetoothSocket.isConnected().
+ It does not work reliably on all devices and prevented those devices from
+ successfully establishing an RFCOMM socket connection.
+
+ - [QTBUG-40172] Increased robustness of QBluetoothSocket::connectToService()
+ by providing a fallback implementation using private Android APIs which
+ increase the chance of successful connects on some devices.
+
+Linux
+-----
+
+ - Removed undesirable system header includes from the Bluez code base.
+ - Fixed incomplete SDP entries when using L2CP sockets and avoided
+ crash on client side when incomplete SDP entry is encountered.
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
{
diff --git a/src/imports/bluetooth/qdeclarativebluetoothdiscoverymodel_p.h b/src/imports/bluetooth/qdeclarativebluetoothdiscoverymodel_p.h
index 3e3b7dc7..279fb063 100644
--- a/src/imports/bluetooth/qdeclarativebluetoothdiscoverymodel_p.h
+++ b/src/imports/bluetooth/qdeclarativebluetoothdiscoverymodel_p.h
@@ -34,6 +34,17 @@
#ifndef QDECLARATIVECONTACTMODEL_P_H
#define QDECLARATIVECONTACTMODEL_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 <QAbstractListModel>
#include <QQmlParserStatus>
#include <QQmlListProperty>
diff --git a/src/imports/bluetooth/qdeclarativebluetoothservice_p.h b/src/imports/bluetooth/qdeclarativebluetoothservice_p.h
index e349f62c..0e04b790 100644
--- a/src/imports/bluetooth/qdeclarativebluetoothservice_p.h
+++ b/src/imports/bluetooth/qdeclarativebluetoothservice_p.h
@@ -34,6 +34,17 @@
#ifndef QDECLARATIVEBLUETOOTHSERVICE_P_H
#define QDECLARATIVEBLUETOOTHSERVICE_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 <QObject>
#include <qqml.h>
#include <qbluetoothserviceinfo.h>
diff --git a/src/imports/bluetooth/qdeclarativebluetoothsocket_p.h b/src/imports/bluetooth/qdeclarativebluetoothsocket_p.h
index 1d34c596..35a8c504 100644
--- a/src/imports/bluetooth/qdeclarativebluetoothsocket_p.h
+++ b/src/imports/bluetooth/qdeclarativebluetoothsocket_p.h
@@ -34,6 +34,17 @@
#ifndef QDECLARATIVEBLUETOOTHSOCKET_P_H
#define QDECLARATIVEBLUETOOTHSOCKET_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 <QObject>
#include <qqml.h>
#include <QQmlParserStatus>
diff --git a/src/imports/nfc/qdeclarativendeffilter_p.h b/src/imports/nfc/qdeclarativendeffilter_p.h
index 60227d0d..e5b2fced 100644
--- a/src/imports/nfc/qdeclarativendeffilter_p.h
+++ b/src/imports/nfc/qdeclarativendeffilter_p.h
@@ -34,6 +34,17 @@
#ifndef QDECLARATIVENDEFFILTER_P_H
#define QDECLARATIVENDEFFILTER_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/QObject>
#include <qqmlndefrecord.h>
diff --git a/src/imports/nfc/qdeclarativendefmimerecord_p.h b/src/imports/nfc/qdeclarativendefmimerecord_p.h
index bfcbc8a5..8438a1f6 100644
--- a/src/imports/nfc/qdeclarativendefmimerecord_p.h
+++ b/src/imports/nfc/qdeclarativendefmimerecord_p.h
@@ -34,6 +34,17 @@
#ifndef QDECLARATIVENDEFMIMERECORD_P_H
#define QDECLARATIVENDEFMIMERECORD_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 <qqmlndefrecord.h>
QT_USE_NAMESPACE
diff --git a/src/imports/nfc/qdeclarativendeftextrecord_p.h b/src/imports/nfc/qdeclarativendeftextrecord_p.h
index ef097792..ca11c017 100644
--- a/src/imports/nfc/qdeclarativendeftextrecord_p.h
+++ b/src/imports/nfc/qdeclarativendeftextrecord_p.h
@@ -34,6 +34,17 @@
#ifndef QDECLARATIVENDEFTEXTRECORD_P_H
#define QDECLARATIVENDEFTEXTRECORD_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 <qqmlndefrecord.h>
#include <qndefnfctextrecord.h>
diff --git a/src/imports/nfc/qdeclarativendefurirecord_p.h b/src/imports/nfc/qdeclarativendefurirecord_p.h
index 62c31872..02abe36e 100644
--- a/src/imports/nfc/qdeclarativendefurirecord_p.h
+++ b/src/imports/nfc/qdeclarativendefurirecord_p.h
@@ -34,6 +34,17 @@
#ifndef QDECLARATIVENDEFURIRECORD_P_H
#define QDECLARATIVENDEFURIRECORD_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 <qqmlndefrecord.h>
#include <qndefnfcurirecord.h>
diff --git a/src/imports/nfc/qdeclarativenearfield_p.h b/src/imports/nfc/qdeclarativenearfield_p.h
index d17d14c9..2e151e36 100644
--- a/src/imports/nfc/qdeclarativenearfield_p.h
+++ b/src/imports/nfc/qdeclarativenearfield_p.h
@@ -34,6 +34,17 @@
#ifndef QDECLARATIVENEARFIELD_P_H
#define QDECLARATIVENEARFIELD_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/QObject>
#include <QtQml/qqml.h>
#include <QtQml/QQmlParserStatus>
diff --git a/src/imports/nfc/qdeclarativenearfieldsocket_p.h b/src/imports/nfc/qdeclarativenearfieldsocket_p.h
index 07506848..e6664d8e 100644
--- a/src/imports/nfc/qdeclarativenearfieldsocket_p.h
+++ b/src/imports/nfc/qdeclarativenearfieldsocket_p.h
@@ -34,6 +34,17 @@
#ifndef QDECLARATIVENEARFIELDSOCKET_P_H
#define QDECLARATIVENEARFIELDSOCKET_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/QObject>
#include <QtQml/qqml.h>
#include <QtQml/QQmlParserStatus>
diff --git a/src/nfc/qllcpserver_p_p.h b/src/nfc/qllcpserver_p_p.h
index a8bb83ed..fb95bea5 100644
--- a/src/nfc/qllcpserver_p_p.h
+++ b/src/nfc/qllcpserver_p_p.h
@@ -34,6 +34,17 @@
#ifndef QLLCPSERVER_P_H
#define QLLCPSERVER_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 "qnfcglobal.h"
#include "qllcpserver_p.h"
diff --git a/src/nfc/qllcpserver_qnx_p.h b/src/nfc/qllcpserver_qnx_p.h
index 47501b4c..005d23d3 100644
--- a/src/nfc/qllcpserver_qnx_p.h
+++ b/src/nfc/qllcpserver_qnx_p.h
@@ -34,6 +34,17 @@
#ifndef QLLCPSERVER_QNX_P_H
#define QLLCPSERVER_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 "qllcpserver_p.h"
#include "nfc/nfc.h"
diff --git a/src/nfc/qllcpserver_simulator_p.h b/src/nfc/qllcpserver_simulator_p.h
index 385d3ac2..6381d403 100644
--- a/src/nfc/qllcpserver_simulator_p.h
+++ b/src/nfc/qllcpserver_simulator_p.h
@@ -34,6 +34,17 @@
#ifndef QLLCPSERVER_P_H
#define QLLCPSERVER_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 <qconnectivityglobal.h>
#include "qllcpserver_p.h"
diff --git a/src/nfc/qllcpsocket_p_p.h b/src/nfc/qllcpsocket_p_p.h
index 371a6d7b..7d10278d 100644
--- a/src/nfc/qllcpsocket_p_p.h
+++ b/src/nfc/qllcpsocket_p_p.h
@@ -34,6 +34,17 @@
#ifndef QLLCPSOCKET_P_H
#define QLLCPSOCKET_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 "qnfcglobal.h"
#include "qllcpsocket_p.h"
diff --git a/src/nfc/qllcpsocket_qnx_p.h b/src/nfc/qllcpsocket_qnx_p.h
index 5f1a3483..de552eb3 100644
--- a/src/nfc/qllcpsocket_qnx_p.h
+++ b/src/nfc/qllcpsocket_qnx_p.h
@@ -34,6 +34,17 @@
#ifndef QLLCPSOCKET_QNX_P_H
#define QLLCPSOCKET_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 "qllcpsocket_p.h"
#include "qnearfieldtarget_qnx_p.h"
diff --git a/src/nfc/qllcpsocket_simulator_p.h b/src/nfc/qllcpsocket_simulator_p.h
index b8f5386f..76af2f01 100644
--- a/src/nfc/qllcpsocket_simulator_p.h
+++ b/src/nfc/qllcpsocket_simulator_p.h
@@ -34,6 +34,17 @@
#ifndef QLLCPSOCKET_P_H
#define QLLCPSOCKET_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 <qconnectivityglobal.h>
#include "qllcpsocket_p.h"
diff --git a/src/nfc/qndefnfcsmartposterrecord_p.h b/src/nfc/qndefnfcsmartposterrecord_p.h
index 36356295..093a4253 100644
--- a/src/nfc/qndefnfcsmartposterrecord_p.h
+++ b/src/nfc/qndefnfcsmartposterrecord_p.h
@@ -34,6 +34,17 @@
#ifndef QNDEFNFCSMARTPOSTERRECORD_P_H
#define QNDEFNFCSMARTPOSTERRECORD_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.
+//
+
QT_BEGIN_NAMESPACE
class QNdefNfcActRecord : public QNdefRecord
diff --git a/src/nfc/qndefrecord_p.h b/src/nfc/qndefrecord_p.h
index 034e9ce1..04e9c72c 100644
--- a/src/nfc/qndefrecord_p.h
+++ b/src/nfc/qndefrecord_p.h
@@ -31,10 +31,20 @@
**
****************************************************************************/
-
#ifndef QNDEFRECORD_P_H
#define QNDEFRECORD_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 "qnfcglobal.h"
#include <QtCore/QSharedData>
diff --git a/src/nfc/qnearfieldmanager_emulator_p.h b/src/nfc/qnearfieldmanager_emulator_p.h
index a6f369b8..b69bf8a9 100644
--- a/src/nfc/qnearfieldmanager_emulator_p.h
+++ b/src/nfc/qnearfieldmanager_emulator_p.h
@@ -34,6 +34,17 @@
#ifndef QNEARFIELDMANAGER_EMULATOR_H
#define QNEARFIELDMANAGER_EMULATOR_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 "qnearfieldmanagervirtualbase_p.h"
#include "qnearfieldtarget.h"
#include "qndeffilter.h"
diff --git a/src/nfc/qnearfieldmanager_p.h b/src/nfc/qnearfieldmanager_p.h
index 2eb13be6..97b2899c 100644
--- a/src/nfc/qnearfieldmanager_p.h
+++ b/src/nfc/qnearfieldmanager_p.h
@@ -34,6 +34,17 @@
#ifndef QNEARFIELDMANAGER_P_H
#define QNEARFIELDMANAGER_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 "qnearfieldmanager.h"
#include "qnearfieldtarget.h"
#include "qndefrecord.h"
diff --git a/src/nfc/qnearfieldmanager_qnx_p.h b/src/nfc/qnearfieldmanager_qnx_p.h
index d0cd3f80..5d78ece6 100644
--- a/src/nfc/qnearfieldmanager_qnx_p.h
+++ b/src/nfc/qnearfieldmanager_qnx_p.h
@@ -34,6 +34,17 @@
#ifndef QNEARFIELDMANAGER_QNX_P_H
#define QNEARFIELDMANAGER_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 "qnearfieldmanager_p.h"
#include "qnearfieldmanager.h"
#include "qnearfieldtarget.h"
diff --git a/src/nfc/qnearfieldmanager_simulator_p.h b/src/nfc/qnearfieldmanager_simulator_p.h
index d7cf2f27..63ef977d 100644
--- a/src/nfc/qnearfieldmanager_simulator_p.h
+++ b/src/nfc/qnearfieldmanager_simulator_p.h
@@ -34,6 +34,17 @@
#ifndef QNEARFIELDMANAGER_SIMULATOR_P_H
#define QNEARFIELDMANAGER_SIMULATOR_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 "qnearfieldmanagervirtualbase_p.h"
#include <QtCore/QWeakPointer>
diff --git a/src/nfc/qnearfieldmanagerimpl_p.h b/src/nfc/qnearfieldmanagerimpl_p.h
index 398ae18a..13fbd4ff 100644
--- a/src/nfc/qnearfieldmanagerimpl_p.h
+++ b/src/nfc/qnearfieldmanagerimpl_p.h
@@ -34,6 +34,17 @@
#ifndef QNEARFIELDMANAGERIMPL_P_H
#define QNEARFIELDMANAGERIMPL_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 "qnearfieldmanager_p.h"
QT_BEGIN_NAMESPACE
diff --git a/src/nfc/qnearfieldmanagervirtualbase_p.h b/src/nfc/qnearfieldmanagervirtualbase_p.h
index b3bf2106..52bb19f0 100644
--- a/src/nfc/qnearfieldmanagervirtualbase_p.h
+++ b/src/nfc/qnearfieldmanagervirtualbase_p.h
@@ -34,6 +34,17 @@
#ifndef QNEARFIELDMANAGERVIRTUALBASE_P_H
#define QNEARFIELDMANAGERVIRTUALBASE_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 "qnearfieldmanager_p.h"
#include <QtCore/QMetaMethod>
diff --git a/src/nfc/qnearfieldsharemanager_p.h b/src/nfc/qnearfieldsharemanager_p.h
index dcd250bb..f9f5c90b 100644
--- a/src/nfc/qnearfieldsharemanager_p.h
+++ b/src/nfc/qnearfieldsharemanager_p.h
@@ -34,6 +34,17 @@
#ifndef QNEARFIELDSHAREMANAGER_P_H_
#define QNEARFIELDSHAREMANAGER_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 "qnearfieldsharemanager.h"
#include <QtCore/QObject>
diff --git a/src/nfc/qnearfieldsharemanager_qnx_p.h b/src/nfc/qnearfieldsharemanager_qnx_p.h
index dfe14f50..9478bbdb 100644
--- a/src/nfc/qnearfieldsharemanager_qnx_p.h
+++ b/src/nfc/qnearfieldsharemanager_qnx_p.h
@@ -34,6 +34,17 @@
#ifndef QNEARFIELDSHAREMANAGER_QNX_P_H_
#define QNEARFIELDSHAREMANAGER_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 "qnearfieldsharemanager_p.h"
#include <bb/system/NfcShareManager>
diff --git a/src/nfc/qnearfieldsharemanagerimpl_p.h b/src/nfc/qnearfieldsharemanagerimpl_p.h
index dbadee72..dd350834 100644
--- a/src/nfc/qnearfieldsharemanagerimpl_p.h
+++ b/src/nfc/qnearfieldsharemanagerimpl_p.h
@@ -34,6 +34,17 @@
#ifndef QNEARFIELDSHAREMANAGERIMPL_P_H_
#define QNEARFIELDSHAREMANAGERIMPL_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 "qnearfieldsharemanager_p.h"
QT_BEGIN_NAMESPACE
diff --git a/src/nfc/qnearfieldsharetarget_p.h b/src/nfc/qnearfieldsharetarget_p.h
index 45cd3ac5..aa28ee2b 100644
--- a/src/nfc/qnearfieldsharetarget_p.h
+++ b/src/nfc/qnearfieldsharetarget_p.h
@@ -35,6 +35,17 @@
#ifndef QNEARFIELDSHARETARGET_P_H
#define QNEARFIELDSHARETARGET_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 "qnearfieldsharetarget.h"
QT_BEGIN_NAMESPACE
diff --git a/src/nfc/qnearfieldsharetarget_qnx_p.h b/src/nfc/qnearfieldsharetarget_qnx_p.h
index dc20552c..3afd6adb 100644
--- a/src/nfc/qnearfieldsharetarget_qnx_p.h
+++ b/src/nfc/qnearfieldsharetarget_qnx_p.h
@@ -35,6 +35,17 @@
#ifndef QNEARFIELDSHARETARGET_QNX_P_H
#define QNEARFIELDSHARETARGET_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 "qnearfieldsharetarget_p.h"
#include <bb/system/NfcShareManager>
diff --git a/src/nfc/qnearfieldsharetargetimpl_p.h b/src/nfc/qnearfieldsharetargetimpl_p.h
index a93357d4..5eddf0eb 100644
--- a/src/nfc/qnearfieldsharetargetimpl_p.h
+++ b/src/nfc/qnearfieldsharetargetimpl_p.h
@@ -35,6 +35,17 @@
#ifndef QNEARFIELDSHARETARGETIMPL_P_H
#define QNEARFIELDSHARETARGETIMPL_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 "qnearfieldsharetarget_p.h"
QT_BEGIN_NAMESPACE
diff --git a/src/nfc/qnearfieldtarget_emulator_p.h b/src/nfc/qnearfieldtarget_emulator_p.h
index ee23b232..aba30b60 100644
--- a/src/nfc/qnearfieldtarget_emulator_p.h
+++ b/src/nfc/qnearfieldtarget_emulator_p.h
@@ -34,6 +34,17 @@
#ifndef QNEARFIELDTARGET_EMULATOR_P_H
#define QNEARFIELDTARGET_EMULATOR_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 "qnearfieldtagtype1_p.h"
#include "qnearfieldtagtype2_p.h"
#include "targetemulator_p.h"
diff --git a/src/nfc/qnearfieldtarget_p.h b/src/nfc/qnearfieldtarget_p.h
index 0e079a02..48b4a943 100644
--- a/src/nfc/qnearfieldtarget_p.h
+++ b/src/nfc/qnearfieldtarget_p.h
@@ -34,6 +34,17 @@
#ifndef QNEARFIELDTARGET_P_H
#define QNEARFIELDTARGET_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 "qnfcglobal.h"
#include "qnearfieldtarget.h"
diff --git a/src/nfc/qnearfieldtarget_qnx_p.h b/src/nfc/qnearfieldtarget_qnx_p.h
index 0298b147..239153be 100644
--- a/src/nfc/qnearfieldtarget_qnx_p.h
+++ b/src/nfc/qnearfieldtarget_qnx_p.h
@@ -34,6 +34,17 @@
#ifndef QNEARFIELDTARGET_QNX_H
#define QNEARFIELDTARGET_QNX_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 <qnearfieldtarget.h>
#include <qnearfieldtarget_p.h>
#include <qndefmessage.h>
diff --git a/src/nfc/qnx/qnxnfceventfilter_p.h b/src/nfc/qnx/qnxnfceventfilter_p.h
index 7bb2fe2d..4349ea71 100644
--- a/src/nfc/qnx/qnxnfceventfilter_p.h
+++ b/src/nfc/qnx/qnxnfceventfilter_p.h
@@ -34,6 +34,17 @@
#ifndef QNXNFCEVENTFILTER_H
#define QNXNFCEVENTFILTER_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 <QAbstractNativeEventFilter>
#include <QAbstractEventDispatcher>
//#include "qnxnfcmanager_p.h"
diff --git a/src/nfc/qnx/qnxnfcmanager_p.h b/src/nfc/qnx/qnxnfcmanager_p.h
index 2639fbff..4253ba1a 100644
--- a/src/nfc/qnx/qnxnfcmanager_p.h
+++ b/src/nfc/qnx/qnxnfcmanager_p.h
@@ -34,6 +34,17 @@
#ifndef QNXNFCMANAGER_H
#define QNXNFCMANAGER_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 "nfc/nfc_types.h"
#include "nfc/nfc.h"
#include <QSocketNotifier>
diff --git a/src/nfc/qnx/qnxnfcsharemanager_p.h b/src/nfc/qnx/qnxnfcsharemanager_p.h
index 493af31c..7b70eca6 100644
--- a/src/nfc/qnx/qnxnfcsharemanager_p.h
+++ b/src/nfc/qnx/qnxnfcsharemanager_p.h
@@ -34,6 +34,17 @@
#ifndef QNXNFCSHAREMANAGER_P_H
#define QNXNFCSHAREMANAGER_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 "qnearfieldsharemanager.h"
#include <bb/system/NfcShareManager>
#include <QFileInfo>
diff --git a/src/nfc/qtlv_p.h b/src/nfc/qtlv_p.h
index b4409a7f..082c4e77 100644
--- a/src/nfc/qtlv_p.h
+++ b/src/nfc/qtlv_p.h
@@ -34,6 +34,17 @@
#ifndef QTLV_P_H
#define QTLV_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 "qnfcglobal.h"
#include "qnearfieldtarget.h"
diff --git a/src/nfc/targetemulator_p.h b/src/nfc/targetemulator_p.h
index 8006aadb..cfeb5413 100644
--- a/src/nfc/targetemulator_p.h
+++ b/src/nfc/targetemulator_p.h
@@ -34,6 +34,17 @@
#ifndef TARGETEMULATOR_P_H
#define TARGETEMULATOR_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/QtGlobal>
#include <QtCore/QByteArray>
#include <QtNfc/qnfcglobal.h>
diff --git a/tests/bttestui/btlocaldevice.cpp b/tests/bttestui/btlocaldevice.cpp
index 2f7725c4..247c00e6 100644
--- a/tests/bttestui/btlocaldevice.cpp
+++ b/tests/bttestui/btlocaldevice.cpp
@@ -41,6 +41,9 @@
//same uuid as examples/bluetooth/btchat
#define TEST_SERVICE_UUID "e8e10f95-1a70-4b27-9ccf-02010264e9c8"
+#define SOCKET_PROTOCOL QBluetoothServiceInfo::RfcommProtocol
+//#define SOCKET_PROTOCOL QBluetoothServiceInfo::L2capProtocol
+
BtLocalDevice::BtLocalDevice(QObject *parent) :
QObject(parent)
{
@@ -81,7 +84,7 @@ BtLocalDevice::BtLocalDevice(QObject *parent) :
connect(serviceAgent, SIGNAL(error(QBluetoothServiceDiscoveryAgent::Error)),
this, SLOT(serviceDiscoveryError(QBluetoothServiceDiscoveryAgent::Error)));
- socket = new QBluetoothSocket(this);
+ socket = new QBluetoothSocket(SOCKET_PROTOCOL, this);
connect(socket, SIGNAL(stateChanged(QBluetoothSocket::SocketState)),
this, SLOT(socketStateChanged(QBluetoothSocket::SocketState)));
connect(socket, SIGNAL(error(QBluetoothSocket::SocketError)),
@@ -90,7 +93,7 @@ BtLocalDevice::BtLocalDevice(QObject *parent) :
connect(socket, SIGNAL(disconnected()), this, SLOT(socketDisconnected()));
connect(socket, SIGNAL(readyRead()), this, SLOT(readData()));
- server = new QBluetoothServer(QBluetoothServiceInfo::RfcommProtocol, this);
+ server = new QBluetoothServer(SOCKET_PROTOCOL, this);
server->setSecurityFlags(QBluetooth::NoSecurity);
connect(server, SIGNAL(newConnection()), this, SLOT(serverNewConnection()));
connect(server, SIGNAL(error(QBluetoothServer::Error)),
@@ -550,16 +553,21 @@ void BtLocalDevice::serverListenPort()
QBluetoothServiceInfo::Sequence protocolDescriptorList;
QBluetoothServiceInfo::Sequence protocol;
protocol << QVariant::fromValue(QBluetoothUuid(QBluetoothUuid::L2cap));
+ if (server->serverType() == QBluetoothServiceInfo::L2capProtocol)
+ protocol << QVariant::fromValue(server->serverPort());
protocolDescriptorList.append(QVariant::fromValue(protocol));
- protocol.clear();
- protocol << QVariant::fromValue(QBluetoothUuid(QBluetoothUuid::Rfcomm))
- << QVariant::fromValue(quint8(server->serverPort()));
- protocolDescriptorList.append(QVariant::fromValue(protocol));
+
+ if (server->serverType() == QBluetoothServiceInfo::RfcommProtocol) {
+ protocol.clear();
+ protocol << QVariant::fromValue(QBluetoothUuid(QBluetoothUuid::Rfcomm))
+ << QVariant::fromValue(quint8(server->serverPort()));
+ protocolDescriptorList.append(QVariant::fromValue(protocol));
+ }
serviceInfo.setAttribute(QBluetoothServiceInfo::ProtocolDescriptorList,
protocolDescriptorList);
//Register service
- qDebug() << "###### Registering service on" << localDevice->address().toString();
+ qDebug() << "###### Registering service on" << localDevice->address().toString() << server->serverPort();
bool result = serviceInfo.registerService(localDevice->address());
if (!result) {
server->close();