diff options
author | Liang Qi <liang.qi@qt.io> | 2016-11-16 09:12:21 +0100 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2016-11-16 09:47:42 +0100 |
commit | 23ef4bab1faa867ba3614f0b5a325dc3a91550a1 (patch) | |
tree | c1f776ad4792bb8e3ce3688f509cb47cadbd006c /src | |
parent | a31a7e0b2b7b3de3e1867ad954ac7fad9531cc99 (diff) | |
parent | 498b1424ce273beed02c5e1c93ed0ffd610624b8 (diff) |
Merge remote-tracking branch 'origin/5.7' into 5.8
Conflicts:
src/plugins/canbus/peakcan/main.cpp
src/plugins/canbus/tinycan/main.cpp
src/serialbus/qcanbusframe.h
Change-Id: I7a38350688086b5f5cd7072acccb3fa38af76f88
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/canbus/peakcan/main.cpp | 2 | ||||
-rw-r--r-- | src/plugins/canbus/tinycan/main.cpp | 2 | ||||
-rw-r--r-- | src/serialbus/qcanbusframe.h | 4 | ||||
-rw-r--r-- | src/serialbus/qmodbuspdu.cpp | 8 | ||||
-rw-r--r-- | src/serialbus/qmodbuspdu.h | 4 | ||||
-rw-r--r-- | src/serialbus/qmodbusrtuserialmaster.cpp | 7 | ||||
-rw-r--r-- | src/serialbus/qmodbusrtuserialmaster_p.h | 5 |
7 files changed, 21 insertions, 11 deletions
diff --git a/src/plugins/canbus/peakcan/main.cpp b/src/plugins/canbus/peakcan/main.cpp index d4886a9..00b4d36 100644 --- a/src/plugins/canbus/peakcan/main.cpp +++ b/src/plugins/canbus/peakcan/main.cpp @@ -55,7 +55,7 @@ public: { QString errorReason; if (!PeakCanBackend::canCreate(&errorReason)) { - qWarning("%s", qUtf8Printable(errorReason)); + qWarning("%ls", qUtf16Printable(errorReason)); if (errorMessage) *errorMessage = errorReason; return nullptr; diff --git a/src/plugins/canbus/tinycan/main.cpp b/src/plugins/canbus/tinycan/main.cpp index 5bce912..fe988ba 100644 --- a/src/plugins/canbus/tinycan/main.cpp +++ b/src/plugins/canbus/tinycan/main.cpp @@ -55,7 +55,7 @@ public: { QString errorReason; if (!TinyCanBackend::canCreate(&errorReason)) { - qWarning("%s", qUtf8Printable(errorReason)); + qWarning("%ls", qUtf16Printable(errorReason)); if (errorMessage) *errorMessage = errorReason; return nullptr; diff --git a/src/serialbus/qcanbusframe.h b/src/serialbus/qcanbusframe.h index 7f3a2be..486d996 100644 --- a/src/serialbus/qcanbusframe.h +++ b/src/serialbus/qcanbusframe.h @@ -77,6 +77,7 @@ public: version(0x0), isFlexibleDataRate(0x0) { + memset(reserved, 0, sizeof(reserved)); setFrameId(0x0); setFrameType(type); } @@ -106,8 +107,7 @@ public: isFlexibleDataRate(data.length() > 8 ? 0x1 : 0x0), load(data) { - Q_UNUSED(reserved); - + memset(reserved, 0, sizeof(reserved)); setFrameId(identifier); } diff --git a/src/serialbus/qmodbuspdu.cpp b/src/serialbus/qmodbuspdu.cpp index 2b01ad6..32a3b43 100644 --- a/src/serialbus/qmodbuspdu.cpp +++ b/src/serialbus/qmodbuspdu.cpp @@ -555,18 +555,18 @@ int QModbusRequest::calculateDataSize(const QModbusRequest &request) case QModbusPdu::WriteMultipleCoils: minimum -= 1; // first payload payload byte if (request.dataSize() >= minimum) - size = minimum + request.data()[minimum - 1] /*byte count*/; + size = minimum + quint8(request.data()[minimum - 1]) /*byte count*/; break; case QModbusPdu::WriteMultipleRegisters: case QModbusPdu::ReadWriteMultipleRegisters: minimum -= 2; // first 2 payload payload bytes if (request.dataSize() >= minimum) - size = minimum + request.data()[minimum - 1] /*byte count*/; + size = minimum + quint8(request.data()[minimum - 1]) /*byte count*/; break; case QModbusPdu::ReadFileRecord: case QModbusPdu::WriteFileRecord: if (request.dataSize() >= 1) - size = 1 /*byte count*/ + request.data()[0] /*actual bytes*/; + size = 1 /*byte count*/ + quint8(request.data()[0]) /*actual bytes*/; break; case QModbusPdu::EncapsulatedInterfaceTransport: { if (request.dataSize() < minimum) @@ -710,7 +710,7 @@ int QModbusResponse::calculateDataSize(const QModbusResponse &response) case QModbusResponse::ReadWriteMultipleRegisters: case QModbusResponse::ReportServerId: if (response.dataSize() >= 1) - size = 1 /*byte count*/ + response.data()[0] /*actual bytes*/; + size = 1 /*byte count*/ + quint8(response.data()[0]) /*actual bytes*/; break; case QModbusResponse::ReadFifoQueue: { if (response.dataSize() >= 2) { diff --git a/src/serialbus/qmodbuspdu.h b/src/serialbus/qmodbuspdu.h index 1255593..65a3247 100644 --- a/src/serialbus/qmodbuspdu.h +++ b/src/serialbus/qmodbuspdu.h @@ -208,6 +208,8 @@ public: {} }; Q_SERIALBUS_EXPORT QDataStream &operator>>(QDataStream &stream, QModbusRequest &pdu); +inline QDataStream &operator<<(QDataStream &stream, const QModbusRequest &pdu) +{ return stream << static_cast<const QModbusPdu &>(pdu); } class QModbusResponse : public QModbusPdu { @@ -250,6 +252,8 @@ public: void setExceptionCode(ExceptionCode ec) { QModbusPdu::encodeData(quint8(ec)); } }; Q_SERIALBUS_EXPORT QDataStream &operator>>(QDataStream &stream, QModbusResponse &pdu); +inline QDataStream &operator<<(QDataStream &stream, const QModbusResponse &pdu) +{ return stream << static_cast<const QModbusPdu &>(pdu); } Q_DECLARE_TYPEINFO(QModbusPdu, Q_MOVABLE_TYPE); Q_DECLARE_TYPEINFO(QModbusPdu::ExceptionCode, Q_PRIMITIVE_TYPE); diff --git a/src/serialbus/qmodbusrtuserialmaster.cpp b/src/serialbus/qmodbusrtuserialmaster.cpp index 331e0ee..5a9555e 100644 --- a/src/serialbus/qmodbusrtuserialmaster.cpp +++ b/src/serialbus/qmodbusrtuserialmaster.cpp @@ -144,10 +144,15 @@ bool QModbusRtuSerialMaster::open() */ void QModbusRtuSerialMaster::close() { - if (state() == QModbusDevice::UnconnectedState) + if (state() == QModbusDevice::UnconnectedState || + state() == QModbusDevice::ClosingState) { return; + } + + setState(QModbusDevice::ClosingState); Q_D(QModbusRtuSerialMaster); + if (d->m_serialPort->isOpen()) d->m_serialPort->close(); diff --git a/src/serialbus/qmodbusrtuserialmaster_p.h b/src/serialbus/qmodbusrtuserialmaster_p.h index e7e9a92..c698ebc 100644 --- a/src/serialbus/qmodbusrtuserialmaster_p.h +++ b/src/serialbus/qmodbusrtuserialmaster_p.h @@ -216,8 +216,9 @@ public: QObject::connect(m_serialPort, &QSerialPort::aboutToClose, q, [this]() { Q_Q(QModbusRtuSerialMaster); - if (q->state() != QModbusDevice::ClosingState) - q->close(); + Q_UNUSED(q); // To avoid unused variable warning in release mode + Q_ASSERT(q->state() == QModbusDevice::ClosingState); + m_sendTimer.stop(); m_responseTimer.stop(); }); |