Qt 5.8 introduces many new features and improvements as well as bugfixes
over the 5.7.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.8 series is binary compatible with the 5.7.x series.
Applications compiled for 5.7 will continue to run with 5.8.

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 Bluetooth Low Energy peripheral role support for iOS/macOS.
 - Added WinRT support for QBluetoothDeviceDiscoveryAgent and Bluetooth Low
   Energy central role.
 - [QTBUG-53012] Added API to set the timeout of Bluetooth Low Energy device
   discoveries.
 - Fixed minor documentation issues.
 - [QTBUG-46253] Added API to select the device discovery mode utilized by
   QBluetoothDeviceDiscoveryAgent (btle vs classic vs combined).
 - [QTBUG-46377] Added preferredSecurityGlags() and setPreferredSecurityFlags()
   methods to QBluetoothSocket.
 - Adjusted QtBluetooth to the changes required by the Qt Lite build system.

QtNfc
-----

 - [QTBUG-55297] Fixed ODR violation in QLlcpServer on Android.

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

Android
-------

 - [QTBUG-56625] Parsed list of advertised services found in LE scan
   record and pass them to API client via QBluetoothDeviceInfo::serviceUuids()
 - [QTBUG-55035] Added support for new runtime permission check when running Bluetooth
   applications on Android 7.x. The Bluetooth stack requires Location permissions
   when running a device discovery.
 - [QTBUG-52692] Redesigned/Simplified Android central role implementation and prevented
   blocking of service discovery in case the peripheral does not behave as per standard.
 - [QTBUG-56625] Improved Low Energy device discovery by evaluating scan records and
   feeding their content into QBluetoothDeviceInfo instances.
 - [QTBUG-45066] Fixed crash in QBluetoothDeviceDiscoveryAgent ctor due to Java exception.

iOS/macOS
--------

 - Removed iOS v 6.x support from the code base
 - [QTBUG-56898] Fixed a crash when writing GATT attributes.
 - Adjusted code base to latest macOS and iOS releases.
 - [QTBUG-53331] Forced error signal when calling
   QBluetoothLocalDevice::requestPairing().
 - [QTBUG-52690] Added QLowEnergyController::remoteDeviceUuid() to expose the iOS/macOS
   specific device UUID. Those two platforms do not expose Bluetooth addresses to
   application developers.

Linux/Bluez
-----------

 - Fixed build of sdpscanner due to incorrect build order

