From 048659a68a98e416d8190eae327cc6d2d48dc58b Mon Sep 17 00:00:00 2001 From: Ivan Solovev Date: Wed, 15 Jun 2022 11:02:03 +0200 Subject: QModbusDevice: introduce an InvalidResponseError error code [ChangeLog][QModbusDevice] Introduce a new InvalidResponseError error code. Use this code instead of UnknownError when QModbusClient fails to parse the response. Task-number: QTBUG-103879 Pick-to: 6.4 Change-Id: Ie4bd1d3c988590a851062a553103733e4a0f5d1c Reviewed-by: Sze Howe Koh Reviewed-by: Alex Blasche --- src/serialbus/qmodbusclient.cpp | 2 +- src/serialbus/qmodbusdevice.cpp | 15 ++++++++------- src/serialbus/qmodbusdevice.h | 3 ++- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/serialbus/qmodbusclient.cpp b/src/serialbus/qmodbusclient.cpp index 6f1335e..eca713c 100644 --- a/src/serialbus/qmodbusclient.cpp +++ b/src/serialbus/qmodbusclient.cpp @@ -336,7 +336,7 @@ void QModbusClientPrivate::processQueueElement(const QModbusResponse &pdu, QModbusDataUnit unit = element.unit; if (!q_func()->processResponse(pdu, &unit)) { - element.reply->setError(QModbusDevice::UnknownError, + element.reply->setError(QModbusDevice::InvalidResponseError, QModbusClient::tr("An invalid response has been received.")); return; } diff --git a/src/serialbus/qmodbusdevice.cpp b/src/serialbus/qmodbusdevice.cpp index e7b891f..d43f3b3 100644 --- a/src/serialbus/qmodbusdevice.cpp +++ b/src/serialbus/qmodbusdevice.cpp @@ -166,13 +166,14 @@ void QModbusDevice::setConnectionParameter(ConnectionParameter parameter, const \value ReplyAbortedError The reply was aborted due to a disconnection of the device. \value UnknownError An unknown error occurred. - - \note An UnknownError can also indicate that the received - \l {QModbusPdu::}{FunctionCode} is not supported in the current - implementation. In this case custom Modbus client implementations need to - override the \l {QModbusClient::}{processResponse()} and - \l {QModbusClient::}{processPrivateResponse()} methods to provide support - for needed functions. + \value [since 6.4] InvalidResponseError An error occurred while parsing the + response, or the \l {QModbusPdu::}{FunctionCode} + is not supported by the current implementation. + In the latter case custom Modbus client + implementation can override the + \l {QModbusClient::}{processResponse()} and + \l {QModbusClient::}{processPrivateResponse()} + methods to provide support for needed functions. */ /*! diff --git a/src/serialbus/qmodbusdevice.h b/src/serialbus/qmodbusdevice.h index e10555e..878e3db 100644 --- a/src/serialbus/qmodbusdevice.h +++ b/src/serialbus/qmodbusdevice.h @@ -26,7 +26,8 @@ public: TimeoutError, ProtocolError, ReplyAbortedError, - UnknownError + UnknownError, + InvalidResponseError }; Q_ENUM(Error) -- cgit v1.2.3