Qt 5.9 introduces many new features and improvements as well as bugfixes
over the 5.8.x series. For more details, refer to the online documentation
included in this distribution. The documentation is also available online:

  http://doc.qt.io/qt-5/index.html

The Qt version 5.9 series is binary compatible with the 5.8.x series.
Applications compiled for 5.8 will continue to run with 5.9.

Some of the changes listed in this file include issue tracking numbers
corresponding to tasks in the Qt Bug Tracker:

  https://bugreports.qt.io/

Each of these identifiers can be entered in the bug tracker to obtain more
information about a particular change.

****************************************************************************
*                          Library                                         *
****************************************************************************

QtBluetooth
-----------

 - Added various improvements to the existing Bluetooth examples.
 - Added various documentation improvements.
 - Added new heartrate-game example replacing the old heartlistener example.

QtNfc
-----

 - Introduced QNearFieldTarget::maxCommandLength() to make it possible to
   check the maximum supported length for commands.
 - Introduced QNearFieldTarget::(set)keepConnection() permitting control over
   the connection behavior. If this flag is set the NFC device does not disconnect
   automatically after reading an NFC message. QNearFieldTarget::disconnect()
   was added to permit manual separation of the connection. This feature is currently
   only implemented on Android.

****************************************************************************
*                      Platform Specific Changes                           *
****************************************************************************

Android
-------

 - Added support for QNearFieldTarget::sendCommand().
 - Fixed crash due to references leak in QBluetoothDeviceDiscoveryAgent on Android.
 - Added more detailed GATT error reporting.
 - [QTBUG-58085] Fixed unnecessarily dangerous right request for ACCESS_COURSE_LOCATION
   during BTLE scanning on Android platforms below version 23.
 - Prevented nil exception if reading of a descriptor failed during discovery.
 - [QTBUG-58056] Fixed not reported characteristic if system failed to read its value
   during the service discovery.
 - [QTBUG-53483] Added support for BTLE peripheral on Android.
 - [QTBUG-56078] Improved likelyhood that BluetoothGatt.connectGatt() succeeds. This addresses
   the GATT_ERROR 133 (0x85) problem on Android v23+ devices. There is no fix available
   on older Android versions.
 - [QTBUG-57646] Fixed problems when using QtNfc when running as a service.
 - [QTBUG-59343] Fixed crash on restart of NFC applications.
 - [QTBUG-59455] Fixed detection of all NFC tags even non-NDEF tags.
 - [QTBUG-59917] Added workaround for BLUETOOTH_PRIVILEGED security exception when
   attempting to read a BTLE HID service.

iOS/macOS
---------

 - Fixed missing behavior whereby QLowEnergyController::disconnectFromDevice()
   did not stop advertisement.
 - [QTBUG-58080] Changed priority of advertised BTLE device name. Qt prefers the
   device name as set by the advertisement data over the GAP name.

Linux/BlueZ
-----------

 - [QTBUG-52692] Prevented stalling of Linux central BTLE implementation.
 - Fixed continued advertisement of peripheral data once
   QLowEnergyController::disconnectFromDevice() was called. Public documentation
   was added to publically state the behavior.
 - [QTBUG-57417] Fixed duplicated QBluetoothLocalAdapter:deviceConnected() and
   deviceDisconnected() signal emissions if the local device has several Bluetooth adapter.
 - [QTBUG-59392] Ensured that pairing passkey and pincode are truly random.
 - [QTBUG-59754] Ensured that QLowEnergyController::connected() is emitted on peripheral.
   Previously the signal was never emitted.

WinRT
-----

 - [QTBUG-37779] Added support for Classic Bluetooth on WinRT.
