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

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
-----------

 - Ported Classic Bluetooth components and classes to OS X. A similar port
   to iOS is not possible due to missing platform support.
 - Ported Low Energy components to iOS, OS X and Android
 - Improved QBluetoothTransferManager documentation
 - Improved QLowEnergyService documentation
 - Added missing detailsChanged() signal emissions in BluetoothService QML type

 - QBluetoothDeviceDiscoveryAgent:
   * Extended QBluetoothDeviceDiscoveryAgent documentation around Bluetooth
     Low Energy device discovery
   * Added QBluetoothDeviceDiscoveryAgent::UnsupportedPlatformError flag

 - QBluetoothDeviceInfo:
   * Added QBluetoothDeviceInfo(QBluetoothUuid,QString,quint32) ctor
   * Fixed incorrect initialization of QBluetoothDeviceInfo::coreConfiguration()
     in the class ctor. By default, it is set to
     QBluetoothDeviceInfo::UnknownCoreConfiguration.
   * Added Q_DECLARE_OPERATORS_FOR_FLAGS macro for CoreConfiguration
     and ServiceClasses enums

 - QBluetoothHostInfo:
   * Added Q_DECLARE_METATYPE
   * Added comparison operators

 - QLowEnergyController:
   * QLowEnergyController::ConnectionError enum value added.
   * Added QLowEnergyController(QBluetoothDeviceInfo) ctor. This ctor is the
     preferred ctor.

 - QLowEnergyService:
   * Add capability to initiate reading of characteristics and descriptors. Previously
     the variable was only updated during the initial service discovery or when
     a value notification was received.
   * Added guard to prevent writing of service before service discovery
     was complete.
   * Force write of characteristics and descriptors even when they are marked as
     read-only. This permits workarounds where the device's meta data reports
     wrong values.
   * Improved class documentation
   * Added remoteName() member function

 - QBluetoothUuid:
   * Extended QBluetoothUuid::ServiceClassUuid enum to incorporate latest
     BLuetooth Low Energy service type standards/definitions
   * Extended QBluetoothUuid::CharacteristicType to incorporate latest
     Bluetooth Low Energy characteritistic standards/definitions
   * Extended QBluetoothUuid::DescriptorType to incorporate latest
     Bluetooth Low Energy descriptor standards/definitions

 - Examples:
   * Fixed several lowenergyscanner example bugs

QtNfc
-----

 - Ported module to Linux using Neard v0.14+
 - Improved QNdefNfcSmartPosterRecord documentation
 - Extended QML NearField type with polling property, tagFound() and tagRemoved signals
 - Added QNdefNfcSmartPosterRecord::operator=() operator

 - Examples:
   * Fixed several bugs in corkboard example
   * Fixed hanging ndefeditor example when receiving invalid NFC requests
   * Fixed loading of images in poster example

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

Android
-------

 - Added support for Bluetooth Low Energy in Qt Bluetooth
 - Avoided duplicated notifications for same device during Bluetooth device
   discovery

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

- Improved Bluez version detection. The previous check didn't handle these
   "no Bluez available" case.
