File indexing completed on 2024-05-12 04:42:00
0001 /* SPDX-FileCopyrightText: 2019 Casper Meijn <casper@meijn.net> 0002 * SPDX-License-Identifier: GPL-3.0-or-later 0003 * 0004 */ 0005 #include "onvifdiscover.h" 0006 0007 #include <QDebug> 0008 #include <QSharedPointer> 0009 #include <WSDiscoveryClient> 0010 #include <WSDiscoveryProbeJob> 0011 #include <WSDiscoveryServiceAggregator> 0012 #include <WSDiscoveryTargetService> 0013 0014 OnvifDiscover::OnvifDiscover(QObject *parent) 0015 : QObject(parent) 0016 { 0017 m_client = new WSDiscoveryClient(this); 0018 0019 m_probeJob = new WSDiscoveryProbeJob(m_client); 0020 0021 m_aggregator = new WSDiscoveryServiceAggregator(this); 0022 0023 connect(m_probeJob, &WSDiscoveryProbeJob::matchReceived, m_aggregator, &WSDiscoveryServiceAggregator::updateService); 0024 connect(m_aggregator, &WSDiscoveryServiceAggregator::serviceUpdated, this, &OnvifDiscover::matchReceived); 0025 0026 KDQName type("tdn:NetworkVideoTransmitter"); 0027 type.setNameSpace("http://www.onvif.org/ver10/network/wsdl"); 0028 m_probeJob->addType(type); 0029 } 0030 0031 OnvifDiscover::~OnvifDiscover() = default; 0032 0033 void OnvifDiscover::start() 0034 { 0035 m_client->start(); 0036 m_probeJob->start(); 0037 } 0038 0039 void OnvifDiscover::matchReceived(const QSharedPointer<WSDiscoveryTargetService> &matchedService) 0040 { 0041 qDebug() << "ProbeMatch received:"; 0042 qDebug() << " Endpoint reference:" << matchedService->endpointReference(); 0043 const auto &typeList = matchedService->typeList(); 0044 for (const auto &type : typeList) { 0045 qDebug() << " Type:" << type.localName() << "in namespace" << type.nameSpace(); 0046 } 0047 const auto &scopeList = matchedService->scopeList(); 0048 for (const auto &scope : scopeList) { 0049 qDebug() << " Scope:" << scope.toString(); 0050 } 0051 const auto &xAddrList = matchedService->xAddrList(); 0052 for (const auto &xAddr : xAddrList) { 0053 qDebug() << " XAddr:" << xAddr.toString(); 0054 } 0055 }