summaryrefslogtreecommitdiffstats
path: root/tests/auto/qmodbusserver/tst_qmodbusserver.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/qmodbusserver/tst_qmodbusserver.cpp')
-rw-r--r--tests/auto/qmodbusserver/tst_qmodbusserver.cpp46
1 files changed, 46 insertions, 0 deletions
diff --git a/tests/auto/qmodbusserver/tst_qmodbusserver.cpp b/tests/auto/qmodbusserver/tst_qmodbusserver.cpp
index 114063a..2f5c231 100644
--- a/tests/auto/qmodbusserver/tst_qmodbusserver.cpp
+++ b/tests/auto/qmodbusserver/tst_qmodbusserver.cpp
@@ -37,6 +37,7 @@
#include <QtSerialBus/qmodbusserver.h>
#include <QtSerialBus/qmodbusrtuserialslave.h>
#include <QtSerialBus/qmodbustcpserver.h>
+#include <QtSerialBus/qmodbusdeviceidentification.h>
#include <QtCore/qdebug.h>
#include <QtTest/QtTest>
@@ -1198,6 +1199,51 @@ private slots:
server.processRequest(QModbusRequest(QModbusRequest::Diagnostics, quint16(0x0014), quint16(0)));
QCOMPARE(server.value(QModbusServer::DiagnosticRegister).value<quint16>(), quint16(0xfffe));
}
+
+ void testProcessEncapsulatedInterfaceTransportRequest()
+ {
+ QModbusDeviceIdentification objectPool;
+ QCOMPARE(objectPool.insert(QModbusDeviceIdentification::VendorNameObjectId,
+ "Company identification"), true);
+ QCOMPARE(objectPool.isValid(), false);
+ QCOMPARE(objectPool.insert(QModbusDeviceIdentification::ProductCodeObjectId,
+ "Product code"), true);
+ QCOMPARE(objectPool.isValid(), false);
+ QCOMPARE(objectPool.insert(QModbusDeviceIdentification::MajorMinorRevisionObjectId,
+ "V2.11"), true);
+ QCOMPARE(objectPool.isValid(), true);
+
+ QCOMPARE(server.setValue(QModbusServer::DeviceIdentification,
+ QVariant::fromValue<QModbusDeviceIdentification>(objectPool)), true);
+
+ auto response = server
+ .processRequest(QModbusRequest(QModbusRequest::EncapsulatedInterfaceTransport,
+ QByteArray::fromHex("0e0100")));
+ QCOMPARE(response.data(), QByteArray::fromHex("0e01010000030016")
+ + "Company identification" + QByteArray::fromHex("010c") + "Product code"
+ + QByteArray::fromHex("0205") + "V2.11");
+
+ QCOMPARE(objectPool.insert(QModbusDeviceIdentification::ProductCodeObjectId, QByteArray(
+ "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
+ "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
+ "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")), true);
+ QCOMPARE(objectPool.isValid(), true);
+
+ QCOMPARE(server.setValue(QModbusServer::DeviceIdentification,
+ QVariant::fromValue<QModbusDeviceIdentification>(objectPool)), true);
+
+ response = server.processRequest(QModbusRequest(QModbusPdu::EncapsulatedInterfaceTransport,
+ QByteArray::fromHex("0e0100")));
+ QCOMPARE(response.data(), QByteArray::fromHex("0e0101ff02020016")
+ + "Company identification" + QByteArray::fromHex("01dc") + QByteArray(
+ "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
+ "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
+ "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"));
+
+ response = server.processRequest(QModbusRequest(QModbusPdu::EncapsulatedInterfaceTransport,
+ QByteArray::fromHex("0e0102")));
+ QCOMPARE(response.data(), QByteArray::fromHex("0e01010000010205") + "V2.11");
+ }
};
QTEST_MAIN(tst_QModbusServer)