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 }