summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@theqtcompany.com>2014-11-27 18:28:25 +0100
committerFrederik Gladhorn <frederik.gladhorn@theqtcompany.com>2014-11-27 18:28:25 +0100
commit3964a4a29d1237404bf554bb0b64d7de1d49155c (patch)
tree927c389d624826e08a1e293ef3fa3d2d4dc39ee1
parent0e3046f29b0e86affeb33c8f6687618cfd1dfae2 (diff)
parent73563f571e6dfd37a0e4cf90f4679d9901b9233c (diff)
Merge remote-tracking branch 'origin/5.4' into dev
-rw-r--r--dist/changes-5.4.099
-rw-r--r--examples/bluetooth/lowenergyscanner/assets/Characteristics.qml3
-rw-r--r--examples/bluetooth/lowenergyscanner/assets/Services.qml8
-rw-r--r--examples/bluetooth/lowenergyscanner/device.cpp7
-rw-r--r--examples/bluetooth/lowenergyscanner/device.h2
-rw-r--r--src/bluetooth/bluez/hcimanager.cpp1
-rw-r--r--src/bluetooth/qbluetooth.cpp1
-rw-r--r--src/bluetooth/qbluetoothtransferreply.cpp3
-rw-r--r--src/bluetooth/qbluetoothuuid.cpp7
-rw-r--r--src/bluetooth/qlowenergycontroller_bluez.cpp11
-rw-r--r--src/bluetooth/qlowenergycontroller_p.h2
11 files changed, 132 insertions, 12 deletions
diff --git a/dist/changes-5.4.0 b/dist/changes-5.4.0
new file mode 100644
index 00000000..78809827
--- /dev/null
+++ b/dist/changes-5.4.0
@@ -0,0 +1,99 @@
+Qt 5.4 introduces many new features and improvements as well as bugfixes
+over the 5.3.x series. 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.4
+
+The Qt version 5.4 series is binary compatible with the 5.3.x series.
+Applications compiled for 5.3 will continue to run with 5.4.
+
+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.
+
+****************************************************************************
+* Library *
+****************************************************************************
+
+QtBluetooth
+-----------
+
+ - Bluetooth Low Energy Support added:
+ * Connect/disconnect to peripherals supported.
+ * Services on Peripheral can be discovered and interacted with.
+ * BlueZ on Linux is the only currently supported platform.
+ Minimal requirement are a Linux kernel v 3.5+ and BlueZ version 4.101+.
+ More platforms will be added by future Qt releases.
+ * The feature/API remains in Tech Preview stage throughout the Qt 5.4
+ release. Some API elements may still change in future releases.
+
+ - Fixed documentation throughout all classes.
+
+ - General:
+ * Bluetooth Low Energy scanner example has been added.
+ * Heart Listener Bluetooth Low Energy Heart Belt example has been added.
+
+ - QBluetoothAddress:
+ * QDebug streaming operator added.
+
+ - QBluetoothDeviceInfo:
+ * QBluetooth::CoreConfiguration enum added.
+ * CoreConfiguration attribute added.
+
+ - QBluetoothServiceDiscoveryAgent:
+ * Fixed cases where Bluez doesn't provide service names for given
+ Bluetooth service class uuid.
+
+ - QBLuetoothSocket:
+ * [QTBUG-32704] Fixed behavior of isReadable()/isOpen()/isWritable().
+ So far, these functions returned wrong values.
+
+ - QBluetoothTransferReply:
+ * QBluetoothTransferReply::error() signal added.
+ * QBluetoothTransferReply::SessionError value added to TransferError enum.
+ * QBluetoothTransferReply::TransferError enum declared as as meta type.
+ * Fixed a memory leak on Bluez and QNX.
+ * Fixed segmentation fault if passed QIODevice was 0.
+
+ - QBluetoothUuid:
+ * Added QBluetoothUuid::protocolToString(QBluetoothUuid::ProtocolUuid)
+ which returns a human-readable string for the given protocol uuid.
+ * Various Bluetooth Low Energy related API elements added. This includes
+ two new constructors, the DescriptorType and CharacteristicType enum,
+ various values for ServiceClassUuid enum and helper functions to
+ handle the extended range of new enums.
+
+QtNfc
+-----
+
+ - General:
+ * Fixed reference error bug in NFC poster example
+
+
+****************************************************************************
+* Platform Specific Changes *
+****************************************************************************
+
+Android
+-------
+
+ - Fixed broken QBluetoothServer::isListening(). It returned false right
+ after a successful call to listen().
+
+Bluez/Linux
+-----------
+
+ - API ported to Bluez 5.x.
+
+ - Fixed license issue.
+
+ - QBluetoothDeviceDiscoveryAgent:
+ * Add support to enable detection of Bluetooth Low Energy devices.
+
+ - QBluetoothSocket:
+ * Fixed case where port L2CP port number was not converted to little-endian.
+ This bug affected big-endian platforms.
diff --git a/examples/bluetooth/lowenergyscanner/assets/Characteristics.qml b/examples/bluetooth/lowenergyscanner/assets/Characteristics.qml
index ac3b7151..8e6e2868 100644
--- a/examples/bluetooth/lowenergyscanner/assets/Characteristics.qml
+++ b/examples/bluetooth/lowenergyscanner/assets/Characteristics.qml
@@ -141,10 +141,11 @@ Rectangle {
id: menu
anchors.bottom: parent.bottom
menuWidth: parent.width
- menuText: "Scanning"
+ menuText: device.update
menuHeight: (parent.height/6)
onButtonClick: {
pageLoader.source = "Services.qml"
+ device.update = "Back"
}
}
}
diff --git a/examples/bluetooth/lowenergyscanner/assets/Services.qml b/examples/bluetooth/lowenergyscanner/assets/Services.qml
index a433d445..e3e05cac 100644
--- a/examples/bluetooth/lowenergyscanner/assets/Services.qml
+++ b/examples/bluetooth/lowenergyscanner/assets/Services.qml
@@ -76,10 +76,6 @@ Rectangle {
else
info.visible = false;
}
-
- onDisconnected: {
- pageLoader.source = "main.qml"
- }
}
ListView {
@@ -137,10 +133,12 @@ Rectangle {
id: menu
anchors.bottom: parent.bottom
menuWidth: parent.width
- menuText: "Back"
+ menuText: device.update
menuHeight: (parent.height/6)
onButtonClick: {
device.disconnectFromDevice()
+ pageLoader.source = "main.qml"
+ device.update = "Search"
}
}
}
diff --git a/examples/bluetooth/lowenergyscanner/device.cpp b/examples/bluetooth/lowenergyscanner/device.cpp
index c8cd17bd..0891f040 100644
--- a/examples/bluetooth/lowenergyscanner/device.cpp
+++ b/examples/bluetooth/lowenergyscanner/device.cpp
@@ -155,7 +155,7 @@ void Device::scanServices(const QString &address)
m_services.clear();
emit servicesUpdated();
- setUpdate("Connecting to device...");
+ setUpdate("Back\n(Connecting to device...)");
if (controller && controller->remoteAddress() != currentDevice.getDevice().address()) {
controller->disconnectFromDevice();
@@ -209,7 +209,7 @@ void Device::addLowEnergyService(const QBluetoothUuid &serviceUuid)
void Device::serviceScanDone()
{
- setUpdate("Service scan done!");
+ setUpdate("Back\n(Service scan done!)");
// force UI in case we didn't find anything
if (m_services.isEmpty())
emit servicesUpdated();
@@ -238,6 +238,7 @@ void Device::connectToService(const QString &uuid)
connect(service, SIGNAL(stateChanged(QLowEnergyService::ServiceState)),
this, SLOT(serviceDetailsDiscovered(QLowEnergyService::ServiceState)));
service->discoverDetails();
+ setUpdate("Back\n(Discovering details...)");
//! [les-service-3]
return;
}
@@ -254,7 +255,7 @@ void Device::connectToService(const QString &uuid)
void Device::deviceConnected()
{
- setUpdate("Discovering services!");
+ setUpdate("Back\n(Discovering services...)");
connected = true;
//! [les-service-2]
controller->discoverServices();
diff --git a/examples/bluetooth/lowenergyscanner/device.h b/examples/bluetooth/lowenergyscanner/device.h
index 049d1c61..a12f9e0e 100644
--- a/examples/bluetooth/lowenergyscanner/device.h
+++ b/examples/bluetooth/lowenergyscanner/device.h
@@ -63,7 +63,7 @@ class Device: public QObject
Q_PROPERTY(QVariant devicesList READ getDevices NOTIFY devicesUpdated)
Q_PROPERTY(QVariant servicesList READ getServices NOTIFY servicesUpdated)
Q_PROPERTY(QVariant characteristicList READ getCharacteristics NOTIFY characteristicsUpdated)
- Q_PROPERTY(QString update READ getUpdate NOTIFY updateChanged)
+ Q_PROPERTY(QString update READ getUpdate WRITE setUpdate NOTIFY updateChanged)
Q_PROPERTY(bool useRandomAddress READ isRandomAddress WRITE setRandomAddress NOTIFY randomAddressChanged)
Q_PROPERTY(bool state READ state NOTIFY stateChanged)
Q_PROPERTY(bool controllerError READ hasControllerError)
diff --git a/src/bluetooth/bluez/hcimanager.cpp b/src/bluetooth/bluez/hcimanager.cpp
index 449f0825..17d54a4b 100644
--- a/src/bluetooth/bluez/hcimanager.cpp
+++ b/src/bluetooth/bluez/hcimanager.cpp
@@ -150,6 +150,7 @@ bool HciManager::monitorEvent(HciManager::HciEvent event)
return false;
// this event is already enabled
+ // TODO runningEvents does not seem to be used
if (runningEvents.contains(event))
return true;
diff --git a/src/bluetooth/qbluetooth.cpp b/src/bluetooth/qbluetooth.cpp
index d418adc1..ea3900e1 100644
--- a/src/bluetooth/qbluetooth.cpp
+++ b/src/bluetooth/qbluetooth.cpp
@@ -72,6 +72,7 @@ namespace QBluetooth {
/*!
\typedef QLowEnergyHandle
\relates QBluetooth
+ \since 5.4
Typedef for Bluetooth Low Energy ATT attribute handles.
*/
diff --git a/src/bluetooth/qbluetoothtransferreply.cpp b/src/bluetooth/qbluetoothtransferreply.cpp
index 6c5c83a2..af1bf828 100644
--- a/src/bluetooth/qbluetoothtransferreply.cpp
+++ b/src/bluetooth/qbluetoothtransferreply.cpp
@@ -64,7 +64,8 @@ QT_BEGIN_NAMESPACE
\value UserCanceledTransferError User terminated the transfer.
\value IODeviceNotReadableError File was not open before initiating the sending command.
\value ResourceBusyError Unable to access the resource..
- \value SessionError An error occurred during the handling of the session.
+ \value SessionError An error occurred during the handling of the session. This enum was
+ introduced by Qt 5.4.
*/
diff --git a/src/bluetooth/qbluetoothuuid.cpp b/src/bluetooth/qbluetoothuuid.cpp
index 3883b47b..f4840428 100644
--- a/src/bluetooth/qbluetoothuuid.cpp
+++ b/src/bluetooth/qbluetoothuuid.cpp
@@ -99,7 +99,8 @@ Q_GLOBAL_STATIC_WITH_ARGS(QUuid, baseUuid, ("{00000000-0000-1000-8000-00805F9B34
it can be used as a value for either of the above service attributes. Such a dual use has historical reasons
but is no longer permissible for newer UUIDs.
- The list below explicitly states as what type each UUID shall be used.
+ The list below explicitly states as what type each UUID shall be used. Bluetooth Low Energy related values
+ starting with 0x18 were introduced by Qt 5.4
\value ServiceDiscoveryServer Service discovery server UUID (service)
\value BrowseGroupDescriptor Browser group descriptor (service)
@@ -214,6 +215,7 @@ Q_GLOBAL_STATIC_WITH_ARGS(QUuid, baseUuid, ("{00000000-0000-1000-8000-00805F9B34
/*!
\enum QBluetoothUuid::CharacteristicType
+ \since 5.4
This enum is a convienience type for Bluetooth low energy service characteristics class UUIDs. Values of this type
will be implicitly converted into a QBluetoothUuid when necessary.
@@ -369,6 +371,7 @@ Q_GLOBAL_STATIC_WITH_ARGS(QUuid, baseUuid, ("{00000000-0000-1000-8000-00805F9B34
/*!
\enum QBluetoothUuid::DescriptorType
+ \since 5.4
Descriptors are attributes that describe Bluetooth Low Energy characteristic values.
@@ -437,6 +440,7 @@ QBluetoothUuid::QBluetoothUuid(ServiceClassUuid uuid)
/*!
Constructs a new Bluetooth UUID from the characteristic type \a uuid.
+ \since 5.4
*/
QBluetoothUuid::QBluetoothUuid(CharacteristicType uuid)
: QUuid(uuid, baseUuid()->data2, baseUuid()->data3, baseUuid()->data4[0], baseUuid()->data4[1],
@@ -447,6 +451,7 @@ QBluetoothUuid::QBluetoothUuid(CharacteristicType uuid)
/*!
Constructs a new Bluetooth UUID from the descriptor type \a uuid.
+ \since 5.4
*/
QBluetoothUuid::QBluetoothUuid(DescriptorType uuid)
: QUuid(uuid, baseUuid()->data2, baseUuid()->data3, baseUuid()->data4[0], baseUuid()->data4[1],
diff --git a/src/bluetooth/qlowenergycontroller_bluez.cpp b/src/bluetooth/qlowenergycontroller_bluez.cpp
index 51855889..55acfc36 100644
--- a/src/bluetooth/qlowenergycontroller_bluez.cpp
+++ b/src/bluetooth/qlowenergycontroller_bluez.cpp
@@ -277,6 +277,7 @@ void QLowEnergyControllerPrivate::disconnectFromDevice()
{
setState(QLowEnergyController::ClosingState);
l2cpSocket->close();
+ resetController();
}
void QLowEnergyControllerPrivate::l2cpDisconnected()
@@ -312,9 +313,19 @@ void QLowEnergyControllerPrivate::l2cpErrorChanged(QBluetoothSocket::SocketError
}
invalidateServices();
+ resetController();
setState(QLowEnergyController::UnconnectedState);
}
+
+void QLowEnergyControllerPrivate::resetController()
+{
+ openRequests.clear();
+ requestPending = false;
+ encryptionChangePending = false;
+ securityLevelValue = -1;
+}
+
void QLowEnergyControllerPrivate::l2cpReadyRead()
{
const QByteArray reply = l2cpSocket->readAll();
diff --git a/src/bluetooth/qlowenergycontroller_p.h b/src/bluetooth/qlowenergycontroller_p.h
index add92b43..6234b57f 100644
--- a/src/bluetooth/qlowenergycontroller_p.h
+++ b/src/bluetooth/qlowenergycontroller_p.h
@@ -183,6 +183,8 @@ private:
const QByteArray &newValue, quint16 offset);
bool increaseEncryptLevelfRequired(quint8 errorCode);
+ void resetController();
+
private slots:
void l2cpConnected();
void l2cpDisconnected();