summaryrefslogtreecommitdiff
path: root/src/serialport/qserialport_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/serialport/qserialport_p.h')
-rw-r--r--src/serialport/qserialport_p.h83
1 files changed, 40 insertions, 43 deletions
diff --git a/src/serialport/qserialport_p.h b/src/serialport/qserialport_p.h
index 10fda34..b0955ae 100644
--- a/src/serialport/qserialport_p.h
+++ b/src/serialport/qserialport_p.h
@@ -56,6 +56,7 @@
#include "qserialport.h"
#include <private/qiodevice_p.h>
+#include <qdeadlinetimer.h>
#if defined(Q_OS_WIN32)
# include <qt_windows.h>
@@ -97,9 +98,12 @@ struct serial_struct {
# error Unsupported OS
#endif
+#ifndef QSERIALPORT_BUFFERSIZE
+#define QSERIALPORT_BUFFERSIZE 32768
+#endif
+
QT_BEGIN_NAMESPACE
-class QThread;
class QWinOverlappedIoNotifier;
class QTimer;
class QSocketNotifier;
@@ -113,7 +117,7 @@ class QSerialPortErrorInfo
public:
explicit QSerialPortErrorInfo(QSerialPort::SerialPortError newErrorCode = QSerialPort::UnknownError,
const QString &newErrorString = QString());
- QSerialPort::SerialPortError errorCode;
+ QSerialPort::SerialPortError errorCode = QSerialPort::UnknownError;
QString errorString;
};
@@ -121,11 +125,6 @@ class QSerialPortPrivate : public QIODevicePrivate
{
Q_DECLARE_PUBLIC(QSerialPort)
public:
- enum IoConstants {
- ReadChunkSize = 512,
- InitialBufferSize = 16384
- };
-
QSerialPortPrivate();
bool open(QIODevice::OpenMode mode);
@@ -158,33 +157,32 @@ public:
qint64 writeData(const char *data, qint64 maxSize);
+ bool initialize(QIODevice::OpenMode mode);
+
static QString portNameToSystemLocation(const QString &port);
static QString portNameFromSystemLocation(const QString &location);
-#if defined(Q_OS_UNIX)
- static qint32 settingFromBaudRate(qint32 baudRate);
-#endif
-
static QList<qint32> standardBaudRates();
- qint64 readBufferMaxSize;
- QSerialPort::SerialPortError error;
+ qint64 readBufferMaxSize = 0;
+ QSerialPort::SerialPortError error = QSerialPort::NoError;
QString systemLocation;
- qint32 inputBaudRate;
- qint32 outputBaudRate;
- QSerialPort::DataBits dataBits;
- QSerialPort::Parity parity;
- QSerialPort::StopBits stopBits;
- QSerialPort::FlowControl flowControl;
- bool settingsRestoredOnClose;
- bool isBreakEnabled;
+ qint32 inputBaudRate = QSerialPort::Baud9600;
+ qint32 outputBaudRate = QSerialPort::Baud9600;
+ QSerialPort::DataBits dataBits = QSerialPort::Data8;
+ QSerialPort::Parity parity = QSerialPort::NoParity;
+ QSerialPort::StopBits stopBits = QSerialPort::OneStop;
+ QSerialPort::FlowControl flowControl = QSerialPort::NoFlowControl;
+ bool settingsRestoredOnClose = true;
+ bool isBreakEnabled = false;
+
+ bool startAsyncRead();
#if defined(Q_OS_WIN32)
- bool initialize();
bool setDcb(DCB *dcb);
bool getDcb(DCB *dcb);
- OVERLAPPED *waitForNotified(int msecs);
+ OVERLAPPED *waitForNotified(QDeadlineTimer deadline);
qint64 queuedBytesCount(QSerialPort::Direction direction) const;
@@ -193,7 +191,6 @@ public:
bool completeAsyncWrite(qint64 bytesTransferred);
bool startAsyncCommunication();
- bool startAsyncRead();
bool _q_startAsyncWrite();
void _q_notified(DWORD numberOfBytes, DWORD errorCode, OVERLAPPED *overlapped);
@@ -202,23 +199,23 @@ public:
DCB restoredDcb;
COMMTIMEOUTS currentCommTimeouts;
COMMTIMEOUTS restoredCommTimeouts;
- HANDLE handle;
+ HANDLE handle = INVALID_HANDLE_VALUE;
QByteArray readChunkBuffer;
QByteArray writeChunkBuffer;
- bool communicationStarted;
- bool writeStarted;
- bool readStarted;
- QWinOverlappedIoNotifier *notifier;
- QTimer *startAsyncWriteTimer;
+ bool communicationStarted = false;
+ bool writeStarted = false;
+ bool readStarted = false;
+ QWinOverlappedIoNotifier *notifier = nullptr;
+ QTimer *startAsyncWriteTimer = nullptr;
OVERLAPPED communicationOverlapped;
OVERLAPPED readCompletionOverlapped;
OVERLAPPED writeCompletionOverlapped;
- DWORD originalEventMask;
- DWORD triggeredEventMask;
+ DWORD triggeredEventMask = 0;
#elif defined(Q_OS_UNIX)
- bool initialize(QIODevice::OpenMode mode);
+ static qint32 settingFromBaudRate(qint32 baudRate);
+
bool setTermios(const termios *tio);
bool getTermios(termios *tio);
@@ -246,20 +243,20 @@ public:
bool completeAsyncWrite();
struct termios restoredTermios;
- int descriptor;
+ int descriptor = -1;
- QSocketNotifier *readNotifier;
- QSocketNotifier *writeNotifier;
+ QSocketNotifier *readNotifier = nullptr;
+ QSocketNotifier *writeNotifier = nullptr;
- bool readPortNotifierCalled;
- bool readPortNotifierState;
- bool readPortNotifierStateSet;
+ bool readPortNotifierCalled = false;
+ bool readPortNotifierState = false;
+ bool readPortNotifierStateSet = false;
- bool emittedReadyRead;
- bool emittedBytesWritten;
+ bool emittedReadyRead = false;
+ bool emittedBytesWritten = false;
- qint64 pendingBytesWritten;
- bool writeSequenceStarted;
+ qint64 pendingBytesWritten = 0;
+ bool writeSequenceStarted = false;
QScopedPointer<QLockFile> lockFileScopedPointer;