QtSerialPort 5.6 introduces a few new features and improvements as well as
bugfixes over the 5.5.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 QtSerialPort version 5.6 series is binary compatible with the 5.5.x series.
Applications compiled for 5.5 will continue to run with 5.6.

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

  http://bugreports.qt.io/

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

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

 - Improved the documentation:
   * [QTBUG-45391] Fixed the examples link.
   * [QTBUG-43810] Improved the references to the readyRead() signal for
     some examples.
   * [QTBUG-48736] Fixed the examplesinstallpath variable in .qdocconf file.
   * [QTBUG-44994] Fixed warning about supported directions on Windows(CE).

 - QSerialPortInfo:
   * Added enumeration of virtual tty0tty devices, which are provided by the
     http://sourceforge.net/p/tty0tty/wiki/Home/ driver.
   * Fixed detection of 8250 serial port types with the udev backend.
   * [QTBUG-50223] Now it enumerates the ttyTHSx devices, which are provided
     by the 'Tegra Jetson TK1' board, when no udev or sysfs backends are
     available.

 - QSerialPort:
   * Added handling of the ERROR_PATH_NOT_FOUND error code on Windows, which
     now is interpreted as QSP::DeviceNotFoundError.
   * Fixed the QSP::clear() method that caused "The parameter is incorrect"
     error on Windows.
   * [QTBUG-48094] Added support of the termios v2 feature to configure a
     custom baud rate on Linux.
   * Custom speed configuration for one direction is not allowed on Linux.
     Trying to do this will lead to QSP::UnsupportedOperationError.
   * Now any attempt to change the policy to anything else than QSP::IgnorePolicy
     will fail with QSerialPoirt::UnsupportedOperationError.
   * Fixed stalling of reading with the limited buffer size on *nix.
   * Improved the console warning message when a suitable custom baud rate
     divisor is not found.
   * [QTBUG-50052] Fixed recursion issue that is caused because of an error
     in QSP::close().
