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

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-41190] Fixed build on Qt4 related to QT_DEPRECATED_SINCE(5, 2) macro.

 - QSerialPortInfo:
   * Added support of a serial number of the USB device from the Sysfs backend.
   * Fixed crash on OSX related to wrong use of QCFString class.
   * Added enumeration of on-board types of serial ports (like SOC and OCP)
     at using of the Sysfs backend on Linux.
   * [QTBUG-40113] Fixed crash related to dynamic udev loading.

 - QSerialPort:
   * Fixed filtering of custom baud rate on Linux.
   * [QTBUG-41295] Now the reading are not stalled on Windows when used the
     read buffer with the limited size.
   * Now the reading are not stalled on Windows after calling of the clear()
     method.
   * Now the bytesToWrite() on Windows returns the zero after WriteFile()
     was called.
