diff options
author | Karsten Heimrich <karsten.heimrich@qt.io> | 2018-08-17 15:03:16 +0200 |
---|---|---|
committer | Karsten Heimrich <karsten.heimrich@qt.io> | 2018-08-17 14:03:43 +0000 |
commit | c2625696b2429d1c1d4e9bde97383d3f72d9d04e (patch) | |
tree | f78b232eb18779c1e5ddb26be1faa529e14dad58 /tests | |
parent | 5914dded6d17d2073d9ae0bcbaf9a9f655883144 (diff) |
AN183: Add support for sending routing system broadcast frames
Change-Id: I08d13f19dfab20a3a58a5a123e8f8305cc7023af
Reviewed-by: Karsten Heimrich <karsten.heimrich@qt.io>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/qknxnetiproutinginterface/tst_qknxnetiproutinginterface.cpp | 45 | ||||
-rw-r--r-- | tests/auto/qknxnetiproutingsystembroadcast/tst_qknxnetiproutingsystembroadcast.cpp | 2 |
2 files changed, 44 insertions, 3 deletions
diff --git a/tests/auto/qknxnetiproutinginterface/tst_qknxnetiproutinginterface.cpp b/tests/auto/qknxnetiproutinginterface/tst_qknxnetiproutinginterface.cpp index aa20035..c046e2b 100644 --- a/tests/auto/qknxnetiproutinginterface/tst_qknxnetiproutinginterface.cpp +++ b/tests/auto/qknxnetiproutinginterface/tst_qknxnetiproutinginterface.cpp @@ -33,6 +33,7 @@ #include <QtKnx/qknxnetiproutingbusy.h> #include <QtKnx/qknxnetiproutingindication.h> #include <QtKnx/qknxnetiproutinglostmessage.h> +#include <QtKnx/qknxnetiproutingsystembroadcast.h> #include <QtKnx/private/qknxnetiproutinginterface_p.h> #include <QtKnx/private/qknxtestingrouter_p.h> @@ -66,6 +67,7 @@ private slots: void test_routing_receives_indications(); void test_routing_receives_busy(); void test_routing_busy_sent_packets_same_individual_address(); + void test_routing_interface_sends_system_broadcast(); void test_routing_filter(); void test_routing_filter_data(); @@ -405,6 +407,47 @@ void tst_QKnxNetIpRoutingInterface::test_routing_busy_sent_packets_same_individu QCOMPARE(m_routingInterface.state(), QKnxNetIpRoutingInterface::State::NeighborBusy); } +void tst_QKnxNetIpRoutingInterface::test_routing_interface_sends_system_broadcast() +{ + if (!runTests) + return; + + m_routingInterface.start(); + + auto dst = QKnxAddress::createGroup(1, 1, 1); + auto tpdu = QKnxTpduFactory::Multicast::createGroupValueReadTpdu(); + auto ctrl = QKnxControlField::builder() + .setFrameFormat(QKnxControlField::FrameFormat::Standard) + .setBroadcast(QKnxControlField::Broadcast::System) + .setPriority(QKnxControlField::Priority::Normal) + .create(); + + auto extCtrl = QKnxExtendedControlField::builder() + .setDestinationAddressType(dst.type()) + .setHopCount(6) + .create(); + + auto frame = QKnxLinkLayerFrame::builder() + .setControlField(ctrl) + .setExtendedControlField(extCtrl) + .setTpdu(tpdu) + .setDestinationAddress(dst) + .setSourceAddress({ QKnxAddress::Type::Individual, 0 }) + .setMessageCode(QKnxLinkLayerFrame::MessageCode::DataIndication) + .setMedium(QKnx::MediumType::NetIP) + .createFrame(); + + bool sbcSent = false; + QObject::connect(&m_routingInterface, + &QKnxNetIpRoutingInterface::routingSystemBroadcastSent, [&](QKnxNetIpFrame frame) { + sbcSent = true; + QKnxNetIpRoutingSystemBroadcastProxy sbc(frame); + QVERIFY(sbc.isValid()); + }); + m_routingInterface.sendRoutingSystemBroadcast(frame); + QVERIFY(sbcSent); +} + void tst_QKnxNetIpRoutingInterface::test_routing_filter() { if (!runTests) @@ -423,7 +466,6 @@ void tst_QKnxNetIpRoutingInterface::test_routing_filter() m_routingInterface.start(); bool receivedIndication = false; - QObject::connect(&m_routingInterface, &QKnxNetIpRoutingInterface::routingIndicationReceived , [&](QKnxNetIpFrame frame , QKnxNetIpRoutingInterface::FilterAction routingAction) { @@ -433,7 +475,6 @@ void tst_QKnxNetIpRoutingInterface::test_routing_filter() receivedIndication = true; }); - auto frame = dummyRoutingIndication(dst, hopCount); simulateFramesReceived(frame); QVERIFY(receivedIndication); diff --git a/tests/auto/qknxnetiproutingsystembroadcast/tst_qknxnetiproutingsystembroadcast.cpp b/tests/auto/qknxnetiproutingsystembroadcast/tst_qknxnetiproutingsystembroadcast.cpp index 0d17c4f..6fc3dbf 100644 --- a/tests/auto/qknxnetiproutingsystembroadcast/tst_qknxnetiproutingsystembroadcast.cpp +++ b/tests/auto/qknxnetiproutingsystembroadcast/tst_qknxnetiproutingsystembroadcast.cpp @@ -73,7 +73,7 @@ void tst_QKnxNetIpRoutingSystemBroadcast::setValidCemi() auto tpdu = QKnxTpduFactory::Multicast::createGroupValueReadTpdu(); auto ctrl = QKnxControlField::builder() .setFrameFormat(QKnxControlField::FrameFormat::Standard) - .setBroadcast(QKnxControlField::Broadcast::Domain) + .setBroadcast(QKnxControlField::Broadcast::System) .setPriority(QKnxControlField::Priority::Normal) .create(); |