Another api change

master
Michael Zanetti 2019-06-04 18:57:50 +02:00
parent 40c0de8863
commit 0820dad5ef
3 changed files with 20 additions and 15 deletions

View File

@ -44,6 +44,7 @@
#include "plugin/device.h"
#include "devicemanager.h"
#include "plugininfo.h"
#include "platform/platformzeroconfcontroller.h"
#include "network/zeroconf/zeroconfservicebrowser.h"
#include <QDebug>
@ -56,12 +57,6 @@ DevicePluginAvahiMonitor::DevicePluginAvahiMonitor()
}
void DevicePluginAvahiMonitor::init()
{
connect(hardwareManager()->zeroConfServiceBrowser(), &ZeroConfServiceBrowser::serviceEntryAdded, this, &DevicePluginAvahiMonitor::onServiceEntryAdded);
connect(hardwareManager()->zeroConfServiceBrowser(), &ZeroConfServiceBrowser::serviceEntryRemoved, this, &DevicePluginAvahiMonitor::onServiceEntryRemoved);
}
DeviceManager::DeviceSetupStatus DevicePluginAvahiMonitor::setupDevice(Device *device)
{
qCDebug(dcAvahiMonitor()) << "Setup" << device->name() << device->params();
@ -76,8 +71,14 @@ DeviceManager::DeviceError DevicePluginAvahiMonitor::discoverDevices(const Devic
if (deviceClassId != avahiDeviceClassId)
return DeviceManager::DeviceErrorDeviceClassNotFound;
if (!m_serviceBrowser) {
m_serviceBrowser = hardwareManager()->zeroConfController()->createServiceBrowser();
connect(m_serviceBrowser, &ZeroConfServiceBrowser::serviceEntryAdded, this, &DevicePluginAvahiMonitor::onServiceEntryAdded);
connect(m_serviceBrowser, &ZeroConfServiceBrowser::serviceEntryRemoved, this, &DevicePluginAvahiMonitor::onServiceEntryRemoved);
}
QList<DeviceDescriptor> deviceDescriptors;
foreach (const ZeroConfServiceEntry &service, hardwareManager()->zeroConfServiceBrowser()->serviceEntries()) {
foreach (const ZeroConfServiceEntry &service, m_serviceBrowser->serviceEntries()) {
DeviceDescriptor deviceDescriptor(avahiDeviceClassId, service.name(), service.hostAddress().toString());
ParamList params;
params.append(Param(avahiDeviceServiceParamTypeId, service.name()));
@ -99,6 +100,7 @@ DeviceManager::DeviceError DevicePluginAvahiMonitor::discoverDevices(const Devic
void DevicePluginAvahiMonitor::onServiceEntryAdded(const ZeroConfServiceEntry &serviceEntry)
{
qCDebug(dcAvahiMonitor()) << "Service entry added:" << serviceEntry;
foreach (Device *device, myDevices()) {
if (device->paramValue(avahiDeviceServiceParamTypeId).toString() == serviceEntry.name()) {
device->setStateValue(avahiIsPresentStateTypeId, true);

View File

@ -25,6 +25,7 @@
#define DEVICEPLUGINAVAHIMONITOR_H
#include "plugin/deviceplugin.h"
#include "network/zeroconf/zeroconfservicebrowser.h"
#include "network/zeroconf/zeroconfserviceentry.h"
#include <QProcess>
@ -39,14 +40,15 @@ class DevicePluginAvahiMonitor : public DevicePlugin
public:
explicit DevicePluginAvahiMonitor();
void init() override;
DeviceManager::DeviceSetupStatus setupDevice(Device *device) override;
DeviceManager::DeviceError discoverDevices(const DeviceClassId &deviceClassId, const ParamList &params) override;
private slots:
void onServiceEntryAdded(const ZeroConfServiceEntry &serviceEntry);
void onServiceEntryRemoved(const ZeroConfServiceEntry &serviceEntry);
private:
ZeroConfServiceBrowser *m_serviceBrowser = nullptr;;
};
#endif // DEVICEPLUGINAVAHIMONITOR_H

View File

@ -65,6 +65,7 @@
#include "plugin/device.h"
#include "plugininfo.h"
#include "network/upnp/upnpdiscovery.h"
#include "platform/platformzeroconfcontroller.h"
#include "network/zeroconf/zeroconfservicebrowser.h"
#include "network/zeroconf/zeroconfserviceentry.h"
#include "network/networkaccessmanager.h"
@ -183,9 +184,10 @@ DeviceManager::DeviceError DevicePluginKodi::discoverDevices(const DeviceClassId
Q_UNUSED(params)
Q_UNUSED(deviceClassId)
QList<DeviceDescriptor> descriptors;
foreach (const ZeroConfServiceEntry &avahiEntry, hardwareManager()->zeroConfServiceBrowser()->serviceEntries()) {
if (avahiEntry.serviceType() == "_xbmc-jsonrpc._tcp") {
ZeroConfServiceBrowser *serviceBrowser = hardwareManager()->zeroConfController()->createServiceBrowser("_xbmc-jsonrpc._tcp");
QTimer::singleShot(5000, this, [this, serviceBrowser](){
QList<DeviceDescriptor> descriptors;
foreach (const ZeroConfServiceEntry avahiEntry, serviceBrowser->serviceEntries()) {
qCDebug(dcKodi) << "Zeroconf entry:" << avahiEntry;
DeviceDescriptor descriptor(kodiDeviceClassId, avahiEntry.name(), avahiEntry.hostName() + " (" + avahiEntry.hostAddress().toString() + ")");
ParamList params;
@ -194,10 +196,9 @@ DeviceManager::DeviceError DevicePluginKodi::discoverDevices(const DeviceClassId
descriptor.setParams(params);
descriptors << descriptor;
}
}
if (!descriptors.isEmpty()) {
emit devicesDiscovered(kodiDeviceClassId, descriptors);
}
serviceBrowser->deleteLater();
});
return DeviceManager::DeviceErrorAsync;
}