summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDenis Shienkov <denis.shienkov@gmail.com>2014-10-30 22:53:44 +0300
committerDenis Shienkov <denis.shienkov@gmail.com>2014-11-14 16:32:39 +0100
commit3e5a8a6437321151c24c84ed5e671398a157809e (patch)
tree2a88b565459819e6df342a4f8964e84a32eeeb98 /src
parent1eaf24b12168a28bc251821d205b6b67fba08012 (diff)
downloadqtserialport-3e5a8a6437321151c24c84ed5e671398a157809e.tar.gz
Move all platform-specific declarations into one QSPPrivate
This is near to the internal Qt PIMPL style. Also it will allow to use QIODevicePrivate is more smoothly in next patches. Tested on Windows 8, Linux, OSX 10.9 with on-board serial port. Change-Id: Ieef4b05d0bf11cf2da6420e58629bea1818108f9 Reviewed-by: Sergey Belyashov <Sergey.Belyashov@gmail.com>
Diffstat (limited to 'src')
-rw-r--r--src/serialport/qserialport.cpp76
-rw-r--r--src/serialport/qserialport_p.h221
-rw-r--r--src/serialport/qserialport_unix.cpp17
-rw-r--r--src/serialport/qserialport_unix_p.h194
-rw-r--r--src/serialport/qserialport_win.cpp46
-rw-r--r--src/serialport/qserialport_win_p.h152
-rw-r--r--src/serialport/qserialport_wince.cpp10
-rw-r--r--src/serialport/qserialport_wince_p.h133
-rw-r--r--src/serialport/qserialportinfo_mac.cpp2
-rw-r--r--src/serialport/qserialportinfo_unix.cpp2
-rw-r--r--src/serialport/qserialportinfo_win.cpp2
-rw-r--r--src/serialport/qserialportinfo_wince.cpp2
-rw-r--r--src/serialport/serialport-lib.pri9
13 files changed, 287 insertions, 579 deletions
diff --git a/src/serialport/qserialport.cpp b/src/serialport/qserialport.cpp
index 04685cd..84c086e 100644
--- a/src/serialport/qserialport.cpp
+++ b/src/serialport/qserialport.cpp
@@ -37,25 +37,13 @@
#include "qserialport.h"
#include "qserialportinfo.h"
-#ifdef Q_OS_WINCE
-#include "qserialport_wince_p.h"
-#elif defined (Q_OS_WIN)
-#include "qserialport_win_p.h"
-#elif defined (Q_OS_UNIX)
-#include "qserialport_unix_p.h"
-#else
-#error Unsupported OS
-#endif
-
-#ifndef SERIALPORT_BUFFERSIZE
-# define SERIALPORT_BUFFERSIZE 16384
-#endif
+#include "qserialport_p.h"
#include <QtCore/qdebug.h>
QT_BEGIN_NAMESPACE
-QSerialPortPrivateData::QSerialPortPrivateData(QSerialPort *q)
+QSerialPortPrivate::QSerialPortPrivate(QSerialPort *q)
: readBufferMaxSize(0)
, readBuffer(SERIALPORT_BUFFERSIZE)
, writeBuffer(SERIALPORT_BUFFERSIZE)
@@ -73,10 +61,68 @@ QSerialPortPrivateData::QSerialPortPrivateData(QSerialPort *q)
, settingsRestoredOnClose(true)
#endif
, q_ptr(q)
+#if defined (Q_OS_WINCE)
+ , handle(INVALID_HANDLE_VALUE)
+ , parityErrorOccurred(false)
+ , eventNotifier(0)
+#elif defined (Q_OS_WIN32)
+ , handle(INVALID_HANDLE_VALUE)
+ , parityErrorOccurred(false)
+ , readChunkBuffer(ReadChunkSize, 0)
+ , readyReadEmitted(0)
+ , writeStarted(false)
+ , readStarted(false)
+ , communicationNotifier(new QWinEventNotifier(q))
+ , readCompletionNotifier(new QWinEventNotifier(q))
+ , writeCompletionNotifier(new QWinEventNotifier(q))
+ , startAsyncWriteTimer(0)
+ , originalEventMask(0)
+ , triggeredEventMask(0)
+ , actualBytesToWrite(0)
+#elif defined (Q_OS_UNIX)
+ , descriptor(-1)
+ , readNotifier(0)
+ , writeNotifier(0)
+ , readPortNotifierCalled(false)
+ , readPortNotifierState(false)
+ , readPortNotifierStateSet(false)
+ , emittedReadyRead(false)
+ , emittedBytesWritten(false)
+ , pendingBytesWritten(0)
+ , writeSequenceStarted(false)
+#endif
{
+#ifdef Q_OS_WIN32
+ ::ZeroMemory(&communicationOverlapped, sizeof(communicationOverlapped));
+ communicationOverlapped.hEvent = ::CreateEvent(NULL, FALSE, FALSE, NULL);
+ if (!communicationOverlapped.hEvent) {
+ q->setError(decodeSystemError());
+ } else {
+ communicationNotifier->setHandle(communicationOverlapped.hEvent);
+ q->connect(communicationNotifier, SIGNAL(activated(HANDLE)), q, SLOT(_q_completeAsyncCommunication()));
+ }
+
+ ::ZeroMemory(&readCompletionOverlapped, sizeof(readCompletionOverlapped));
+ readCompletionOverlapped.hEvent = ::CreateEvent(NULL, FALSE, FALSE, NULL);
+ if (!readCompletionOverlapped.hEvent) {
+ q->setError(decodeSystemError());
+ } else {
+ readCompletionNotifier->setHandle(readCompletionOverlapped.hEvent);
+ q->connect(readCompletionNotifier, SIGNAL(activated(HANDLE)), q, SLOT(_q_completeAsyncRead()));
+ }
+
+ ::ZeroMemory(&writeCompletionOverlapped, sizeof(writeCompletionOverlapped));
+ writeCompletionOverlapped.hEvent = ::CreateEvent(NULL, FALSE, FALSE, NULL);
+ if (!writeCompletionOverlapped.hEvent) {
+ q->setError(decodeSystemError());
+ } else {
+ writeCompletionNotifier->setHandle(writeCompletionOverlapped.hEvent);
+ q->connect(writeCompletionNotifier, SIGNAL(activated(HANDLE)), q, SLOT(_q_completeAsyncWrite()));
+ }
+#endif
}
-int QSerialPortPrivateData::timeoutValue(int msecs, int elapsed)
+int QSerialPortPrivate::timeoutValue(int msecs, int elapsed)
{
if (msecs == -1)
return msecs;
diff --git a/src/serialport/qserialport_p.h b/src/serialport/qserialport_p.h
index 6f39260..e39ba2b 100644
--- a/src/serialport/qserialport_p.h
+++ b/src/serialport/qserialport_p.h
@@ -51,18 +51,116 @@
#include <private/qringbuffer_p.h>
+#if defined (Q_OS_WINCE)
+# include <QtCore/qmutex.h>
+# include <qt_windows.h>
+#elif defined (Q_OS_WIN32)
+# include <QtCore/qwineventnotifier.h>
+# include <qt_windows.h>
+#elif defined (Q_OS_UNIX)
+# include <QtCore/qlockfile.h>
+# include <QtCore/qscopedpointer.h>
+# include <QtCore/qfileinfo.h>
+# include <QtCore/qstringlist.h>
+# include <limits.h>
+# include <termios.h>
+# ifdef Q_OS_ANDROID
+struct serial_struct {
+ int type;
+ int line;
+ unsigned int port;
+ int irq;
+ int flags;
+ int xmit_fifo_size;
+ int custom_divisor;
+ int baud_base;
+ unsigned short close_delay;
+ char io_type;
+ char reserved_char[1];
+ int hub6;
+ unsigned short closing_wait;
+ unsigned short closing_wait2;
+ unsigned char *iomem_base;
+ unsigned short iomem_reg_shift;
+ unsigned int port_high;
+ unsigned long iomap_base;
+};
+# define ASYNC_SPD_CUST 0x0030
+# define ASYNC_SPD_MASK 0x1030
+# elif defined (Q_OS_LINUX)
+# include <linux/serial.h>
+# endif
+#else
+# error Unsupported OS
+#endif
+
QT_BEGIN_NAMESPACE
-class QSerialPortPrivateData
+#ifndef SERIALPORT_BUFFERSIZE
+# define SERIALPORT_BUFFERSIZE 16384
+#endif
+
+class QThread;
+class QWinEventNotifier;
+class QTimer;
+class QSocketNotifier;
+
+#if defined (Q_OS_UNIX)
+QString serialPortLockFilePath(const QString &portName);
+#endif
+
+class QSerialPortPrivate
{
+ Q_DECLARE_PUBLIC(QSerialPort)
public:
enum IoConstants {
ReadChunkSize = 512
};
- QSerialPortPrivateData(QSerialPort *q);
+ QSerialPortPrivate(QSerialPort *q);
+
int timeoutValue(int msecs, int elapsed);
+ bool open(QIODevice::OpenMode mode);
+ void close();
+
+ QSerialPort::PinoutSignals pinoutSignals();
+
+ bool setDataTerminalReady(bool set);
+ bool setRequestToSend(bool set);
+
+ bool flush();
+ bool clear(QSerialPort::Directions directions);
+
+ bool sendBreak(int duration);
+ bool setBreakEnabled(bool set);
+
+ qint64 readData(char *data, qint64 maxSize);
+
+ bool waitForReadyRead(int msec);
+ bool waitForBytesWritten(int msec);
+
+ bool setBaudRate();
+ bool setBaudRate(qint32 baudRate, QSerialPort::Directions directions);
+ bool setDataBits(QSerialPort::DataBits dataBits);
+ bool setParity(QSerialPort::Parity parity);
+ bool setStopBits(QSerialPort::StopBits stopBits);
+ bool setFlowControl(QSerialPort::FlowControl flowControl);
+ bool setDataErrorPolicy(QSerialPort::DataErrorPolicy policy);
+
+ QSerialPort::SerialPortError decodeSystemError() const;
+
+ qint64 bytesToWrite() const;
+ qint64 writeData(const char *data, qint64 maxSize);
+
+ static QString portNameToSystemLocation(const QString &port);
+ static QString portNameFromSystemLocation(const QString &location);
+
+ static qint32 baudRateFromSetting(qint32 setting);
+ static qint32 settingFromBaudRate(qint32 baudRate);
+
+ static QList<qint32> standardBaudRates();
+
qint64 readBufferMaxSize;
QRingBuffer readBuffer;
QRingBuffer writeBuffer;
@@ -79,6 +177,125 @@ public:
bool requestToSend;
bool settingsRestoredOnClose;
QSerialPort * const q_ptr;
+
+#if defined (Q_OS_WINCE)
+
+ bool initialize(DWORD eventMask);
+ bool updateDcb();
+ bool updateCommTimeouts();
+
+ bool waitForReadOrWrite(bool *selectForRead, bool *selectForWrite,
+ bool checkRead, bool checkWrite,
+ int msecs, bool *timedOut);
+ void processIoErrors(bool error);
+
+ bool notifyRead();
+ bool notifyWrite();
+
+ DCB currentDcb;
+ DCB restoredDcb;
+ COMMTIMEOUTS currentCommTimeouts;
+ COMMTIMEOUTS restoredCommTimeouts;
+ HANDLE handle;
+ bool parityErrorOccurred;
+
+ QThread *eventNotifier;
+ QMutex settingsChangeMutex;
+
+#elif defined (Q_OS_WIN32)
+
+ bool initialize(QIODevice::OpenMode mode);
+ bool updateDcb();
+ bool updateCommTimeouts();
+ qint64 handleOverlappedResult(int direction, OVERLAPPED &overlapped);
+ void handleLineStatusErrors();
+ bool waitAnyEvent(int msecs, bool *timedOut, HANDLE *triggeredEvent);
+
+ bool _q_completeAsyncCommunication();
+ bool _q_completeAsyncRead();
+ bool _q_completeAsyncWrite();
+
+ bool startAsyncCommunication();
+ bool startAsyncRead();
+ bool _q_startAsyncWrite();
+
+ bool emulateErrorPolicy();
+ void emitReadyRead();
+
+ DCB currentDcb;
+ DCB restoredDcb;
+ COMMTIMEOUTS currentCommTimeouts;
+ COMMTIMEOUTS restoredCommTimeouts;
+ HANDLE handle;
+ bool parityErrorOccurred;
+ QByteArray readChunkBuffer;
+ bool readyReadEmitted;
+ bool writeStarted;
+ bool readStarted;
+ QWinEventNotifier *communicationNotifier;
+ QWinEventNotifier *readCompletionNotifier;
+ QWinEventNotifier *writeCompletionNotifier;
+ QTimer *startAsyncWriteTimer;
+ OVERLAPPED communicationOverlapped;
+ OVERLAPPED readCompletionOverlapped;
+ OVERLAPPED writeCompletionOverlapped;
+ DWORD originalEventMask;
+ DWORD triggeredEventMask;
+ qint64 actualBytesToWrite;
+
+#elif defined (Q_OS_UNIX)
+
+ bool initialize(QIODevice::OpenMode mode);
+ bool updateTermios();
+
+ QSerialPort::SerialPortError setBaudRate_helper(qint32 baudRate,
+ QSerialPort::Directions directions);
+ QSerialPort::SerialPortError setCustomBaudRate(qint32 baudRate,
+ QSerialPort::Directions directions);
+ QSerialPort::SerialPortError setStandardBaudRate(qint32 baudRate,
+ QSerialPort::Directions directions);
+
+ bool isReadNotificationEnabled() const;
+ void setReadNotificationEnabled(bool enable);
+ bool isWriteNotificationEnabled() const;
+ void setWriteNotificationEnabled(bool enable);
+
+ bool waitForReadOrWrite(bool *selectForRead, bool *selectForWrite,
+ bool checkRead, bool checkWrite,
+ int msecs, bool *timedOut);
+
+ qint64 readFromPort(char *data, qint64 maxSize);
+ qint64 writeToPort(const char *data, qint64 maxSize);
+
+#ifndef CMSPAR
+ qint64 writePerChar(const char *data, qint64 maxSize);
+#endif
+ qint64 readPerChar(char *data, qint64 maxSize);
+
+ bool readNotification();
+ bool startAsyncWrite();
+ bool completeAsyncWrite();
+
+ struct termios currentTermios;
+ struct termios restoredTermios;
+ int descriptor;
+
+ QSocketNotifier *readNotifier;
+ QSocketNotifier *writeNotifier;
+
+ bool readPortNotifierCalled;
+ bool readPortNotifierState;
+ bool readPortNotifierStateSet;
+
+ bool emittedReadyRead;
+ bool emittedBytesWritten;
+
+ qint64 pendingBytesWritten;
+ bool writeSequenceStarted;
+
+ QScopedPointer<QLockFile> lockFileScopedPointer;
+
+#endif
};
QT_END_NAMESPACE
diff --git a/src/serialport/qserialport_unix.cpp b/src/serialport/qserialport_unix.cpp
index eb71e86..0b7979f 100644
--- a/src/serialport/qserialport_unix.cpp
+++ b/src/serialport/qserialport_unix.cpp
@@ -33,7 +33,7 @@
**
****************************************************************************/
-#include "qserialport_unix_p.h"
+#include "qserialport_p.h"
#include <errno.h>
#include <sys/time.h>
@@ -144,21 +144,6 @@ private:
#include "qserialport_unix.moc"
-QSerialPortPrivate::QSerialPortPrivate(QSerialPort *q)
- : QSerialPortPrivateData(q)
- , descriptor(-1)
- , readNotifier(0)
- , writeNotifier(0)
- , readPortNotifierCalled(false)
- , readPortNotifierState(false)
- , readPortNotifierStateSet(false)
- , emittedReadyRead(false)
- , emittedBytesWritten(false)
- , pendingBytesWritten(0)
- , writeSequenceStarted(false)
-{
-}
-
bool QSerialPortPrivate::open(QIODevice::OpenMode mode)
{
Q_Q(QSerialPort);
diff --git a/src/serialport/qserialport_unix_p.h b/src/serialport/qserialport_unix_p.h
deleted file mode 100644
index 1cc767d..0000000
--- a/src/serialport/qserialport_unix_p.h
+++ /dev/null
@@ -1,194 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Denis Shienkov <denis.shienkov@gmail.com>
-** Copyright (C) 2012 Laszlo Papp <lpapp@kde.org>
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the QtSerialPort module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL21$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 or version 3 as published by the Free
-** Software Foundation and appearing in the file LICENSE.LGPLv21 and
-** LICENSE.LGPLv3 included in the packaging of this file. Please review the
-** following information to ensure the GNU Lesser General Public License
-** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QSERIALPORT_UNIX_P_H
-#define QSERIALPORT_UNIX_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include "qserialport_p.h"
-
-#include <QtCore/qlockfile.h>
-#include <QtCore/qscopedpointer.h>
-#include <QtCore/qfileinfo.h>
-#include <QtCore/qstringlist.h>
-
-#include <limits.h>
-#include <termios.h>
-#ifndef Q_OS_ANDROID
-#ifdef Q_OS_LINUX
-# include <linux/serial.h>
-#endif
-#else
-struct serial_struct {
- int type;
- int line;
- unsigned int port;
- int irq;
- int flags;
- int xmit_fifo_size;
- int custom_divisor;
- int baud_base;
- unsigned short close_delay;
- char io_type;
- char reserved_char[1];
- int hub6;
- unsigned short closing_wait;
- unsigned short closing_wait2;
- unsigned char *iomem_base;
- unsigned short iomem_reg_shift;
- unsigned int port_high;
- unsigned long iomap_base;
-};
-#define ASYNC_SPD_CUST 0x0030
-#define ASYNC_SPD_MASK 0x1030
-#endif
-
-QT_BEGIN_NAMESPACE
-
-QString serialPortLockFilePath(const QString &portName);
-
-class QSocketNotifier;
-
-class QSerialPortPrivate : public QSerialPortPrivateData
-{
- Q_DECLARE_PUBLIC(QSerialPort)
-
-public:
- QSerialPortPrivate(QSerialPort *q);
-
- bool open(QIODevice::OpenMode mode);
- void close();
-
- QSerialPort::PinoutSignals pinoutSignals();
-
- bool setDataTerminalReady(bool set);
- bool setRequestToSend(bool set);
-
- bool flush();
- bool clear(QSerialPort::Directions directions);
-
- bool sendBreak(int duration);
- bool setBreakEnabled(bool set);
-
- qint64 readData(char *data, qint64 maxSize);
-
- bool waitForReadyRead(int msecs);
- bool waitForBytesWritten(int msecs);
-
- bool setBaudRate();
- bool setBaudRate(qint32 baudRate, QSerialPort::Directions directions);
- bool setDataBits(QSerialPort::DataBits dataBits);
- bool setParity(QSerialPort::Parity parity);
- bool setStopBits(QSerialPort::StopBits stopBits);
- bool setFlowControl(QSerialPort::FlowControl flowControl);
- bool setDataErrorPolicy(QSerialPort::DataErrorPolicy policy);
-
- bool readNotification();
- bool startAsyncWrite();
- bool completeAsyncWrite();
-
- qint64 bytesToWrite() const;
- qint64 writeData(const char *data, qint64 maxSize);
-
- static QString portNameToSystemLocation(const QString &port);
- static QString portNameFromSystemLocation(const QString &location);
-
- static qint32 baudRateFromSetting(qint32 setting);
- static qint32 settingFromBaudRate(qint32 baudRate);
-
- static QList<qint32> standardBaudRates();
-
- struct termios currentTermios;
- struct termios restoredTermios;
- int descriptor;
-
- QSocketNotifier *readNotifier;
- QSocketNotifier *writeNotifier;
-
- bool readPortNotifierCalled;
- bool readPortNotifierState;
- bool readPortNotifierStateSet;
-
- bool emittedReadyRead;
- bool emittedBytesWritten;
-
- qint64 pendingBytesWritten;
- bool writeSequenceStarted;
-
- QScopedPointer<QLockFile> lockFileScopedPointer;
-
-private:
- bool initialize(QIODevice::OpenMode mode);
- bool updateTermios();
-
- QSerialPort::SerialPortError setBaudRate_helper(qint32 baudRate,
- QSerialPort::Directions directions);
- QSerialPort::SerialPortError setCustomBaudRate(qint32 baudRate,
- QSerialPort::Directions directions);
- QSerialPort::SerialPortError setStandardBaudRate(qint32 baudRate,
- QSerialPort::Directions directions);
- QSerialPort::SerialPortError decodeSystemError() const;
-
- bool isReadNotificationEnabled() const;
- void setReadNotificationEnabled(bool enable);
- bool isWriteNotificationEnabled() const;
- void setWriteNotificationEnabled(bool enable);
-
- bool waitForReadOrWrite(bool *selectForRead, bool *selectForWrite,
- bool checkRead, bool checkWrite,
- int msecs, bool *timedOut);
-
- qint64 readFromPort(char *data, qint64 maxSize);
- qint64 writeToPort(const char *data, qint64 maxSize);
-
-#ifndef CMSPAR
- qint64 writePerChar(const char *data, qint64 maxSize);
-#endif
- qint64 readPerChar(char *data, qint64 maxSize);
-
-};
-
-QT_END_NAMESPACE
-
-#endif // QSERIALPORT_UNIX_P_H
diff --git a/src/serialport/qserialport_win.cpp b/src/serialport/qserialport_win.cpp
index 64ca00e..c965c3e 100644
--- a/src/serialport/qserialport_win.cpp
+++ b/src/serialport/qserialport_win.cpp
@@ -33,7 +33,7 @@
**
****************************************************************************/
-#include "qserialport_win_p.h"
+#include "qserialport_p.h"
#include <QtCore/qcoreevent.h>
#include <QtCore/qelapsedtimer.h>
@@ -83,50 +83,6 @@ static void initializeOverlappedStructure(OVERLAPPED &overlapped)
overlapped.OffsetHigh = 0;
}
-QSerialPortPrivate::QSerialPortPrivate(QSerialPort *q)
- : QSerialPortPrivateData(q)
- , handle(INVALID_HANDLE_VALUE)
- , parityErrorOccurred(false)
- , readChunkBuffer(ReadChunkSize, 0)
- , readyReadEmitted(0)
- , writeStarted(false)
- , readStarted(false)
- , communicationNotifier(new QWinEventNotifier(q))
- , readCompletionNotifier(new QWinEventNotifier(q))
- , writeCompletionNotifier(new QWinEventNotifier(q))
- , startAsyncWriteTimer(0)
- , originalEventMask(0)
- , triggeredEventMask(0)
- , actualBytesToWrite(0)
-{
- ::ZeroMemory(&communicationOverlapped, sizeof(communicationOverlapped));
- communicationOverlapped.hEvent = ::CreateEvent(NULL, FALSE, FALSE, NULL);
- if (!communicationOverlapped.hEvent)
- q->setError(decodeSystemError());
- else {
- communicationNotifier->setHandle(communicationOverlapped.hEvent);
- q->connect(communicationNotifier, SIGNAL(activated(HANDLE)), q, SLOT(_q_completeAsyncCommunication()));
- }
-
- ::ZeroMemory(&readCompletionOverlapped, sizeof(readCompletionOverlapped));
- readCompletionOverlapped.hEvent = ::CreateEvent(NULL, FALSE, FALSE, NULL);
- if (!readCompletionOverlapped.hEvent)
- q->setError(decodeSystemError());
- else {
- readCompletionNotifier->setHandle(readCompletionOverlapped.hEvent);
- q->connect(readCompletionNotifier, SIGNAL(activated(HANDLE)), q, SLOT(_q_completeAsyncRead()));
- }
-
- ::ZeroMemory(&writeCompletionOverlapped, sizeof(writeCompletionOverlapped));
- writeCompletionOverlapped.hEvent = ::CreateEvent(NULL, FALSE, FALSE, NULL);
- if (!writeCompletionOverlapped.hEvent)
- q->setError(decodeSystemError());
- else {
- writeCompletionNotifier->setHandle(writeCompletionOverlapped.hEvent);
- q->connect(writeCompletionNotifier, SIGNAL(activated(HANDLE)), q, SLOT(_q_completeAsyncWrite()));
- }
-}
-
bool QSerialPortPrivate::open(QIODevice::OpenMode mode)
{
Q_Q(QSerialPort);
diff --git a/src/serialport/qserialport_win_p.h b/src/serialport/qserialport_win_p.h
deleted file mode 100644
index 6b009fe..0000000
--- a/src/serialport/qserialport_win_p.h
+++ /dev/null
@@ -1,152 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Denis Shienkov <denis.shienkov@gmail.com>
-** Copyright (C) 2012 Laszlo Papp <lpapp@kde.org>
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the QtSerialPort module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL21$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 or version 3 as published by the Free
-** Software Foundation and appearing in the file LICENSE.LGPLv21 and
-** LICENSE.LGPLv3 included in the packaging of this file. Please review the
-** following information to ensure the GNU Lesser General Public License
-** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QSERIALPORT_WIN_P_H
-#define QSERIALPORT_WIN_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include "qserialport_p.h"
-
-#include <QtCore/qhash.h>
-
-#include <qt_windows.h>
-
-QT_BEGIN_NAMESPACE
-
-class QWinEventNotifier;
-class QTimer;
-
-class QSerialPortPrivate : public QSerialPortPrivateData
-{
- Q_DECLARE_PUBLIC(QSerialPort)
-
-public:
- QSerialPortPrivate(QSerialPort *q);
-
- bool open(QIODevice::OpenMode mode);
- void close();
-
- QSerialPort::PinoutSignals pinoutSignals();
-
- bool setDataTerminalReady(bool set);
- bool setRequestToSend(bool set);
-
- bool flush();
- bool clear(QSerialPort::Directions directions);
-
- bool sendBreak(int duration);
- bool setBreakEnabled(bool set);
-
- qint64 readData(char *data, qint64 maxSize);
-
- bool waitForReadyRead(int msec);
- bool waitForBytesWritten(int msec);
-
- bool setBaudRate();
- bool setBaudRate(qint32 baudRate, QSerialPort::Directions directions);
- bool setDataBits(QSerialPort::DataBits dataBits);
- bool setParity(QSerialPort::Parity parity);
- bool setStopBits(QSerialPort::StopBits stopBits);
- bool setFlowControl(QSerialPort::FlowControl flowControl);
- bool setDataErrorPolicy(QSerialPort::DataErrorPolicy policy);
-
- void handleLineStatusErrors();
- QSerialPort::SerialPortError decodeSystemError() const;
-
- bool _q_completeAsyncCommunication();
- bool _q_completeAsyncRead();
- bool _q_completeAsyncWrite();
-
- bool startAsyncCommunication();
- bool startAsyncRead();
- bool _q_startAsyncWrite();
-
- bool emulateErrorPolicy();
- void emitReadyRead();
-
- qint64 bytesToWrite() const;
- qint64 writeData(const char *data, qint64 maxSize);
-
- static QString portNameToSystemLocation(const QString &port);
- static QString portNameFromSystemLocation(const QString &location);
-
- static qint32 baudRateFromSetting(qint32 setting);
- static qint32 settingFromBaudRate(qint32 baudRate);
-
- static QList<qint32> standardBaudRates();
-
- DCB currentDcb;
- DCB restoredDcb;
- COMMTIMEOUTS currentCommTimeouts;
- COMMTIMEOUTS restoredCommTimeouts;
- HANDLE handle;
- bool parityErrorOccurred;
- QByteArray readChunkBuffer;
- bool readyReadEmitted;
- bool writeStarted;
- bool readStarted;
- QWinEventNotifier *communicationNotifier;
- QWinEventNotifier *readCompletionNotifier;
- QWinEventNotifier *writeCompletionNotifier;
- QTimer *startAsyncWriteTimer;
- OVERLAPPED communicationOverlapped;
- OVERLAPPED readCompletionOverlapped;
- OVERLAPPED writeCompletionOverlapped;
- DWORD originalEventMask;
- DWORD triggeredEventMask;
- qint64 actualBytesToWrite;
-
-private:
- bool initialize(QIODevice::OpenMode mode);
- bool updateDcb();
- bool updateCommTimeouts();
- qint64 handleOverlappedResult(int direction, OVERLAPPED &overlapped);
-
- bool waitAnyEvent(int msecs, bool *timedOut, HANDLE *triggeredEvent);
-
-};
-
-QT_END_NAMESPACE
-
-#endif // QSERIALPORT_WIN_P_H
diff --git a/src/serialport/qserialport_wince.cpp b/src/serialport/qserialport_wince.cpp
index a9c80b2..47c11ee 100644
--- a/src/serialport/qserialport_wince.cpp
+++ b/src/serialport/qserialport_wince.cpp
@@ -33,7 +33,7 @@
**
****************************************************************************/
-#include "qserialport_wince_p.h"
+#include "qserialport_p.h"
#include <QtCore/qelapsedtimer.h>
#include <QtCore/qthread.h>
@@ -179,14 +179,6 @@ private:
#include "qserialport_wince.moc"
-QSerialPortPrivate::QSerialPortPrivate(QSerialPort *q)
- : QSerialPortPrivateData(q)
- , handle(INVALID_HANDLE_VALUE)
- , parityErrorOccurred(false)
- , eventNotifier(0)
-{
-}
-
bool QSerialPortPrivate::open(QIODevice::OpenMode mode)
{
Q_Q(QSerialPort);
diff --git a/src/serialport/qserialport_wince_p.h b/src/serialport/qserialport_wince_p.h
deleted file mode 100644
index dedd4b1..0000000
--- a/src/serialport/qserialport_wince_p.h
+++ /dev/null
@@ -1,133 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Denis Shienkov <denis.shienkov@gmail.com>
-** Copyright (C) 2012 Laszlo Papp <lpapp@kde.org>
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the QtSerialPort module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL21$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 or version 3 as published by the Free
-** Software Foundation and appearing in the file LICENSE.LGPLv21 and
-** LICENSE.LGPLv3 included in the packaging of this file. Please review the
-** following information to ensure the GNU Lesser General Public License
-** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QSERIALPORT_WINCE_P_H
-#define QSERIALPORT_WINCE_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include "qserialport_p.h"
-
-#include <QtCore/qmutex.h>
-
-#include <qt_windows.h>
-
-QT_BEGIN_NAMESPACE
-
-class QThread;
-
-class QSerialPortPrivate : public QSerialPortPrivateData
-{
- Q_DECLARE_PUBLIC(QSerialPort)
-
-public:
- QSerialPortPrivate(QSerialPort *q);
-
- bool open(QIODevice::OpenMode mode);
- void close();
-
- QSerialPort::PinoutSignals pinoutSignals();
-
- bool setDataTerminalReady(bool set);
- bool setRequestToSend(bool set);
-
- bool flush();
- bool clear(QSerialPort::Directions directions);
-
- bool sendBreak(int duration);
- bool setBreakEnabled(bool set);
-
- qint64 readData(char *data, qint64 maxSize);
-
- bool waitForReadyRead(int msec);
- bool waitForBytesWritten(int msec);
-
- bool setBaudRate();
- bool setBaudRate(qint32 baudRate, QSerialPort::Directions directions);
- bool setDataBits(QSerialPort::DataBits dataBits);
- bool setParity(QSerialPort::Parity parity);
- bool setStopBits(QSerialPort::StopBits stopBits);
- bool setFlowControl(QSerialPort::FlowControl flowControl);
- bool setDataErrorPolicy(QSerialPort::DataErrorPolicy policy);
-
- void processIoErrors(bool error);
- QSerialPort::SerialPortError decodeSystemError() const;
-
- bool notifyRead();
- bool notifyWrite();
-
- qint64 bytesToWrite() const;
- qint64 writeData(const char *data, qint64 maxSize);
-
- static QString portNameToSystemLocation(const QString &port);
- static QString portNameFromSystemLocation(const QString &location);
-
- static qint32 baudRateFromSetting(qint32 setting);
- static qint32 settingFromBaudRate(qint32 baudRate);
-
- static QList<qint32> standardBaudRates();
-
- DCB currentDcb;
- DCB restoredDcb;
- COMMTIMEOUTS currentCommTimeouts;
- COMMTIMEOUTS restoredCommTimeouts;
- HANDLE handle;
- bool parityErrorOccurred;
-
- QThread *eventNotifier;
- QMutex settingsChangeMutex;
-
-private:
- bool initialize(DWORD eventMask);
- bool updateDcb();
- bool updateCommTimeouts();
-
- bool waitForReadOrWrite(bool *selectForRead, bool *selectForWrite,
- bool checkRead, bool checkWrite,
- int msecs, bool *timedOut);
-
-};
-
-QT_END_NAMESPACE
-
-#endif // QSERIALPORT_WINCE_P_H
diff --git a/src/serialport/qserialportinfo_mac.cpp b/src/serialport/qserialportinfo_mac.cpp
index d400d68..8b1536f 100644
--- a/src/serialport/qserialportinfo_mac.cpp
+++ b/src/serialport/qserialportinfo_mac.cpp
@@ -35,7 +35,7 @@
#include "qserialportinfo.h"
#include "qserialportinfo_p.h"
-#include "qserialport_unix_p.h"
+#include "qserialport_p.h"
#include "private/qcore_mac_p.h"
diff --git a/src/serialport/qserialportinfo_unix.cpp b/src/serialport/qserialportinfo_unix.cpp
index 4479e97..a7a1186 100644
--- a/src/serialport/qserialportinfo_unix.cpp
+++ b/src/serialport/qserialportinfo_unix.cpp
@@ -35,7 +35,7 @@
#include "qserialportinfo.h"
#include "qserialportinfo_p.h"
-#include "qserialport_unix_p.h"
+#include "qserialport_p.h"
#include <QtCore/qlockfile.h>
#include <QtCore/qfile.h>
diff --git a/src/serialport/qserialportinfo_win.cpp b/src/serialport/qserialportinfo_win.cpp
index 0958617..4b30a09 100644
--- a/src/serialport/qserialportinfo_win.cpp
+++ b/src/serialport/qserialportinfo_win.cpp
@@ -35,7 +35,7 @@
#include "qserialportinfo.h"
#include "qserialportinfo_p.h"
-#include "qserialport_win_p.h"
+#include "qserialport_p.h"
#include <QtCore/quuid.h>
#include <QtCore/qpair.h>
diff --git a/src/serialport/qserialportinfo_wince.cpp b/src/serialport/qserialportinfo_wince.cpp
index 15d2cf7..4cb8b92 100644
--- a/src/serialport/qserialportinfo_wince.cpp
+++ b/src/serialport/qserialportinfo_wince.cpp
@@ -35,7 +35,7 @@
#include "qserialportinfo.h"
#include "qserialportinfo_p.h"
-#include "qserialport_wince_p.h"
+#include "qserialport_p.h"
#include <QtCore/qstringlist.h>
diff --git a/src/serialport/serialport-lib.pri b/src/serialport/serialport-lib.pri
index fa355eb..e1a2333 100644
--- a/src/serialport/serialport-lib.pri
+++ b/src/serialport/serialport-lib.pri
@@ -20,9 +20,6 @@ SOURCES += \
$$PWD/qserialportinfo.cpp
win32:!wince* {
- PRIVATE_HEADERS += \
- $$PWD/qserialport_win_p.h
-
SOURCES += \
$$PWD/qserialport_win.cpp \
$$PWD/qserialportinfo_win.cpp
@@ -31,18 +28,12 @@ win32:!wince* {
}
wince* {
- PRIVATE_HEADERS += \
- $$PWD/qserialport_wince_p.h
-
SOURCES += \
$$PWD/qserialport_wince.cpp \
$$PWD/qserialportinfo_wince.cpp
}
unix:!symbian {
- PRIVATE_HEADERS += \
- $$PWD/qserialport_unix_p.h
-
SOURCES += \
$$PWD/qserialport_unix.cpp