diff options
Diffstat (limited to 'examples/knx/device/mainwindow.cpp')
-rw-r--r-- | examples/knx/device/mainwindow.cpp | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/examples/knx/device/mainwindow.cpp b/examples/knx/device/mainwindow.cpp index 429b578..f7f9ba4 100644 --- a/examples/knx/device/mainwindow.cpp +++ b/examples/knx/device/mainwindow.cpp @@ -265,7 +265,9 @@ void MainWindow::on_connection_clicked() if (m_management.state() == QKnxNetIpTunnel::State::Connected) return m_management.disconnectFromHost(); - m_management.setLocalAddress(QHostAddress(ui->interfaces->currentData().toString())); + const auto list = ui->interfaces->currentData().toStringList(); + m_management.setLocalAddress(QHostAddress(list.first())); + m_management.setSerialNumber(QKnxByteArray::fromHex(list.last().toLatin1())); m_last = new QTreeWidgetItem(ui->communication, m_last); m_last->setText(0, tr("Establish connection to: %1 (%2 : %3)") @@ -275,7 +277,7 @@ void MainWindow::on_connection_clicked() m_last->setFirstColumnSpanned(true); if (ui->secureSession->isChecked()) { - auto secureConfiguration = m_secureConfigs.value(ui->secureConfigs->currentIndex()); + auto secureConfiguration = m_secureConfigs.value(ui->secureConfigs->currentData().toInt()); secureConfiguration.setKeepSecureSessionAlive(true); m_management.setSecureConfiguration(secureConfiguration); m_management.connectToHostEncrypted(m_device->info().controlEndpointAddress(), @@ -293,16 +295,26 @@ void MainWindow::setupInterfaces() firstItem->setSelectable(false); const auto interfaces = QNetworkInterface::allInterfaces(); - for (int i = 0; i < interfaces.size(); i++) { - const auto addressEntries = interfaces[i].addressEntries(); + for (const auto &iface : interfaces) { + const auto addressEntries = iface.addressEntries(); for (int j = 0; j < addressEntries.size(); j++) { const auto ip = addressEntries[j].ip(); if (ip.isLoopback() || ip.toIPv4Address() == 0) continue; - ui->interfaces->addItem(interfaces[i].name() + ": " + ip.toString(), ip.toString()); + ui->interfaces->addItem(iface.name() + ": " + ip.toString(), + QStringList { ip.toString(), iface.hardwareAddress().remove(QLatin1Literal(":")) }); } } ui->interfaces->setCurrentIndex(bool(ui->interfaces->count())); + + connect(ui->interfaces, QOverload<int>::of(&QComboBox::currentIndexChanged), this, [&](int i) { + if (i < 0) + return; + m_discoveryAgent.stop(); + m_discoveryAgent.setLocalAddress(QHostAddress(ui->interfaces->currentData() + .toStringList().first())); + m_discoveryAgent.start(); + }); } void MainWindow::toggleUi(bool value) |