QtSerialPort 5.3 introduces a few new features and improvements as well as
bugfixes over the 5.2.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/

The QtSerialPort version 5.3 series is binary compatible with the 5.2.x series.
Applications compiled for 5.2 will continue to run with 5.3.

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

 - Build for WinRT is disabled, since the MSDN Windows Store apps will not have
   any serial port replacement.
 - Improved the documentation.
 - Added error handling to some missing functions.
 - Removed some unused code related to the SystemIn/OutputQueue size
   methods.
 - Now the TxD/RxD signals are obsolete, since there is no reliable low-level
   API of obtaining the status of these signals.
 - Now the signal bytesWritten() is emitted only after completion of a write
   operation (when a payload of data was transferred from the driver's queue and
   the driver's queue became empty).
 - [QTBUG-36865] Remove the continuous warning about the unknown flow control.
 - [QTBUG-35781] Use private linkage where appropriate.
 - Swap the open and configure error reporting in the terminal example.
 - Obsolete the "settings restore on close" API.
 - [QTBUG-37989] Keep qmake's "-framework" option on OSX to fix building.
 - Fixed display of the serial number in the terminal example.
 - Mark the settingsRestoredOnClose property deprecated since 5.3 instead
   of 5.2.
 - Ensure both input and output baud rates are set.

 - QSerialPortInfo:
   * [QTBUG-32774] Added the enumerating of virtual serial ports that are created
     from the "AGG Software" utility on Windows.
   * [QTBUG-36526] Added an additional enumeration through the SERIALCOMM
     registry for serial ports which are not present in Windows Device Manager.
   * [QTBUG-36870] Used Q_GLOBAL_STATIC for the udev symbol loading QLibrary
     instance.
   * [QTBUG-31981] Added API for querying the serial number of USB serial ports.
   * [QTBUG-36296] Fixed info update for FTDI devices on Android by using Sysfs.
   * [QTBUG-37578] Used QScopedPointer (RAII) to avoid memory leaks with udev.

 - QSerialPort:
   * Added handling of the ERROR_INVALID_NAME error code on Windows; now this
     error is interpreted as DeviceNotFoundError.
   * Optimized writing sequence algorithm on Windows; now there are no excess
     calls of WriteFile when the writeBuffer is empty.
   * [QTBUG-36490] Fixed changing the state of the DTR signal when modifying
     DCB properties; now the DTR signal stays in the same state.
   * [QTBUG-33987] Fixed the waitForReadyRead() behavior on Windows.
   * cfmakeraw is no longer used on SunO since it doesn't exist on Solaris and
     Illumos.
   * qt_safe_open() is now used instead of open() on Unix since open() is not
     thread-safe, that can lead to leaking of file descriptors.
   * [QTBUG-36824] Protected against EINTR in Unix non-atomic I/O calls with use
     of qt_safe_xxx functions.
   * [QTBUG-33774] Now there is the possibility to set up the port settings
     before opening.
   * Improved the reading and writing algorithm on Windows.
   * Define CRTSCTS on QNX. Tested on SVTronics UEVM5432 Omap5 board with
     QNX 6.6.
   * [QTBUG-38339] Fixed the flush() regression on Unix.
   * [QTBUG-38961] Fixed regression on Linux when trying to set a custom baud
     rate.
