summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenis Shienkov <denis.shienkov@gmail.com>2014-10-23 16:20:03 +0400
committerDenis Shienkov <denis.shienkov@gmail.com>2014-10-23 19:50:22 +0200
commit0c2819dafa67d5989ffb82283c36e1916db732b7 (patch)
tree05529ec198803a104ff0655a51c1f6dfaf285ce2
parentb7707238c85db36041a5fb6c4eda4c689835690a (diff)
downloadqtserialport-0c2819dafa67d5989ffb82283c36e1916db732b7.tar.gz
Drop the Qt4 support
Now QtSerialPort can be built for Qt5 only. QtSerialPort for Qt4 is developed in a separate branch. Change-Id: Iaaa95fb7cb0aedbfc1b17ed11717fff8f9c126a0 Reviewed-by: Sergey Belyashov <Sergey.Belyashov@gmail.com>
-rw-r--r--examples/serialport/blockingmaster/blockingmaster.pro6
-rw-r--r--examples/serialport/blockingslave/blockingslave.pro6
-rw-r--r--examples/serialport/cenumerator/cenumerator.pro7
-rw-r--r--examples/serialport/creaderasync/creaderasync.pro7
-rw-r--r--examples/serialport/creadersync/creadersync.pro7
-rw-r--r--examples/serialport/cwriterasync/cwriterasync.pro7
-rw-r--r--examples/serialport/cwritersync/cwritersync.pro7
-rw-r--r--examples/serialport/enumerator/enumerator.pro6
-rw-r--r--examples/serialport/serialport.pro6
-rw-r--r--examples/serialport/terminal/terminal.pro6
-rw-r--r--qtserialport.pro18
-rw-r--r--src/serialport/qserialport.cpp11
-rw-r--r--src/serialport/qserialport_symbian.cpp556
-rw-r--r--src/serialport/qserialport_symbian_p.h117
-rw-r--r--src/serialport/qserialportglobal.h5
-rw-r--r--src/serialport/qserialportinfo_symbian.cpp234
-rw-r--r--src/serialport/qt4support/include/QtCore/qlockfile.h79
-rw-r--r--src/serialport/qt4support/include/QtCore/qwineventnotifier.h79
-rw-r--r--src/serialport/qt4support/include/private/qcore_mac_p.h140
-rw-r--r--src/serialport/qt4support/include/private/qcore_unix_p.h116
-rw-r--r--src/serialport/qt4support/include/private/qlockfile_p.h96
-rw-r--r--src/serialport/qt4support/include/private/qringbuffer_p.h311
-rw-r--r--src/serialport/qt4support/install-helper.pri52
-rw-r--r--src/serialport/qt4support/serialport.prf27
-rw-r--r--src/serialport/qt4support/src/qlockfile.cpp344
-rw-r--r--src/serialport/qt4support/src/qlockfile_unix.cpp191
-rw-r--r--src/serialport/serialport-lib.pri42
-rw-r--r--src/serialport/serialport.pro19
-rw-r--r--tests/auto/qserialport/qserialport.pro6
-rw-r--r--tests/manual/qserialport/qserialport.pro6
-rw-r--r--tests/manual/qserialportinfo/qserialportinfo.pro6
31 files changed, 30 insertions, 2490 deletions
diff --git a/examples/serialport/blockingmaster/blockingmaster.pro b/examples/serialport/blockingmaster/blockingmaster.pro
index 5f21cdb..8f3e0a1 100644
--- a/examples/serialport/blockingmaster/blockingmaster.pro
+++ b/examples/serialport/blockingmaster/blockingmaster.pro
@@ -1,8 +1,4 @@
-greaterThan(QT_MAJOR_VERSION, 4) {
- QT += widgets serialport
-} else {
- include($$QTSERIALPORT_PROJECT_ROOT/src/serialport/qt4support/serialport.prf)
-}
+QT += widgets serialport
TARGET = blockingmaster
TEMPLATE = app
diff --git a/examples/serialport/blockingslave/blockingslave.pro b/examples/serialport/blockingslave/blockingslave.pro
index 5a5fb78..2477b52 100644
--- a/examples/serialport/blockingslave/blockingslave.pro
+++ b/examples/serialport/blockingslave/blockingslave.pro
@@ -1,8 +1,4 @@
-greaterThan(QT_MAJOR_VERSION, 4) {
- QT += widgets serialport
-} else {
- include($$QTSERIALPORT_PROJECT_ROOT/src/serialport/qt4support/serialport.prf)
-}
+QT += widgets serialport
TARGET = blockingslave
TEMPLATE = app
diff --git a/examples/serialport/cenumerator/cenumerator.pro b/examples/serialport/cenumerator/cenumerator.pro
index 7f87034..f5494fd 100644
--- a/examples/serialport/cenumerator/cenumerator.pro
+++ b/examples/serialport/cenumerator/cenumerator.pro
@@ -1,10 +1,5 @@
QT = core
-
-greaterThan(QT_MAJOR_VERSION, 4) {
- QT += serialport
-} else {
- include($$QTSERIALPORT_PROJECT_ROOT/src/serialport/qt4support/serialport.prf)
-}
+QT += serialport
CONFIG += console
CONFIG -= app_bundle
diff --git a/examples/serialport/creaderasync/creaderasync.pro b/examples/serialport/creaderasync/creaderasync.pro
index 27b17dc..3565dc9 100644
--- a/examples/serialport/creaderasync/creaderasync.pro
+++ b/examples/serialport/creaderasync/creaderasync.pro
@@ -1,10 +1,5 @@
QT = core
-
-greaterThan(QT_MAJOR_VERSION, 4) {
- QT += serialport
-} else {
- include($$QTSERIALPORT_PROJECT_ROOT/src/serialport/qt4support/serialport.prf)
-}
+QT += serialport
CONFIG += console
CONFIG -= app_bundle
diff --git a/examples/serialport/creadersync/creadersync.pro b/examples/serialport/creadersync/creadersync.pro
index 3e9a199..ee9eaf2 100644
--- a/examples/serialport/creadersync/creadersync.pro
+++ b/examples/serialport/creadersync/creadersync.pro
@@ -1,10 +1,5 @@
QT = core
-
-greaterThan(QT_MAJOR_VERSION, 4) {
- QT += serialport
-} else {
- include($$QTSERIALPORT_PROJECT_ROOT/src/serialport/qt4support/serialport.prf)
-}
+QT += serialport
CONFIG += console
CONFIG -= app_bundle
diff --git a/examples/serialport/cwriterasync/cwriterasync.pro b/examples/serialport/cwriterasync/cwriterasync.pro
index 8a64ceb..0945f1d 100644
--- a/examples/serialport/cwriterasync/cwriterasync.pro
+++ b/examples/serialport/cwriterasync/cwriterasync.pro
@@ -1,10 +1,5 @@
QT = core
-
-greaterThan(QT_MAJOR_VERSION, 4) {
- QT += serialport
-} else {
- include($$QTSERIALPORT_PROJECT_ROOT/src/serialport/qt4support/serialport.prf)
-}
+QT += serialport
CONFIG += console
CONFIG -= app_bundle
diff --git a/examples/serialport/cwritersync/cwritersync.pro b/examples/serialport/cwritersync/cwritersync.pro
index 14cba72..08f50a2 100644
--- a/examples/serialport/cwritersync/cwritersync.pro
+++ b/examples/serialport/cwritersync/cwritersync.pro
@@ -1,10 +1,5 @@
QT = core
-
-greaterThan(QT_MAJOR_VERSION, 4) {
- QT += serialport
-} else {
- include($$QTSERIALPORT_PROJECT_ROOT/src/serialport/qt4support/serialport.prf)
-}
+QT += serialport
CONFIG += console
CONFIG -= app_bundle
diff --git a/examples/serialport/enumerator/enumerator.pro b/examples/serialport/enumerator/enumerator.pro
index 21233a8..9819fd7 100644
--- a/examples/serialport/enumerator/enumerator.pro
+++ b/examples/serialport/enumerator/enumerator.pro
@@ -1,8 +1,4 @@
-greaterThan(QT_MAJOR_VERSION, 4) {
- QT += widgets serialport
-} else {
- include($$QTSERIALPORT_PROJECT_ROOT/src/serialport/qt4support/serialport.prf)
-}
+QT += widgets serialport
TARGET = enumerator
TEMPLATE = app
diff --git a/examples/serialport/serialport.pro b/examples/serialport/serialport.pro
index ba8d167..c0e77df 100644
--- a/examples/serialport/serialport.pro
+++ b/examples/serialport/serialport.pro
@@ -1,8 +1,4 @@
TEMPLATE = subdirs
CONFIG += ordered
SUBDIRS = cenumerator creaderasync creadersync cwriterasync cwritersync
-greaterThan(QT_MAJOR_VERSION, 4) {
- !isEmpty(QT.widgets.name):SUBDIRS += enumerator terminal blockingmaster blockingslave
-} else {
- SUBDIRS += enumerator terminal blockingmaster blockingslave master slave
-}
+!isEmpty(QT.widgets.name):SUBDIRS += enumerator terminal blockingmaster blockingslave
diff --git a/examples/serialport/terminal/terminal.pro b/examples/serialport/terminal/terminal.pro
index 0a5b545..1e45e55 100644
--- a/examples/serialport/terminal/terminal.pro
+++ b/examples/serialport/terminal/terminal.pro
@@ -1,8 +1,4 @@
-greaterThan(QT_MAJOR_VERSION, 4) {
- QT += widgets serialport
-} else {
- include($$QTSERIALPORT_PROJECT_ROOT/src/serialport/qt4support/serialport.prf)
-}
+QT += widgets serialport
TARGET = terminal
TEMPLATE = app
diff --git a/qtserialport.pro b/qtserialport.pro
index 3220d2f..b3ebb8b 100644
--- a/qtserialport.pro
+++ b/qtserialport.pro
@@ -1,14 +1,8 @@
-requires(!winrt)
-
lessThan(QT_MAJOR_VERSION, 5) {
- TEMPLATE = subdirs
- SUBDIRS = src examples tests
- CONFIG += ordered
-
- !infile($$OUT_PWD/.qmake.cache, QTSERIALPORT_PROJECT_ROOT) {
- system("echo QTSERIALPORT_PROJECT_ROOT = $$PWD >> $$OUT_PWD/.qmake.cache")
- system("echo QTSERIALPORT_BUILD_ROOT = $$OUT_PWD >> $$OUT_PWD/.qmake.cache")
- }
-} else {
- load(qt_parts)
+ message("Cannot build current QtSerialPort sources with Qt version $${QT_VERSION}.")
+ error("Use at least Qt 5.0.0 or try to download QtSerialPort for Qt4.")
}
+
+requires(!winrt)
+
+load(qt_parts)
diff --git a/src/serialport/qserialport.cpp b/src/serialport/qserialport.cpp
index 82bcde3..04685cd 100644
--- a/src/serialport/qserialport.cpp
+++ b/src/serialport/qserialport.cpp
@@ -41,8 +41,6 @@
#include "qserialport_wince_p.h"
#elif defined (Q_OS_WIN)
#include "qserialport_win_p.h"
-#elif defined (Q_OS_SYMBIAN)
-#include "qserialport_symbian_p.h"
#elif defined (Q_OS_UNIX)
#include "qserialport_unix_p.h"
#else
@@ -467,10 +465,6 @@ void QSerialPort::setPort(const QSerialPortInfo &serialPortInfo)
\li Removes the suffix ":" from the system location
and returns the remainder of the string.
\row
- \li Symbian
- \li Returns the system location as it is,
- as it is equivalent to the port name.
- \row
\li GNU/Linux
\li Removes the prefix "/dev/" from the system location
and returns the remainder of the string.
@@ -618,10 +612,9 @@ bool QSerialPort::settingsRestoredOnClose() const
after that the opening of the port succeeds.
\warning Setting the AllDirections flag is only supported on
- the Windows, Windows CE, and Symbian platforms.
+ the Windows, Windows CE platforms.
- \warning Returns equal baud rate in any direction on Windows, Windows CE, and
- Symbian.
+ \warning Returns equal baud rate in any direction on Windows, Windows CE.
The default value is Baud9600, i.e. 9600 bits per second.
*/
diff --git a/src/serialport/qserialport_symbian.cpp b/src/serialport/qserialport_symbian.cpp
deleted file mode 100644
index ec7e96d..0000000
--- a/src/serialport/qserialport_symbian.cpp
+++ /dev/null
@@ -1,556 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Denis Shienkov <denis.shienkov@gmail.com>
-** 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$
-**
-****************************************************************************/
-
-#include "qserialport_symbian_p.h"
-
-#include <QtCore/qmap.h>
-
-#include <e32base.h>
-//#include <e32test.h>
-#include <f32file.h>
-
-QT_BEGIN_NAMESPACE
-
-// Physical device driver.
-#ifdef __WINS__
-_LIT(KPddName, "ECDRV");
-#else // defined (__EPOC32__)
-_LIT(KPddName, "EUART");
-#endif
-
-// Logical device driver.
-_LIT(KLddName,"ECOMM");
-
-// Modules names.
-_LIT(KRS232ModuleName, "ECUART");
-_LIT(KBluetoothModuleName, "BTCOMM");
-_LIT(KInfraRedModuleName, "IRCOMM");
-_LIT(KACMModuleName, "ECACM");
-
-// Return false on error load.
-static bool loadDevices()
-{
- TInt r = KErrNone;
-#ifdef __WINS__
- RFs fileServer;
- r = User::LeaveIfError(fileServer.Connect());
- if (r != KErrNone)
- return false;
- fileServer.Close ();
-#endif
-
- r = User::LoadPhysicalDevice(KPddName);
- if (r != KErrNone && r != KErrAlreadyExists)
- return false; //User::Leave(r);
-
- r = User::LoadLogicalDevice(KLddName);
- if (r != KErrNone && r != KErrAlreadyExists)
- return false; //User::Leave(r);
-
-#ifndef __WINS__
- r = StartC32();
- if (r != KErrNone && r != KErrAlreadyExists)
- return false; //User::Leave(r);
-#endif
-
- return true;
-}
-
-QSerialPortPrivate::QSerialPortPrivate(QSerialPort *q)
- : QSerialPortPrivateData(q)
- , errnum(KErrNone)
-{
-}
-
-bool QSerialPortPrivate::open(QIODevice::OpenMode mode)
-{
- Q_Q(QSerialPort);
-
- // FIXME: Maybe need added check an ReadWrite open mode?
- Q_UNUSED(mode)
-
- if (!loadDevices()) {
- q->setError(QSerialPort::UnknownError);
- return false;
- }
-
- RCommServ server;
- errnum = server.Connect();
- if (errnum != KErrNone) {
- q->setError(decodeSystemError());
- return false;
- }
-
- if (systemLocation.contains("BTCOMM"))
- errnum = server.LoadCommModule(KBluetoothModuleName);
- else if (systemLocation.contains("IRCOMM"))
- errnum = server.LoadCommModule(KInfraRedModuleName);
- else if (systemLocation.contains("ACM"))
- errnum = server.LoadCommModule(KACMModuleName);
- else
- errnum = server.LoadCommModule(KRS232ModuleName);
-
- if (errnum != KErrNone) {
- q->setError(decodeSystemError());
- return false;
- }
-
- // In Symbian OS port opening only in R/W mode?
- TPtrC portName(static_cast<const TUint16*>(systemLocation.utf16()), systemLocation.length());
- errnum = descriptor.Open(server, portName, ECommExclusive);
-
- if (errnum != KErrNone) {
- q->setError(decodeSystemError());
- return false;
- }
-
- // Save current port settings.
- errnum = descriptor.Config(restoredSettings);
- if (errnum != KErrNone) {
- q->setError(decodeSystemError());
- return false;
- }
-
- return true;
-}
-
-void QSerialPortPrivate::close()
-{
- if (settingsRestoredOnClose)
- descriptor.SetConfig(restoredSettings);
- descriptor.Close();
-}
-
-QSerialPort::PinoutSignals QSerialPortPrivate::pinoutSignals()
-{
- QSerialPort::PinoutSignals ret = QSerialPort::NoSignal;
-
- TUint signalMask = 0;
- descriptor.Signals(signalMask);
-
- if (signalMask & KSignalCTS)
- ret |= QSerialPort::ClearToSendSignal;
- if (signalMask & KSignalDSR)
- ret |= QSerialPort::DataSetReadySignal;
- if (signalMask & KSignalDCD)
- ret |= QSerialPort::DataCarrierDetectSignal;
- if (signalMask & KSignalRNG)
- ret |= QSerialPort::RingIndicatorSignal;
- if (signalMask & KSignalRTS)
- ret |= QSerialPort::RequestToSendSignal;
- if (signalMask & KSignalDTR)
- ret |= QSerialPort::DataTerminalReadySignal;
-
- //if (signalMask & KSignalBreak)
- // ret |=
- return ret;
-}
-
-bool QSerialPortPrivate::setDataTerminalReady(bool set)
-{
- TInt r;
- if (set)
- r = descriptor.SetSignalsToMark(KSignalDTR);
- else
- r = descriptor.SetSignalsToSpace(KSignalDTR);
-
- return r == KErrNone;
-}
-
-bool QSerialPortPrivate::setRequestToSend(bool set)
-{
- TInt r;
- if (set)
- r = descriptor.SetSignalsToMark(KSignalRTS);
- else
- r = descriptor.SetSignalsToSpace(KSignalRTS);
-
- return r == KErrNone;
-}
-
-bool QSerialPortPrivate::flush()
-{
- // TODO: Implement me
- return false;
-}
-
-bool QSerialPortPrivate::clear(QSerialPort::Directions directions)
-{
- TUint flags = 0;
- if (directions & QSerialPort::Input)
- flags |= KCommResetRx;
- if (directions & QSerialPort::Output)
- flags |= KCommResetTx;
- TInt r = descriptor.ResetBuffers(flags);
- return r == KErrNone;
-}
-
-bool QSerialPortPrivate::sendBreak(int duration)
-{
- TRequestStatus status;
- descriptor.Break(status, TTimeIntervalMicroSeconds32(duration * 1000));
- return false;
-}
-
-bool QSerialPortPrivate::setBreakEnabled(bool set)
-{
- // TODO: Implement me
- return false;
-}
-
-void QSerialPortPrivate::startWriting()
-{
- // TODO: Implement me
-}
-
-bool QSerialPortPrivate::waitForReadyRead(int msec)
-{
- // TODO: Implement me
- return false;
-}
-
-bool QSerialPortPrivate::waitForBytesWritten(int msec)
-{
- // TODO: Implement me
- return false;
-}
-
-bool QSerialPortPrivate::setBaudRate()
-{
- return setBaudRate(inputBaudRate, QSerialPort::AllDirections);
-}
-
-bool QSerialPortPrivate::setBaudRate(qint32 baudRate, QSerialPort::Directions directions)
-{
- Q_Q(QSerialPort);
-
- if (directions != QSerialPort::AllDirections) {
- q->setError(QSerialPort::UnsupportedOperationError);
- return false;
- }
-
- baudRate = settingFromBaudRate(baudRate);
- if (baudRate)
- currentSettings().iRate = static_cast<TBps>(baudRate);
- else {
- q->setError(QSerialPort::UnsupportedOperationError);
- return false;
- }
-
- return updateCommConfig();
-}
-
-bool QSerialPortPrivate::setDataBits(QSerialPort::DataBits dataBits)
-{
- switch (dataBits) {
- case QSerialPort::Data5:
- currentSettings().iDataBits = EData5;
- break;
- case QSerialPort::Data6:
- currentSettings().iDataBits = EData6;
- break;
- case QSerialPort::Data7:
- currentSettings().iDataBits = EData7;
- break;
- case QSerialPort::Data8:
- currentSettings().iDataBits = EData8;
- break;
- default:
- currentSettings().iDataBits = EData8;
- break;
- }
-
- return updateCommConfig();
-}
-
-bool QSerialPortPrivate::setParity(QSerialPort::Parity parity)
-{
- switch (parity) {
- case QSerialPort::NoParity:
- currentSettings().iParity = EParityNone;
- break;
- case QSerialPort::EvenParity:
- currentSettings().iParity = EParityEven;
- break;
- case QSerialPort::OddParity:
- currentSettings().iParity = EParityOdd;
- break;
- case QSerialPort::MarkParity:
- currentSettings().iParity = EParityMark;
- break;
- case QSerialPort::SpaceParity:
- currentSettings().iParity = EParitySpace;
- break;
- default:
- currentSettings().iParity = EParityNone;
- break;
- }
-
- return updateCommConfig();
-}
-
-bool QSerialPortPrivate::setStopBits(QSerialPort::StopBits stopBits)
-{
- switch (stopBits) {
- case QSerialPort::OneStop:
- currentSettings().iStopBits = EStop1;
- break;
- case QSerialPort::TwoStop:
- currentSettings().iStopBits = EStop2;
- break;
- default:
- currentSettings().iStopBits = EStop1;
- break;
- }
-
- return updateCommConfig();
-}
-
-bool QSerialPortPrivate::setFlowControl(QSerialPort::FlowControl flowControl)
-{
- switch (flowControl) {
- case QSerialPort::NoFlowControl:
- currentSettings().iHandshake = KConfigFailDSR;
- break;
- case QSerialPort::HardwareControl:
- currentSettings().iHandshake = KConfigObeyCTS | KConfigFreeRTS;
- break;
- case QSerialPort::SoftwareControl:
- currentSettings().iHandshake = KConfigObeyXoff | KConfigSendXoff;
- break;
- default:
- currentSettings().iHandshake = KConfigFailDSR;
- break;
- }
-
- return updateCommConfig();
-}
-
-bool QSerialPortPrivate::setDataErrorPolicy(QSerialPort::DataErrorPolicy policy)
-{
- // TODO: Implement me
- return false;
-}
-
-bool QSerialPortPrivate::notifyRead()
-{
- // TODO: Implement me
- return false;
-}
-
-bool QSerialPortPrivate::notifyWrite()
-{
- // TODO: Implement me
- return false;
-}
-
-bool QSerialPortPrivate::updateCommConfig()
-{
- Q_Q(QSerialPort);
-
- if (descriptor.SetConfig(currentSettings) != KErrNone) {
- q->setError(QSerialPort::UnsupportedOperationError);
- return false;
- }
- return true;
-}
-
-QSerialPort::SerialPortError QSerialPortPrivate::decodeSystemError() const
-{
- QSerialPort::SerialPortError error;
- switch (errnum) {
- case KErrPermissionDenied:
- error = QSerialPort::DeviceNotFoundError;
- break;
- case KErrLocked:
- error = QSerialPort::PermissionError;
- break;
- case KErrAccessDenied:
- error = QSerialPort::PermissionError;
- break;
- default:
- error = QSerialPort::UnknownError;
- break;
- }
- return error;
-}
-
-bool QSerialPortPrivate::waitForReadOrWrite(bool *selectForRead, bool *selectForWrite,
- bool checkRead, bool checkWrite,
- int msecs, bool *timedOut)
-{
-
- // FIXME: I'm not sure in implementation this method.
- // Someone needs to check and correct.
-
- TRequestStatus timerStatus;
- TRequestStatus readStatus;
- TRequestStatus writeStatus;
-
- if (msecs > 0) {
- if (!selectTimer.Handle()) {
- if (selectTimer.CreateLocal() != KErrNone)
- return false;
- }
- selectTimer.HighRes(timerStatus, msecs * 1000);
- }
-
- if (checkRead)
- descriptor.NotifyDataAvailable(readStatus);
-
- if (checkWrite)
- descriptor.NotifyOutputEmpty(writeStatus);
-
- enum { STATUSES_COUNT = 3 };
- TRequestStatus *statuses[STATUSES_COUNT];
- TInt num = 0;
- statuses[num++] = &timerStatus;
- statuses[num++] = &readStatus;
- statuses[num++] = &writeStatus;
-
- User::WaitForNRequest(statuses, num);
-
- bool result = false;
-
- // By timeout?
- if (timerStatus != KRequestPending) {
- Q_ASSERT(selectForRead);
- *selectForRead = false;
- Q_ASSERT(selectForWrite);
- *selectForWrite = false;
- } else {
- selectTimer.Cancel();
- User::WaitForRequest(timerStatus);
-
- // By read?
- if (readStatus != KRequestPending) {
- Q_ASSERT(selectForRead);
- *selectForRead = true;
- }
-
- // By write?
- if (writeStatus != KRequestPending) {
- Q_ASSERT(selectForWrite);
- *selectForWrite = true;
- }
-
- if (checkRead)
- descriptor.NotifyDataAvailableCancel();
- if (checkWrite)
- descriptor.NotifyOutputEmptyCancel();
-
- result = true;
- }
- return result;
-}
-
-QString QSerialPortPrivate::portNameToSystemLocation(const QString &port)
-{
- // Port name is equval to port systemLocation.
- return port;
-}
-
-QString QSerialPortPrivate::portNameFromSystemLocation(const QString &location)
-{
- // Port name is equval to port systemLocation.
- return location;
-}
-
-typedef QMap<qint32, qint32> BaudRateMap;
-
-// This table contains correspondences standard pairs values of
-// baud rates that are defined in files
-// - d32comm.h for Symbian^3
-// - d32public.h for Symbian SR1
-
-static const BaudRateMap createStandardBaudRateMap()
-{
- BaudRateMap baudRateMap;
-
- baudRateMap.insert(50, EBps50)
- baudRateMap.insert(75, EBps75)
- baudRateMap.insert(110, EBps110)
- baudRateMap.insert(134, EBps134)
- baudRateMap.insert(150, EBps150)
- baudRateMap.insert(300, EBps300)
- baudRateMap.insert(600, EBps600)
- baudRateMap.insert(1200, EBps1200)
- baudRateMap.insert(1800, EBps1800)
- baudRateMap.insert(2000, EBps2000)
- baudRateMap.insert(2400, EBps2400)
- baudRateMap.insert(3600, EBps3600)
- baudRateMap.insert(4800, EBps4800)
- baudRateMap.insert(7200, EBps7200)
- baudRateMap.insert(9600, EBps9600)
- baudRateMap.insert(19200, EBps19200)
- baudRateMap.insert(38400, EBps38400)
- baudRateMap.insert(57600, EBps57600)
- baudRateMap.insert(115200, EBps115200)
- baudRateMap.insert(230400, EBps230400)
- baudRateMap.insert(460800, EBps460800)
- baudRateMap.insert(576000, EBps576000)
- baudRateMap.insert(921600, EBps921600)
- baudRateMap.insert(1152000, EBps1152000)
- // << baudRateMap.insert(1843200, EBps1843200) only for Symbian SR1
- baudRateMap.insert(4000000, EBps4000000);
-
- return baudRateMap;
-}
-
-static const BaudRateMap& standardBaudRateMap()
-{
- static const BaudRateMap baudRateMap = createStandardBaudRateMap();
- return baudRateMap;
-}
-
-qint32 QSerialPortPrivate::baudRateFromSetting(qint32 setting)
-{
- return standardBaudRateMap().key(setting);
-}
-
-qint32 QSerialPortPrivate::settingFromBaudRate(qint32 baudRate)
-{
- return standardBaudRateMap().value(baudRate);
-}
-
-QList<qint32> QSerialPortPrivate::standardBaudRates()
-{
- return standardBaudRateMap().keys();
-}
-
-QSerialPort::Handle QSerialPort::handle() const
-{
- return -1;
-}
-
-QT_END_NAMESPACE
diff --git a/src/serialport/qserialport_symbian_p.h b/src/serialport/qserialport_symbian_p.h
deleted file mode 100644
index 2c52d1c..0000000
--- a/src/serialport/qserialport_symbian_p.h
+++ /dev/null
@@ -1,117 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Denis Shienkov <denis.shienkov@gmail.com>
-** 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_SYMBIAN_P_H
-#define QSERIALPORT_SYMBIAN_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 <c32comm.h>
-
-QT_BEGIN_NAMESPACE
-
-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);
-
- void startWriting();
-
- 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);
-
- bool notifyRead();
- bool notifyWrite();
-
- 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();
-
- TCommConfig currentSettings;
- TCommConfig restoredSettings;
- RComm descriptor;
- mutable RTimer selectTimer;
- TInt errnum;
-
-private:
- bool updateCommConfig();
-
- QSerialPort::SerialPortError decodeSystemError() const;
-
- bool waitForReadOrWrite(bool *selectForRead, bool *selectForWrite,
- bool checkRead, bool checkWrite,
- int msecs, bool *timedOut);
-};
-
-QT_END_NAMESPACE
-
-#endif // QSERIALPORT_SYMBIAN_P_H
diff --git a/src/serialport/qserialportglobal.h b/src/serialport/qserialportglobal.h
index 7aa5caa..b984593 100644
--- a/src/serialport/qserialportglobal.h
+++ b/src/serialport/qserialportglobal.h
@@ -50,11 +50,6 @@ QT_BEGIN_NAMESPACE
# define Q_SERIALPORT_EXPORT
#endif
-// These macros have been available only since Qt 5.0
-#ifndef QT_DEPRECATED_SINCE
-#define QT_DEPRECATED_SINCE(major, minor) 1
-#endif
-
#ifndef Q_DECL_OVERRIDE
#define Q_DECL_OVERRIDE
#endif
diff --git a/src/serialport/qserialportinfo_symbian.cpp b/src/serialport/qserialportinfo_symbian.cpp
deleted file mode 100644
index d320b11..0000000
--- a/src/serialport/qserialportinfo_symbian.cpp
+++ /dev/null
@@ -1,234 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011-2012 Denis Shienkov <denis.shienkov@gmail.com>
-** Copyright (C) 2011 Sergey Belyashov <Sergey.Belyashov@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$
-**
-****************************************************************************/
-
-#include "qserialportinfo.h"
-#include "qserialportinfo_p.h"
-#include "qserialport_symbian_p.h"
-
-#include <e32base.h>
-#include <c32comm.h>
-#include <f32file.h>
-
-#include <QtCore/qobject.h>
-
-QT_BEGIN_NAMESPACE
-
-#ifdef __WINS__
-_LIT(KPddName, "ECDRV");
-#else
-_LIT(KPddName, "EUART");
-#endif
-
-_LIT(KLddName,"ECOMM");
-
-_LIT(KRS232ModuleName , "ECUART");
-_LIT(KBluetoothModuleName , "BTCOMM");
-_LIT(KInfraRedModuleName , "IRCOMM");
-_LIT(KACMModuleName, "ECACM");
-
-static bool loadDevices()
-{
- TInt r = KErrNone;
-#ifdef __WINS__
- RFs fileServer;
- r = User::LeaveIfError(fileServer.Connect());
- if (r != KErrNone)
- return false;
- fileServer.Close ();
-#endif
-
- r = User::LoadPhysicalDevice(KPddName);
- if (r != KErrNone && r != KErrAlreadyExists)
- return false;
-
- r = User::LoadLogicalDevice(KLddName);
- if (r != KErrNone && r != KErrAlreadyExists)
- return false;
-
-#ifndef __WINS__
- r = StartC32();
- if (r != KErrNone && r != KErrAlreadyExists)
- return false;
-#endif
-
- return true;
-}
-
-QList<QSerialPortInfo> QSerialPortInfo::availablePorts()
-{
- QList<QSerialPortInfo> serialPortInfoList;
-
- if (!loadDevices())
- return serialPortInfoList;
-
- RCommServ server;
- TInt r = server.Connect();
- if (r != KErrNone)
- return serialPortInfoList;
-
- TSerialInfo nativeSerialInfo;
- QString s("%1::%2");
-
- // FIXME: Get info about RS232 ports.
- r = server.LoadCommModule(KRS232ModuleName);
- if (r == KErrNone) {
- r = server.GetPortInfo(KRS232ModuleName, nativeSerialInfo);
- if (r == KErrNone) {
- for (quint32 i = nativeSerialInfo.iLowUnit; i < nativeSerialInfo.iHighUnit + 1; ++i) {
-
- QSerialPortInfo serialPortInfo;
-
- serialPortInfo.d_ptr->device = s
- .arg(QString::fromUtf16(nativeSerialInfo.iName.Ptr(), nativeSerialInfo.iName.Length()))
- .arg(i);
- serialPortInfo.d_ptr->portName = serialPortInfo.d_ptr->device;
- serialPortInfo.d_ptr->description =
- QString::fromUtf16(nativeSerialInfo.iDescription.Ptr(), nativeSerialInfo.iDescription.Length());
- serialPortInfo.d_ptr->manufacturer = QString(QObject::tr("Unknown."));
- serialPortInfo.d_ptr->serialNumber = QString(QObject::tr("Unknown."));
- serialPortInfoList.append(serialPortInfo);
- }
- }
- }
-
- // FIXME: Get info about Bluetooth ports.
- r = server.LoadCommModule(KBluetoothModuleName);
- if (r == KErrNone) {
- r = server.GetPortInfo(KBluetoothModuleName, nativeSerialInfo);
- if (r == KErrNone) {
- for (quint32 i = nativeSerialInfo.iLowUnit; i < nativeSerialInfo.iHighUnit + 1; ++i) {
-
- QSerialPortInfo serialPortInfo;
-
- serialPortInfo.d_ptr->device = s
- .arg(QString::fromUtf16(nativeSerialInfo.iName.Ptr(), nativeSerialInfo.iName.Length()))
- .arg(i);
- serialPortInfo.d_ptr->portName = serialPortInfo.d_ptr->device;
- serialPortInfo.d_ptr->description =
- QString::fromUtf16(nativeSerialInfo.iDescription.Ptr(), nativeSerialInfo.iDescription.Length());
- serialPortInfo.d_ptr->manufacturer = QString(QObject::tr("Unknown."));
- serialPortInfo.d_ptr->serialNumber = QString(QObject::tr("Unknown."));
- serialPortInfoList.append(serialPortInfo);
- }
- }
- }
-
- // FIXME: Get info about InfraRed ports.
- r = server.LoadCommModule(KInfraRedModuleName);
- if (r == KErrNone) {
- r = server.GetPortInfo(KInfraRedModuleName, nativeSerialInfo);
- if (r == KErrNone) {
- for (quint32 i = nativeSerialInfo.iLowUnit; i < nativeSerialInfo.iHighUnit + 1; ++i) {
-
- QSerialPortInfo serialPortInfo;
-
- serialPortInfo.d_ptr->device = s
- .arg(QString::fromUtf16(nativeSerialInfo.iName.Ptr(), nativeSerialInfo.iName.Length()))
- .arg(i);
- serialPortInfo.d_ptr->portName = serialPortInfo.d_ptr->device;
- serialPortInfo.d_ptr->description =
- QString::fromUtf16(nativeSerialInfo.iDescription.Ptr(), nativeSerialInfo.iDescription.Length());
- serialPortInfo.d_ptr->manufacturer = QString(QObject::tr("Unknown."));
- serialPortInfoList.append(serialPortInfo);
- }
- }
- }
-
- // FIXME: Get info about ACM ports.
- r = server.LoadCommModule(KACMModuleName);
- if (r == KErrNone) {
- r = server.GetPortInfo(KACMModuleName, nativeSerialInfo);
- if (r == KErrNone) {
- for (quint32 i = nativeSerialInfo.iLowUnit; i < nativeSerialInfo.iHighUnit + 1; ++i) {
-
- QSerialPortInfo serialPortInfo;
-
- serialPortInfo.d_ptr->device = s
- .arg(QString::fromUtf16(nativeSerialInfo.iName.Ptr(), nativeSerialInfo.iName.Length()))
- .arg(i);
- serialPortInfo.d_ptr->portName = QSerialPortPrivate::portNameFromSystemLocation(serialPortInfo.d_ptr->device);
- serialPortInfo.d_ptr->description =
- QString::fromUtf16(nativeSerialInfo.iDescription.Ptr(), nativeSerialInfo.iDescription.Length());
- serialPortInfo.d_ptr->manufacturer = QString(QObject::tr("Unknown."));
- serialPortInfoList.append(serialPortInfo);
- }
- }
- }
-
- return serialPortInfoList;
-}
-
-QList<qint32> QSerialPortInfo::standardBaudRates()
-{
- return QSerialPortPrivate::standardBaudRates();
-}
-
-bool QSerialPortInfo::isBusy() const
-{
- if (!loadDevices())
- return false;
-
- RCommServ server;
- TInt r = server.Connect();
- if (r != KErrNone)
- return false;
-
- RComm port;
- TPtrC portName(static_cast<const TUint16*>(systemLocation().utf16()), systemLocation().length());
- r = port.Open(server, portName, ECommExclusive);
- if (r == KErrNone)
- port.Close();
- return r == KErrLocked;
-}
-
-bool QSerialPortInfo::isValid() const
-{
- if (!loadDevices())
- return false;
-
- RCommServ server;
- TInt r = server.Connect();
- if (r != KErrNone)
- return false;
-
- RComm port;
- TPtrC portName(static_cast<const TUint16*>(systemLocation().utf16()), systemLocation().length());
- r = port.Open(server, portName, ECommExclusive);
- if (r == KErrNone)
- port.Close();
- return r == KErrNone || r == KErrLocked;
-}
-
-QT_END_NAMESPACE
diff --git a/src/serialport/qt4support/include/QtCore/qlockfile.h b/src/serialport/qt4support/include/QtCore/qlockfile.h
deleted file mode 100644
index a35eee5..0000000
--- a/src/serialport/qt4support/include/QtCore/qlockfile.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 David Faure <faure+bluesystems@kde.org>
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the QtCore 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 QLOCKFILE_H
-#define QLOCKFILE_H
-
-#include <QtCore/qstring.h>
-#include <QtCore/qscopedpointer.h>
-
-QT_BEGIN_NAMESPACE
-
-class QLockFilePrivate;
-
-class Q_CORE_EXPORT QLockFile
-{
-public:
- QLockFile(const QString &fileName);
- ~QLockFile();
-
- bool lock();
- bool tryLock(int timeout = 0);
- void unlock();
-
- void setStaleLockTime(int);
- int staleLockTime() const;
-
- bool isLocked() const;
- bool getLockInfo(qint64 *pid, QString *hostname, QString *appname) const;
- bool removeStaleLockFile();
-
- enum LockError {
- NoError = 0,
- LockFailedError = 1,
- PermissionError = 2,
- UnknownError = 3
- };
- LockError error() const;
-
-protected:
- QScopedPointer<QLockFilePrivate> d_ptr;
-
-private:
- Q_DECLARE_PRIVATE(QLockFile)
- Q_DISABLE_COPY(QLockFile)
-};
-
-QT_END_NAMESPACE
-
-#endif // QLOCKFILE_H
diff --git a/src/serialport/qt4support/include/QtCore/qwineventnotifier.h b/src/serialport/qt4support/include/QtCore/qwineventnotifier.h
deleted file mode 100644
index 6d83592..0000000
--- a/src/serialport/qt4support/include/QtCore/qwineventnotifier.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the QtCore 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 QWINEVENTNOTIFIER_H
-#define QWINEVENTNOTIFIER_H
-
-#include "QtCore/qobject.h"
-
-#ifdef Q_OS_WIN
-#include "QtCore/qt_windows.h"
-
-QT_BEGIN_NAMESPACE
-
-class Q_CORE_EXPORT QWinEventNotifier : public QObject
-{
- Q_OBJECT
- Q_DECLARE_PRIVATE(QObject)
-
-public:
- explicit QWinEventNotifier(QObject *parent = 0);
- explicit QWinEventNotifier(HANDLE hEvent, QObject *parent = 0);
- ~QWinEventNotifier();
-
- void setHandle(HANDLE hEvent);
- HANDLE handle() const;
-
- bool isEnabled() const;
-
-public Q_SLOTS:
- void setEnabled(bool enable);
-
-Q_SIGNALS:
- void activated(HANDLE hEvent);
-
-protected:
- bool event(QEvent * e);
-
-private:
- Q_DISABLE_COPY(QWinEventNotifier)
-
- HANDLE handleToEvent;
- bool enabled;
-};
-
-QT_END_NAMESPACE
-
-#endif // Q_OS_WIN
-
-#endif // QWINEVENTNOTIFIER_H
diff --git a/src/serialport/qt4support/include/private/qcore_mac_p.h b/src/serialport/qt4support/include/private/qcore_mac_p.h
deleted file mode 100644
index a5c79fa..0000000
--- a/src/serialport/qt4support/include/private/qcore_mac_p.h
+++ /dev/null
@@ -1,140 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the QtCore 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 QCORE_MAC_P_H
-#define QCORE_MAC_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists for the convenience
-// of other Qt classes. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#ifndef __IMAGECAPTURE__
-# define __IMAGECAPTURE__
-#endif
-
-#if defined(QT_BOOTSTRAPPED)
-#include <ApplicationServices/ApplicationServices.h>
-#else
-#include <CoreFoundation/CoreFoundation.h>
-#endif
-
-#include "qglobal.h"
-
-#ifdef Q_OS_MACX
-#include <CoreServices/CoreServices.h>
-#endif
-
-#ifdef __OBJC__
-#include <Foundation/Foundation.h>
-#endif
-
-#include "qstring.h"
-
-#if defined( __OBJC__) && defined(QT_NAMESPACE)
-#define QT_NAMESPACE_ALIAS_OBJC_CLASS(__KLASS__) @compatibility_alias __KLASS__ QT_MANGLE_NAMESPACE(__KLASS__)
-#else
-#define QT_NAMESPACE_ALIAS_OBJC_CLASS(__KLASS__)
-#endif
-
-QT_BEGIN_NAMESPACE
-
-/*
- Helper class that automates refernce counting for CFtypes.
- After constructing the QCFType object, it can be copied like a
- value-based type.
-
- Note that you must own the object you are wrapping.
- This is typically the case if you get the object from a Core
- Foundation function with the word "Create" or "Copy" in it. If
- you got the object from a "Get" function, either retain it or use
- constructFromGet(). One exception to this rule is the
- HIThemeGet*Shape functions, which in reality are "Copy" functions.
-*/
-template <typename T>
-class Q_CORE_EXPORT QCFType
-{
-public:
- inline QCFType(const T &t = 0) : type(t) {}
- inline QCFType(const QCFType &helper) : type(helper.type) { if (type) CFRetain(type); }
- inline ~QCFType() { if (type) CFRelease(type); }
- inline operator T() { return type; }
- inline QCFType operator =(const QCFType &helper)
- {
- if (helper.type)
- CFRetain(helper.type);
- CFTypeRef type2 = type;
- type = helper.type;
- if (type2)
- CFRelease(type2);
- return *this;
- }
- inline T *operator&() { return &type; }
- template <typename X> X as() const { return reinterpret_cast<X>(type); }
- static QCFType constructFromGet(const T &t)
- {
- CFRetain(t);
- return QCFType<T>(t);
- }
-protected:
- T type;
-};
-
-class Q_CORE_EXPORT QCFString : public QCFType<CFStringRef>
-{
-public:
- inline QCFString(const QString &str) : QCFType<CFStringRef>(0), string(str) {}
- inline QCFString(const CFStringRef cfstr = 0) : QCFType<CFStringRef>(cfstr) {}
- inline QCFString(const QCFType<CFStringRef> &other) : QCFType<CFStringRef>(other) {}
- operator QString() const;
- operator CFStringRef() const;
- static QString toQString(CFStringRef cfstr);
- static CFStringRef toCFStringRef(const QString &str);
-#ifdef __OBJC__
- static QString toQString(const NSString *nsstr);
- static NSString *toNSString(const QString &string);
-#endif
-
-private:
- QString string;
-};
-
-QT_END_NAMESPACE
-
-#endif // QCORE_MAC_P_H
diff --git a/src/serialport/qt4support/include/private/qcore_unix_p.h b/src/serialport/qt4support/include/private/qcore_unix_p.h
deleted file mode 100644
index 6a7fb72..0000000
--- a/src/serialport/qt4support/include/private/qcore_unix_p.h
+++ /dev/null
@@ -1,116 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the QtCore 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 QCORE_UNIX_P_H
-#define QCORE_UNIX_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists for the convenience
-// of Qt code on Unix. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include "qplatformdefs.h"
-
-#ifndef Q_OS_UNIX
-# error "qcore_unix_p.h included on a non-Unix system"
-#endif
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-
-#include <errno.h>
-#include <fcntl.h>
-
-#define EINTR_LOOP(var, cmd) \
- do { \
- var = cmd; \
- } while (var == -1 && errno == EINTR)
-
-QT_BEGIN_NAMESPACE
-
-// don't call QT_OPEN or ::open
-// call qt_safe_open
-static inline int qt_safe_open(const char *pathname, int flags, mode_t mode = 0777)
-{
-#ifdef O_CLOEXEC
- flags |= O_CLOEXEC;
-#endif
- register int fd;
- EINTR_LOOP(fd, QT_OPEN(pathname, flags, mode));
-
- // unknown flags are ignored, so we have no way of verifying if
- // O_CLOEXEC was accepted
- if (fd != -1)
- ::fcntl(fd, F_SETFD, FD_CLOEXEC);
- return fd;
-}
-#undef QT_OPEN
-#define QT_OPEN qt_safe_open
-
-static inline qint64 qt_safe_read(int fd, void *data, qint64 maxlen)
-{
- qint64 ret = 0;
- EINTR_LOOP(ret, QT_READ(fd, data, maxlen));
- return ret;
-}
-#undef QT_READ
-#define QT_READ qt_safe_read
-
-static inline qint64 qt_safe_write(int fd, const void *data, qint64 len)
-{
- qint64 ret = 0;
- EINTR_LOOP(ret, QT_WRITE(fd, data, len));
- return ret;
-}
-#undef QT_WRITE
-#define QT_WRITE qt_safe_write
-
-static inline int qt_safe_close(int fd)
-{
- register int ret;
- EINTR_LOOP(ret, QT_CLOSE(fd));
- return ret;
-}
-#undef QT_CLOSE
-#define QT_CLOSE qt_safe_close
-
-QT_END_NAMESPACE
-
-#endif
diff --git a/src/serialport/qt4support/include/private/qlockfile_p.h b/src/serialport/qt4support/include/private/qlockfile_p.h
deleted file mode 100644
index ec36733..0000000
--- a/src/serialport/qt4support/include/private/qlockfile_p.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 David Faure <faure+bluesystems@kde.org>
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the QtCore 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 QLOCKFILE_P_H
-#define QLOCKFILE_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 <QtCore/qlockfile.h>
-#include <QtCore/qfile.h>
-
-#ifdef Q_OS_WIN
-#include <qt_windows.h>
-#endif
-
-QT_BEGIN_NAMESPACE
-
-class QLockFilePrivate
-{
-public:
- QLockFilePrivate(const QString &fn)
- : fileName(fn),
-#ifdef Q_OS_WIN
- fileHandle(INVALID_HANDLE_VALUE),
-#else
- fileHandle(-1),
-#endif
- staleLockTime(30 * 1000), // 30 seconds
- lockError(QLockFile::NoError),
- isLocked(false)
- {
- }
- QLockFile::LockError tryLock_sys();
- bool removeStaleLock();
- bool getLockInfo(qint64 *pid, QString *hostname, QString *appname) const;
- // Returns \c true if the lock belongs to dead PID, or is old.
- // The attempt to delete it will tell us if it was really stale or not, though.
- bool isApparentlyStale() const;
-
-#ifdef Q_OS_UNIX
- static int checkFcntlWorksAfterFlock();
-#endif
-
- QString fileName;
-#ifdef Q_OS_WIN
- Qt::HANDLE fileHandle;
-#else
- int fileHandle;
-#endif
- int staleLockTime; // "int milliseconds" is big enough for 24 days
- QLockFile::LockError lockError;
- bool isLocked;
-};
-
-QT_END_NAMESPACE
-
-#endif /* QLOCKFILE_P_H */
diff --git a/src/serialport/qt4support/include/private/qringbuffer_p.h b/src/serialport/qt4support/include/private/qringbuffer_p.h
deleted file mode 100644
index 2279f1b..0000000
--- a/src/serialport/qt4support/include/private/qringbuffer_p.h
+++ /dev/null
@@ -1,311 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the QtCore 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 QRINGBUFFER_P_H
-#define QRINGBUFFER_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists for the convenience
-// of a number of Qt sources files. This header file may change from
-// version to version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include <QtCore/qbytearray.h>
-#include <QtCore/qlist.h>
-
-QT_BEGIN_NAMESPACE
-
-class QRingBuffer
-{
-public:
- explicit inline QRingBuffer(int growth = 4096) :
- head(0), tail(0), tailBuffer(0), basicBlockSize(growth), bufferSize(0) {
- buffers.append(QByteArray());
- }
-
- inline int nextDataBlockSize() const {
- return (tailBuffer == 0 ? tail : buffers.first().size()) - head;
- }
-
- inline const char *readPointer() const {
- return buffers.isEmpty() ? 0 : (buffers.first().constData() + head);
- }
-
- // access the bytes at a specified position
- // the out-variable length will contain the amount of bytes readable
- // from there, e.g. the amount still the same QByteArray
- inline const char *readPointerAtPosition(qint64 pos, qint64 &length) const {
- if (pos >= 0) {
- pos += head;
- for (int i = 0; i < buffers.size(); ++i) {
- length = (i == tailBuffer ? tail : buffers[i].size());
- if (length > pos) {
- length -= pos;
- return buffers[i].constData() + pos;
- }
- pos -= length;
- }
- }
-
- length = 0;
- return 0;
- }
-
- inline void free(int bytes) {
- while (bytes > 0) {
- int blockSize = buffers.first().size() - head;
-
- if (tailBuffer == 0 || blockSize > bytes) {
- bufferSize -= bytes;
- if (bufferSize <= 0)
- clear(); // try to minify/squeeze us
- else
- head += bytes;
- return;
- }
-
- bufferSize -= blockSize;
- bytes -= blockSize;
- buffers.removeFirst();
- --tailBuffer;
- head = 0;
- }
- }
-
- inline char *reserve(int bytes) {
- if (bytes <= 0)
- return 0;
-
- // if need buffer reallocation
- if (tail + bytes > buffers.last().size()) {
- if (tail >= basicBlockSize) {
- // shrink this buffer to its current size
- buffers.last().resize(tail);
-
- // create a new QByteArray
- buffers.append(QByteArray());
- ++tailBuffer;
- tail = 0;
- }
- buffers.last().resize(qMax(basicBlockSize, tail + bytes));
- }
-
- char *writePtr = buffers.last().data() + tail;
- bufferSize += bytes;
- tail += bytes;
- return writePtr;
- }
-
- inline void truncate(int pos) {
- if (pos < size())
- chop(size() - pos);
- }
-
- inline void chop(int bytes) {
- while (bytes > 0) {
- if (tailBuffer == 0 || tail > bytes) {
- bufferSize -= bytes;
- if (bufferSize <= 0)
- clear(); // try to minify/squeeze us
- else
- tail -= bytes;
- return;
- }
-
- bufferSize -= tail;
- bytes -= tail;
- buffers.removeLast();
- --tailBuffer;
- tail = buffers.last().size();
- }
- }
-
- inline bool isEmpty() const {
- return tailBuffer == 0 && tail == 0;
- }
-
- inline int getChar() {
- if (isEmpty())
- return -1;
- char c = *readPointer();
- free(1);
- return int(uchar(c));
- }
-
- inline void putChar(char c) {
- char *ptr = reserve(1);
- *ptr = c;
- }
-
- inline void ungetChar(char c) {
- --head;
- if (head < 0) {
- buffers.prepend(QByteArray());
- buffers.first().resize(basicBlockSize);
- head = basicBlockSize - 1;
- ++tailBuffer;
- }
- buffers.first()[head] = c;
- ++bufferSize;
- }
-
- inline int size() const {
- return bufferSize;
- }
-
- inline void clear() {
- buffers.erase(buffers.begin() + 1, buffers.end());
- buffers.first().clear();
-
- head = tail = 0;
- tailBuffer = 0;
- bufferSize = 0;
- }
-
- inline int indexOf(char c) const {
- int index = 0;
- int j = head;
- for (int i = 0; i < buffers.size(); ++i) {
- const char *ptr = buffers[i].constData() + j;
- j = index + (i == tailBuffer ? tail : buffers[i].size()) - j;
-
- while (index < j) {
- if (*ptr++ == c)
- return index;
- ++index;
- }
- j = 0;
- }
- return -1;
- }
-
- inline int indexOf(char c, int maxLength) const {
- int index = 0;
- int j = head;
- for (int i = 0; index < maxLength && i < buffers.size(); ++i) {
- const char *ptr = buffers[i].constData() + j;
- j = qMin(index + (i == tailBuffer ? tail : buffers[i].size()) - j, maxLength);
-
- while (index < j) {
- if (*ptr++ == c)
- return index;
- ++index;
- }
- j = 0;
- }
- return -1;
- }
-
- inline int read(char *data, int maxLength) {
- int bytesToRead = qMin(size(), maxLength);
- int readSoFar = 0;
- while (readSoFar < bytesToRead) {
- int bytesToReadFromThisBlock = qMin(bytesToRead - readSoFar, nextDataBlockSize());
- if (data)
- memcpy(data + readSoFar, readPointer(), bytesToReadFromThisBlock);
- readSoFar += bytesToReadFromThisBlock;
- free(bytesToReadFromThisBlock);
- }
- return readSoFar;
- }
-
- // read an unspecified amount (will read the first buffer)
- inline QByteArray read() {
- if (bufferSize == 0)
- return QByteArray();
-
- QByteArray qba(buffers.takeFirst());
-
- qba.reserve(0); // avoid that resizing needlessly reallocates
- if (tailBuffer == 0) {
- qba.resize(tail);
- tail = 0;
- buffers.append(QByteArray());
- } else {
- --tailBuffer;
- }
- qba.remove(0, head); // does nothing if head is 0
- head = 0;
- bufferSize -= qba.size();
- return qba;
- }
-
- // append a new buffer to the end
- inline void append(const QByteArray &qba) {
- if (tail == 0) {
- buffers.last() = qba;
- } else {
- buffers.last().resize(tail);
- buffers.append(qba);
- ++tailBuffer;
- }
- tail = qba.size();
- bufferSize += tail;
- }
-
- inline int skip(int length) {
- return read(0, length);
- }
-
- inline int readLine(char *data, int maxLength) {
- if (!data || --maxLength <= 0)
- return -1;
-
- int i = indexOf('\n', maxLength);
- i = read(data, i >= 0 ? (i + 1) : maxLength);
-
- // Terminate it.
- data[i] = '\0';
- return i;
- }
-
- inline bool canReadLine() const {
- return indexOf('\n') >= 0;
- }
-
-private:
- QList<QByteArray> buffers;
- int head, tail;
- int tailBuffer; // always buffers.size() - 1
- const int basicBlockSize;
- int bufferSize;
-};
-
-QT_END_NAMESPACE
-
-#endif // QRINGBUFFER_P_H
diff --git a/src/serialport/qt4support/install-helper.pri b/src/serialport/qt4support/install-helper.pri
deleted file mode 100644
index a860758..0000000
--- a/src/serialport/qt4support/install-helper.pri
+++ /dev/null
@@ -1,52 +0,0 @@
-QTSERIALPORT_PROJECT_INCLUDEDIR = $$QTSERIALPORT_BUILD_ROOT/include/QtSerialPort
-QTSERIALPORT_PROJECT_INCLUDEDIR ~=s,/,$$QMAKE_DIR_SEP,
-
-system("$$QMAKE_MKDIR $$QTSERIALPORT_PROJECT_INCLUDEDIR")
-
-for(header_file, PUBLIC_HEADERS) {
- header_file ~=s,/,$$QMAKE_DIR_SEP,
- system("$$QMAKE_COPY \"$${header_file}\" \"$$QTSERIALPORT_PROJECT_INCLUDEDIR\"")
-}
-
-unix:!symbian {
- SOURCES += \
- $$PWD/src/qlockfile.cpp \
- $$PWD/src/qlockfile_unix.cpp
-}
-
-# This is a quick workaround for generating forward header with Qt4.
-
-!equals(QMAKE_HOST.os, Windows): maybe_quote = "\'"
-system("echo $${maybe_quote}$${LITERAL_HASH}include \"qserialport.h\"$${maybe_quote} > \"$$QTSERIALPORT_PROJECT_INCLUDEDIR/QSerialPort\"")
-system("echo $${maybe_quote}$${LITERAL_HASH}include \"qserialportinfo.h\"$${maybe_quote} > \"$$QTSERIALPORT_PROJECT_INCLUDEDIR/QSerialPortInfo\"")
-
-PUBLIC_HEADERS += \
- $$PUBLIC_HEADERS \
- \"$$QTSERIALPORT_PROJECT_INCLUDEDIR/QSerialPort\" \
- \"$$QTSERIALPORT_PROJECT_INCLUDEDIR/QSerialPortInfo\"
-
-target_headers.files = $$PUBLIC_HEADERS
-target_headers.path = $$[QT_INSTALL_HEADERS]/QtSerialPort
-INSTALLS += target_headers
-
-mkspecs_features.files = $$QTSERIALPORT_PROJECT_ROOT/src/serialport/qt4support/serialport.prf
-mkspecs_features.path = $$[QT_INSTALL_DATA]/mkspecs/features
-INSTALLS += mkspecs_features
-
-win32 {
- dlltarget.path = $$[QT_INSTALL_BINS]
- INSTALLS += dlltarget
-}
-
-target.path = $$[QT_INSTALL_LIBS]
-INSTALLS += target
-
-INCLUDEPATH += $$QTSERIALPORT_BUILD_ROOT/include $$QTSERIALPORT_BUILD_ROOT/include/QtSerialPort
-lessThan(QT_MAJOR_VERSION, 5) {
- QTSERIALPORT_PROJECT_QT4SUPPORT_INCLUDEDIR = $$QTSERIALPORT_PROJECT_ROOT/src/serialport/qt4support/include
- INCLUDEPATH += \
- $$QTSERIALPORT_PROJECT_QT4SUPPORT_INCLUDEDIR \
- $$QTSERIALPORT_PROJECT_QT4SUPPORT_INCLUDEDIR/QtCore \
- $$QTSERIALPORT_PROJECT_QT4SUPPORT_INCLUDEDIR/private
-}
-DEFINES += QT_BUILD_SERIALPORT_LIB
diff --git a/src/serialport/qt4support/serialport.prf b/src/serialport/qt4support/serialport.prf
deleted file mode 100644
index b1d65e1..0000000
--- a/src/serialport/qt4support/serialport.prf
+++ /dev/null
@@ -1,27 +0,0 @@
-!mac:qtAddLibrary(QtSerialPort)
-
-!isEmpty(QTSERIALPORT_BUILD_ROOT) {
- INCLUDEPATH -= $$QMAKE_INCDIR_QT/QtSerialPort
- QMAKE_INCDIR += $$QTSERIALPORT_BUILD_ROOT/include $$QTSERIALPORT_BUILD_ROOT/include/QtSerialPort
-
- QTSERIALPORT_BUILD_SUBDIR = src/serialport
- debug_and_release_target {
- CONFIG(debug, debug|release) {
- QTSERIALPORT_BUILD_SUBDIR = $$QTSERIALPORT_BUILD_SUBDIR/debug
- } else {
- QTSERIALPORT_BUILD_SUBDIR = $$QTSERIALPORT_BUILD_SUBDIR/release
- }
- }
-
- QMAKE_LIBDIR += $$QTSERIALPORT_BUILD_ROOT/$$QTSERIALPORT_BUILD_SUBDIR
-}
-
-mac {
- INCLUDEPATH += $$[QT_INSTALL_HEADERS]/QtSerialPort
-
- if(!debug_and_release|build_pass):CONFIG(debug, debug|release) {
- LIBS += -lQtSerialPort$${QT_LIBINFIX}_debug
- } else {
- LIBS += -lQtSerialPort$${QT_LIBINFIX}
- }
-}
diff --git a/src/serialport/qt4support/src/qlockfile.cpp b/src/serialport/qt4support/src/qlockfile.cpp
deleted file mode 100644
index 1f406cf..0000000
--- a/src/serialport/qt4support/src/qlockfile.cpp
+++ /dev/null
@@ -1,344 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 David Faure <faure+bluesystems@kde.org>
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the QtCore 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$
-**
-****************************************************************************/
-
-#include "qlockfile.h"
-#include "qlockfile_p.h"
-
-#include <QtCore/qthread.h>
-#include <QtCore/qelapsedtimer.h>
-#include <QtCore/qdatetime.h>
-
-QT_BEGIN_NAMESPACE
-
-class QLockFileThread : public QThread
-{
-public:
- static void msleep(unsigned long msecs) { QThread::msleep(msecs); }
-};
-
-/*!
- \class QLockFile
- \inmodule QtCore
- \brief The QLockFile class provides locking between processes using a file.
- \since 5.1
-
- A lock file can be used to prevent multiple processes from accessing concurrently
- the same resource. For instance, a configuration file on disk, or a socket, a port,
- a region of shared memory...
-
- Serialization is only guaranteed if all processes that access the shared resource
- use QLockFile, with the same file path.
-
- QLockFile supports two use cases:
- to protect a resource for a short-term operation (e.g. verifying if a configuration
- file has changed before saving new settings), and for long-lived protection of a
- resource (e.g. a document opened by a user in an editor) for an indefinite amount of time.
-
- When protecting for a short-term operation, it is acceptable to call lock() and wait
- until any running operation finishes.
- When protecting a resource over a long time, however, the application should always
- call setStaleLockTime(0) and then tryLock() with a short timeout, in order to
- warn the user that the resource is locked.
-
- If the process holding the lock crashes, the lock file stays on disk and can prevent
- any other process from accessing the shared resource, ever. For this reason, QLockFile
- tries to detect such a "stale" lock file, based on the process ID written into the file,
- and (in case that process ID got reused meanwhile), on the last modification time of
- the lock file (30s by default, for the use case of a short-lived operation).
- If the lock file is found to be stale, it will be deleted.
-
- For the use case of protecting a resource over a long time, you should therefore call
- setStaleLockTime(0), and when tryLock() returns LockFailedError, inform the user
- that the document is locked, possibly using getLockInfo() for more details.
-*/
-
-/*!
- \enum QLockFile::LockError
-
- This enum describes the result of the last call to lock() or tryLock().
-
- \value NoError The lock was acquired successfully.
- \value LockFailedError The lock could not be acquired because another process holds it.
- \value PermissionError The lock file could not be created, for lack of permissions
- in the parent directory.
- \value UnknownError Another error happened, for instance a full partition
- prevented writing out the lock file.
-*/
-
-/*!
- Constructs a new lock file object.
- The object is created in an unlocked state.
- When calling lock() or tryLock(), a lock file named \a fileName will be created,
- if it doesn't already exist.
-
- \sa lock(), unlock()
-*/
-QLockFile::QLockFile(const QString &fileName)
- : d_ptr(new QLockFilePrivate(fileName))
-{
-}
-
-/*!
- Destroys the lock file object.
- If the lock was acquired, this will release the lock, by deleting the lock file.
-*/
-QLockFile::~QLockFile()
-{
- unlock();
-}
-
-/*!
- Sets \a staleLockTime to be the time in milliseconds after which
- a lock file is considered stale.
- The default value is 30000, i.e. 30 seconds.
- If your application typically keeps the file locked for more than 30 seconds
- (for instance while saving megabytes of data for 2 minutes), you should set
- a bigger value using setStaleLockTime().
-
- The value of \a staleLockTime is used by lock() and tryLock() in order
- to determine when an existing lock file is considered stale, i.e. left over
- by a crashed process. This is useful for the case where the PID got reused
- meanwhile, so the only way to detect a stale lock file is by the fact that
- it has been around for a long time.
-
- \sa staleLockTime()
-*/
-void QLockFile::setStaleLockTime(int staleLockTime)
-{
- Q_D(QLockFile);
- d->staleLockTime = staleLockTime;
-}
-
-/*!
- Returns the time in milliseconds after which
- a lock file is considered stale.
-
- \sa setStaleLockTime()
-*/
-int QLockFile::staleLockTime() const
-{
- Q_D(const QLockFile);
- return d->staleLockTime;
-}
-
-/*!
- Returns \c true if the lock was acquired by this QLockFile instance,
- otherwise returns \c false.
-
- \sa lock(), unlock(), tryLock()
-*/
-bool QLockFile::isLocked() const
-{
- Q_D(const QLockFile);
- return d->isLocked;
-}
-
-/*!
- Creates the lock file.
-
- If another process (or another thread) has created the lock file already,
- this function will block until that process (or thread) releases it.
-
- Calling this function multiple times on the same lock from the same
- thread without unlocking first is not allowed. This function will
- \e dead-lock when the file is locked recursively.
-
- Returns \c true if the lock was acquired, false if it could not be acquired
- due to an unrecoverable error, such as no permissions in the parent directory.
-
- \sa unlock(), tryLock()
-*/
-bool QLockFile::lock()
-{
- return tryLock(-1);
-}
-
-/*!
- Attempts to create the lock file. This function returns \c true if the
- lock was obtained; otherwise it returns \c false. If another process (or
- another thread) has created the lock file already, this function will
- wait for at most \a timeout milliseconds for the lock file to become
- available.
-
- Note: Passing a negative number as the \a timeout is equivalent to
- calling lock(), i.e. this function will wait forever until the lock
- file can be locked if \a timeout is negative.
-
- If the lock was obtained, it must be released with unlock()
- before another process (or thread) can successfully lock it.
-
- Calling this function multiple times on the same lock from the same
- thread without unlocking first is not allowed, this function will
- \e always return false when attempting to lock the file recursively.
-
- \sa lock(), unlock()
-*/
-bool QLockFile::tryLock(int timeout)
-{
- Q_D(QLockFile);
- QElapsedTimer timer;
- if (timeout > 0)
- timer.start();
- int sleepTime = 100;
- forever {
- d->lockError = d->tryLock_sys();
- switch (d->lockError) {
- case NoError:
- d->isLocked = true;
- return true;
- case PermissionError:
- case UnknownError:
- return false;
- case LockFailedError:
- if (!d->isLocked && d->isApparentlyStale()) {
- // Stale lock from another thread/process
- // Ensure two processes don't remove it at the same time
- QLockFile rmlock(d->fileName + QLatin1String(".rmlock"));
- if (rmlock.tryLock()) {
- if (d->isApparentlyStale() && d->removeStaleLock())
- continue;
- }
- }
- break;
- }
- if (timeout == 0 || (timeout > 0 && timer.hasExpired(timeout)))
- return false;
- QLockFileThread::msleep(sleepTime);
- if (sleepTime < 5 * 1000)
- sleepTime *= 2;
- }
- // not reached
- return false;
-}
-
-/*!
- \fn void QLockFile::unlock()
- Releases the lock, by deleting the lock file.
-
- Calling unlock() without locking the file first, does nothing.
-
- \sa lock(), tryLock()
-*/
-
-/*!
- Retrieves information about the current owner of the lock file.
-
- If tryLock() returns \c false, and error() returns LockFailedError,
- this function can be called to find out more information about the existing
- lock file:
- \list
- \li the PID of the application (returned in \a pid)
- \li the \a hostname it's running on (useful in case of networked filesystems),
- \li the name of the application which created it (returned in \a appname),
- \endlist
-
- Note that tryLock() automatically deleted the file if there is no
- running application with this PID, so LockFailedError can only happen if there is
- an application with this PID (it could be unrelated though).
-
- This can be used to inform users about the existing lock file and give them
- the choice to delete it. After removing the file using removeStaleLockFile(),
- the application can call tryLock() again.
-
- This function returns \c true if the information could be successfully retrieved, false
- if the lock file doesn't exist or doesn't contain the expected data.
- This can happen if the lock file was deleted between the time where tryLock() failed
- and the call to this function. Simply call tryLock() again if this happens.
-*/
-bool QLockFile::getLockInfo(qint64 *pid, QString *hostname, QString *appname) const
-{
- Q_D(const QLockFile);
- return d->getLockInfo(pid, hostname, appname);
-}
-
-bool QLockFilePrivate::getLockInfo(qint64 *pid, QString *hostname, QString *appname) const
-{
- QFile reader(fileName);
- if (!reader.open(QIODevice::ReadOnly))
- return false;
-
- QByteArray pidLine = reader.readLine();
- pidLine.chop(1);
- QByteArray appNameLine = reader.readLine();
- appNameLine.chop(1);
- QByteArray hostNameLine = reader.readLine();
- hostNameLine.chop(1);
- if (pidLine.isEmpty() || appNameLine.isEmpty())
- return false;
-
- qint64 thePid = pidLine.toLongLong();
- if (pid)
- *pid = thePid;
- if (appname)
- *appname = QString::fromUtf8(appNameLine);
- if (hostname)
- *hostname = QString::fromUtf8(hostNameLine);
- return thePid > 0;
-}
-
-/*!
- Attempts to forcefully remove an existing lock file.
-
- Calling this is not recommended when protecting a short-lived operation: QLockFile
- already takes care of removing lock files after they are older than staleLockTime().
-
- This method should only be called when protecting a resource for a long time, i.e.
- with staleLockTime(0), and after tryLock() returned LockFailedError, and the user
- agreed on removing the lock file.
-
- Returns \c true on success, false if the lock file couldn't be removed. This happens
- on Windows, when the application owning the lock is still running.
-*/
-bool QLockFile::removeStaleLockFile()
-{
- Q_D(QLockFile);
- if (d->isLocked) {
- qWarning("removeStaleLockFile can only be called when not holding the lock");
- return false;
- }
- return d->removeStaleLock();
-}
-
-/*!
- Returns the lock file error status.
-
- If tryLock() returns \c false, this function can be called to find out
- the reason why the locking failed.
-*/
-QLockFile::LockError QLockFile::error() const
-{
- Q_D(const QLockFile);
- return d->lockError;
-}
-
-QT_END_NAMESPACE
diff --git a/src/serialport/qt4support/src/qlockfile_unix.cpp b/src/serialport/qt4support/src/qlockfile_unix.cpp
deleted file mode 100644
index fbcb57e..0000000
--- a/src/serialport/qt4support/src/qlockfile_unix.cpp
+++ /dev/null
@@ -1,191 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 David Faure <faure+bluesystems@kde.org>
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the QtCore 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$
-**
-****************************************************************************/
-
-#include "private/qlockfile_p.h"
-
-#include "QtCore/qtemporaryfile.h"
-#include "QtCore/qcoreapplication.h"
-#include "QtCore/qfileinfo.h"
-#include "QtCore/qdebug.h"
-#include "QtCore/qdatetime.h"
-
-#include <sys/file.h> // flock
-#include <sys/types.h> // kill
-#include <signal.h> // kill
-#include <unistd.h>
-
-#include <errno.h>
-
-QT_BEGIN_NAMESPACE
-
-#define EINTR_LOOP(var, cmd) \
- do { \
- var = cmd; \
- } while (var == -1 && errno == EINTR)
-
-// don't call QT_OPEN or ::open
-// call qt_safe_open
-static inline int qt_safe_open(const char *pathname, int flags, mode_t mode = 0777)
-{
-#ifdef O_CLOEXEC
- flags |= O_CLOEXEC;
-#endif
- int fd;
- EINTR_LOOP(fd, ::open(pathname, flags, mode));
-
- // unknown flags are ignored, so we have no way of verifying if
- // O_CLOEXEC was accepted
- if (fd != -1)
- ::fcntl(fd, F_SETFD, FD_CLOEXEC);
- return fd;
-}
-
-static inline qint64 qt_safe_write(int fd, const void *data, qint64 len)
-{
- qint64 ret = 0;
- EINTR_LOOP(ret, ::write(fd, data, len));
- return ret;
-}
-
-static QString localHostName() // from QHostInfo::localHostName()
-{
- char hostName[512];
- if (gethostname(hostName, sizeof(hostName)) == -1)
- return QString();
- hostName[sizeof(hostName) - 1] = '\0';
- return QString::fromLocal8Bit(hostName);
-}
-
-// ### merge into qt_safe_write?
-static qint64 qt_write_loop(int fd, const char *data, qint64 len)
-{
- qint64 pos = 0;
- while (pos < len) {
- const qint64 ret = qt_safe_write(fd, data + pos, len - pos);
- if (ret == -1) // e.g. partition full
- return pos;
- pos += ret;
- }
- return pos;
-}
-
-static bool setNativeLocks(int fd)
-{
-#if defined(LOCK_EX) && defined(LOCK_NB)
- if (flock(fd, LOCK_EX | LOCK_NB) == -1) // other threads, and other processes on a local fs
- return false;
-#endif
- struct flock flockData;
- flockData.l_type = F_WRLCK;
- flockData.l_whence = SEEK_SET;
- flockData.l_start = 0;
- flockData.l_len = 0; // 0 = entire file
- flockData.l_pid = getpid();
- if (fcntl(fd, F_SETLK, &flockData) == -1) // for networked filesystems
- return false;
- return true;
-}
-
-QLockFile::LockError QLockFilePrivate::tryLock_sys()
-{
- // Assemble data, to write in a single call to write
- // (otherwise we'd have to check every write call)
- // Use operator% from the fast builder to avoid multiple memory allocations.
- QByteArray fileData = QByteArray::number(QCoreApplication::applicationPid()) + '\n'
- + qAppName().toUtf8() + '\n'
- + localHostName().toUtf8() + '\n';
-
- const QByteArray lockFileName = QFile::encodeName(fileName);
- const int fd = qt_safe_open(lockFileName.constData(), O_WRONLY | O_CREAT | O_EXCL, 0644);
- if (fd < 0) {
- switch (errno) {
- case EEXIST:
- return QLockFile::LockFailedError;
- case EACCES:
- case EROFS:
- return QLockFile::PermissionError;
- default:
- return QLockFile::UnknownError;
- }
- }
- // Ensure nobody else can delete the file while we have it
- if (!setNativeLocks(fd))
- qWarning() << "setNativeLocks failed:" << strerror(errno);
-
- // We hold the lock, continue.
- fileHandle = fd;
-
- QLockFile::LockError error = QLockFile::NoError;
- if (qt_write_loop(fd, fileData.constData(), fileData.size()) < fileData.size())
- error = QLockFile::UnknownError; // partition full
- return error;
-}
-
-bool QLockFilePrivate::removeStaleLock()
-{
- const QByteArray lockFileName = QFile::encodeName(fileName);
- const int fd = qt_safe_open(lockFileName.constData(), O_WRONLY, 0644);
- if (fd < 0) // gone already?
- return false;
- bool success = setNativeLocks(fd) && (::unlink(lockFileName) == 0);
- close(fd);
- return success;
-}
-
-bool QLockFilePrivate::isApparentlyStale() const
-{
- qint64 pid;
- QString hostname, appname;
- if (!getLockInfo(&pid, &hostname, &appname))
- return false;
- if (hostname == localHostName()) {
- if (::kill(pid, 0) == -1 && errno == ESRCH)
- return true; // PID doesn't exist anymore
- }
- const qint64 age = QFileInfo(fileName).lastModified().msecsTo(QDateTime::currentDateTime());
- return staleLockTime > 0 && age > staleLockTime;
-}
-
-void QLockFile::unlock()
-{
- Q_D(QLockFile);
- if (!d->isLocked)
- return;
- close(d->fileHandle);
- d->fileHandle = -1;
- QFile::remove(d->fileName);
- d->lockError = QLockFile::NoError;
- d->isLocked = false;
-}
-
-QT_END_NAMESPACE
diff --git a/src/serialport/serialport-lib.pri b/src/serialport/serialport-lib.pri
index 9c9b076..fa355eb 100644
--- a/src/serialport/serialport-lib.pri
+++ b/src/serialport/serialport-lib.pri
@@ -1,19 +1,9 @@
INCLUDEPATH += $$PWD
-unix {
- greaterThan(QT_MAJOR_VERSION, 4) {
- contains(QT_CONFIG, libudev) {
- DEFINES += LINK_LIBUDEV
- INCLUDEPATH += $$QMAKE_INCDIR_LIBUDEV
- LIBS_PRIVATE += $$QMAKE_LIBS_LIBUDEV
- }
- } else {
- packagesExist(libudev) {
- CONFIG += link_pkgconfig
- DEFINES += LINK_LIBUDEV
- PKGCONFIG += libudev
- }
- }
+unix:contains(QT_CONFIG, libudev) {
+ DEFINES += LINK_LIBUDEV
+ INCLUDEPATH += $$QMAKE_INCDIR_LIBUDEV
+ LIBS_PRIVATE += $$QMAKE_LIBS_LIBUDEV
}
PUBLIC_HEADERS += \
@@ -49,30 +39,6 @@ wince* {
$$PWD/qserialportinfo_wince.cpp
}
-symbian {
- MMP_RULES += EXPORTUNFROZEN
- #MMP_RULES += DEBUGGABLE_UDEBONLY
- TARGET.UID3 = 0xE7E62DFD
- TARGET.CAPABILITY =
- TARGET.EPOCALLOWDLLDATA = 1
- addFiles.sources = QtSerialPort.dll
- addFiles.path = !:/sys/bin
- DEPLOYMENT += addFiles
-
- # FIXME !!!
- #INCLUDEPATH += c:/Nokia/devices/Nokia_Symbian3_SDK_v1.0/epoc32/include/platform
- INCLUDEPATH += c:/QtSDK/Symbian/SDKs/Symbian3Qt473/epoc32/include/platform
-
- PRIVATE_HEADERS += \
- $$PWD/qserialport_symbian_p.h
-
- SOURCES += \
- $$PWD/qserialport_symbian.cpp \
- $$PWD/qserialportinfo_symbian.cpp
-
- LIBS_PRIVATE += -leuser -lefsrv -lc32
-}
-
unix:!symbian {
PRIVATE_HEADERS += \
$$PWD/qserialport_unix_p.h
diff --git a/src/serialport/serialport.pro b/src/serialport/serialport.pro
index feb6e9c..40c0339 100644
--- a/src/serialport/serialport.pro
+++ b/src/serialport/serialport.pro
@@ -1,19 +1,10 @@
-QT = core
+TARGET = QtSerialPort
+QT = core-private
QMAKE_DOCS = $$PWD/doc/qtserialport.qdocconf
-include($$PWD/serialport-lib.pri)
-greaterThan(QT_MAJOR_VERSION, 4) {
- load(qt_build_config)
- QT += core-private
- TARGET = QtSerialPort
- load(qt_module)
-} else {
- TEMPLATE = lib
- TARGET = $$qtLibraryTarget(QtSerialPort$$QT_LIBINFIX)
- include($$PWD/qt4support/install-helper.pri)
- CONFIG += module create_prl
- mac:QMAKE_FRAMEWORK_BUNDLE_NAME = $$TARGET
-}
+load(qt_module)
+
+include($$PWD/serialport-lib.pri)
PRECOMPILED_HEADER =
diff --git a/tests/auto/qserialport/qserialport.pro b/tests/auto/qserialport/qserialport.pro
index c16cd5e..5435fa3 100644
--- a/tests/auto/qserialport/qserialport.pro
+++ b/tests/auto/qserialport/qserialport.pro
@@ -2,10 +2,6 @@ QT = core testlib
TARGET = tst_qserialport
#CONFIG += testcase
-greaterThan(QT_MAJOR_VERSION, 4) {
- QT += serialport
-} else {
- include($$QTSERIALPORT_PROJECT_ROOT/src/serialport/qt4support/serialport.prf)
-}
+QT += serialport
SOURCES = tst_qserialport.cpp
diff --git a/tests/manual/qserialport/qserialport.pro b/tests/manual/qserialport/qserialport.pro
index 504e766..3858b6b 100644
--- a/tests/manual/qserialport/qserialport.pro
+++ b/tests/manual/qserialport/qserialport.pro
@@ -2,10 +2,6 @@ TEMPLATE = app
TARGET = tst_qserialport
QT = core testlib
-greaterThan(QT_MAJOR_VERSION, 4) {
- QT += serialport
-} else {
- include($$QTSERIALPORT_PROJECT_ROOT/src/serialport/qt4support/serialport.prf)
-}
+QT += serialport
SOURCES += tst_qserialport.cpp
diff --git a/tests/manual/qserialportinfo/qserialportinfo.pro b/tests/manual/qserialportinfo/qserialportinfo.pro
index 8e08264..57f6ea6 100644
--- a/tests/manual/qserialportinfo/qserialportinfo.pro
+++ b/tests/manual/qserialportinfo/qserialportinfo.pro
@@ -2,10 +2,6 @@ TEMPLATE = app
TARGET = tst_qserialportinfo
QT = core testlib
-greaterThan(QT_MAJOR_VERSION, 4) {
- QT += serialport
-} else {
- include($$QTSERIALPORT_PROJECT_ROOT/src/serialport/qt4support/serialport.prf)
-}
+QT += serialport
SOURCES += tst_qserialportinfo.cpp