summaryrefslogtreecommitdiffstats
path: root/src/serialbus/qmodbuspdu.h
diff options
context:
space:
mode:
authorKarsten Heimrich <karsten.heimrich@theqtcompany.com>2015-11-30 15:51:24 +0100
committerKarsten Heimrich <karsten.heimrich@theqtcompany.com>2015-12-01 15:50:34 +0000
commitcff8bf1357327d99a1ebd68bad259b3e4368e15a (patch)
tree7afed0e8ca64d143f5f588079eed0c89eba137dd /src/serialbus/qmodbuspdu.h
parent1a8d1ae10c0ca3d637f2e399f5b81b728b10c364 (diff)
Return the real function code without the exception byte.
Change-Id: Ifb4f0964f47b48f0cb9b33056c732a039cbaee69 Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
Diffstat (limited to 'src/serialbus/qmodbuspdu.h')
-rw-r--r--src/serialbus/qmodbuspdu.h25
1 files changed, 14 insertions, 11 deletions
diff --git a/src/serialbus/qmodbuspdu.h b/src/serialbus/qmodbuspdu.h
index fc01801..3512d1d 100644
--- a/src/serialbus/qmodbuspdu.h
+++ b/src/serialbus/qmodbuspdu.h
@@ -94,18 +94,21 @@ public:
return (m_code >= ReadCoils && m_code < UndefinedFunctionCode)
&& (m_data.size() < 253);
}
- bool isException() const { return m_code & quint8(0x80); }
+
+ static const quint8 ExceptionByte = 0x80;
ExceptionCode exceptionCode() const {
- if (!dataSize() || !isException())
+ if (!m_data.size() || !isException())
return ExtendedException;
-
- return static_cast<ExceptionCode>(data().at(0));
+ return static_cast<ExceptionCode>(m_data.at(0));
}
+ bool isException() const { return m_code & ExceptionByte; }
qint16 size() const { return dataSize() + 1; }
qint16 dataSize() const { return m_data.size(); }
- FunctionCode functionCode() const { return m_code; }
+ FunctionCode functionCode() const {
+ return FunctionCode(quint8(m_code) &~ ExceptionByte);
+ }
virtual void setFunctionCode(FunctionCode code) { m_code = code; }
QByteArray data() const { return m_data; }
@@ -209,8 +212,8 @@ public:
: QModbusPdu(code, newData)
{}
- Q_SERIALBUS_EXPORT static int minimumDataSize(FunctionCode code);
- Q_SERIALBUS_EXPORT static int calculateDataSize(FunctionCode code, const QByteArray &data);
+ Q_SERIALBUS_EXPORT static int minimumDataSize(const QModbusPdu &pdu);
+ Q_SERIALBUS_EXPORT static int calculateDataSize(const QModbusPdu &pdu, const QByteArray &data);
// TODO currently no way to document -> qdoc issue due to template usage
template <typename ... Args>
@@ -232,8 +235,8 @@ public:
: QModbusPdu(code, newData)
{}
- Q_SERIALBUS_EXPORT static int minimumDataSize(FunctionCode code);
- Q_SERIALBUS_EXPORT static int calculateDataSize(FunctionCode code, const QByteArray &data);
+ Q_SERIALBUS_EXPORT static int minimumDataSize(const QModbusPdu &pdu);
+ Q_SERIALBUS_EXPORT static int calculateDataSize(const QModbusPdu &pdu, const QByteArray &data);
// TODO currently no way to document -> qdoc issue due to template usage
template <typename ... Args>
@@ -250,11 +253,11 @@ public:
: QModbusResponse(pdu)
{}
QModbusExceptionResponse(FunctionCode fc, ExceptionCode ec)
- : QModbusResponse(FunctionCode(quint8(fc) | quint8(0x80)), static_cast<quint8> (ec))
+ : QModbusResponse(FunctionCode(quint8(fc) | ExceptionByte), static_cast<quint8> (ec))
{}
void setFunctionCode(FunctionCode c) {
- QModbusPdu::setFunctionCode(FunctionCode(quint8(c) | quint8(0x80)));
+ QModbusPdu::setFunctionCode(FunctionCode(quint8(c) | ExceptionByte));
}
void setExceptionCode(ExceptionCode ec) { QModbusPdu::encodeData(quint8(ec)); }
};