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

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

 - [QTBUG-31966] Support has been added for non-standard Qt header installation
   folder (e.g. on Red Hat).
 - [QTBUG-33125] The generation of the forwarding headers now works with Qt 4 and
   Necessitas.
 - [QTBUG-33117] [QTBUG-33139] Fixed the compilation for Android with Qt 5. The
   command line enumerator seems to work.
 - Added support for non-standard BSD4 baud rates.
 - [QTBUG-32173] Rewrote the documentation to more proper English than before,
   and also improved the accuracy of the content.
 - [QTBUG-33774] Document that the serial port parameters cannot be set before
   opening.
 - No more unnecessary syscalls (parameter settings, pinout signal query, etc) in the
   backend when the port is closed. This also means no unnecessary errors are set.
 - Removed the QtGui linkage for the command line enumerator example, so it now
   links against QtCore and QtSerialPort only.
 - More warnings when doing operations that require the serial port to be open,
   but it is closed.
 - The deprecated QtAlgorithm usage is removed.
 - Some outputs in the examples are fixed to be more proper English; this
   includes mostly typos, but also some comprehensive changes.
 - New command line sync reader example available with screen shot and
   documentation.
 - New command line async reader example available with screen shot and
   documentation.
 - New command line sync writer example available with screen shot and
   documentation.
 - New command line async writer example available with screen shot and
   documentation.
 - The buildsystem now respects the configure run for Qt 5, i.e. pkg-config is
   not used for finding udev again.
 - [QTBUG-34429] Mark the data error policy obsolete. End users should stop using
   this feature now. It may be removed later in Qt 6.X, and there is a warning now
   if it is used.
 - [QTBUG-34474] Replace the internal QTtyLocker with QLockFile from QtCore and a
   small convenience on top of it to comply with the locking directories lockdev
   also uses.
 - The lock file usage has been extended to support Android as there is no direct
   access to the usual Unix lock file system paths. The lock file is now placed
   into /data/local/tmp.
 - [QTBUG-35184] Mark the isValid() method in QSerialPortInfo deprecated because
   it has no common use case.
 - [QTBUG-35215] Mark the QSerialPort::Unknown* enumeration values in QSerialPort
   deprecated because they have no use case.

 - QSerialPortInfo:
   * [QTBUG-32684] VID/PID for USB Huawei 3G Modem is returned properly now.
   * [QTBUG-32018] The port name and product identifiers now work for more devices
     and scenarios on Windows.
   * Linux: sysfs support was added for serial port information as a fallback for
     udev.
   * [QTBUG-34329] Support added for loading udev at runtime rather than linking at
     compilation time.
   * [QTBUG-32563] Motorola IMX support was added when udev and sysfs are not
     present.
   * Support has been added for the hard-coded device enumeration backend to get
     information. Android uarts such as /dev/ttyHS* (High speed UART) and
     /dev/ttyHSL* (Low speed UART) are supported by that backend.
   * Support has been added for the hard-coded device enumeration backend to get
     information. /dev/ttyO* (native OMAP UART) is supported by that backend.
   * [QTBUG-35064] PCI support has been added to the sysfs backend on Linux to
     support the enumeration of such devices.

 - QSerialPort:
   * [QTBUG-32016] No "No such file or directory" error set after waitForReadyRead
     anymore.
   * [QTBUG-32017] Windows: Fixed the waitAnyEvent() method for the WAIT_FAILED
     handling.
   * [QTBUG-31964] The serial port enums are now properly tagged as Q_FLAGS.
   * Added native serial port handle; it is now possible to do any custom operation
     if not supported by QtSerialPort.
   * [QTBUG-32680] Added API for handling the timeout errors when waiting for read
     or write.
   * Added a new error enumeration value called "NotOpenError". This can be used
     for operations where the serial port is not open. This is also used internally
     now.
