mirror of https://github.com/nymea/nymea.git
added addconfigureddevice for descriptors to devicemanager
parent
2d84223ad6
commit
29c6fa4071
|
|
@ -180,6 +180,24 @@ DeviceManager::DeviceError DeviceManager::addConfiguredDevice(const DeviceClassI
|
|||
return DeviceErrorCreationMethodNotSupported;
|
||||
}
|
||||
|
||||
DeviceManager::DeviceError DeviceManager::addConfiguredDevice(const DeviceClassId &deviceClassId, const DeviceDescriptorId &deviceDescriptorId)
|
||||
{
|
||||
DeviceClass deviceClass = findDeviceClass(deviceClassId);
|
||||
if (!deviceClass.isValid()) {
|
||||
return DeviceErrorDeviceClassNotFound;
|
||||
}
|
||||
if (deviceClass.createMethod() != DeviceClass::CreateMethodDiscovery) {
|
||||
return DeviceErrorCreationMethodNotSupported;
|
||||
}
|
||||
|
||||
DeviceDescriptor descriptor = m_discoveredDevices.take(deviceClassId).take(deviceDescriptorId);
|
||||
if (!descriptor.isValid()) {
|
||||
return DeviceErrorDeviceDescriptorNotFound;
|
||||
}
|
||||
|
||||
return addConfiguredDeviceInternal(deviceClassId, descriptor.params());
|
||||
}
|
||||
|
||||
DeviceManager::DeviceError DeviceManager::addConfiguredDeviceInternal(const DeviceClassId &deviceClassId, const QVariantMap ¶ms, const DeviceId id)
|
||||
{
|
||||
DeviceClass deviceClass = findDeviceClass(deviceClassId);
|
||||
|
|
@ -435,7 +453,11 @@ void DeviceManager::createNewAutoDevices()
|
|||
|
||||
void DeviceManager::slotDevicesDiscovered(const DeviceClassId &deviceClassId, const QList<DeviceDescriptor> deviceDescriptors)
|
||||
{
|
||||
m_discoveredDevices[deviceClassId] = deviceDescriptors;
|
||||
QHash<DeviceDescriptorId, DeviceDescriptor> descriptorHash;
|
||||
foreach (const DeviceDescriptor &descriptor, deviceDescriptors) {
|
||||
descriptorHash.insert(descriptor.id(), descriptor);
|
||||
}
|
||||
m_discoveredDevices[deviceClassId] = descriptorHash;
|
||||
emit devicesDiscovered(deviceClassId, deviceDescriptors);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -57,7 +57,8 @@ public:
|
|||
DeviceErrorDuplicateUuid,
|
||||
DeviceErrorCreationMethodNotSupported,
|
||||
DeviceErrorDeviceParameterError,
|
||||
DeviceErrorActionParameterError
|
||||
DeviceErrorActionParameterError,
|
||||
DeviceErrorDeviceDescriptorNotFound
|
||||
};
|
||||
|
||||
explicit DeviceManager(QObject *parent = 0);
|
||||
|
|
@ -72,6 +73,7 @@ public:
|
|||
|
||||
QList<Device*> configuredDevices() const;
|
||||
DeviceError addConfiguredDevice(const DeviceClassId &deviceClassId, const QVariantMap ¶ms, const DeviceId id = DeviceId::createDeviceId());
|
||||
DeviceError addConfiguredDevice(const DeviceClassId &deviceClassId, const DeviceDescriptorId &deviceDescriptorId);
|
||||
DeviceError removeConfiguredDevice(const DeviceId &deviceId);
|
||||
|
||||
Device* findConfiguredDevice(const DeviceId &id) const;
|
||||
|
|
@ -108,7 +110,7 @@ private:
|
|||
QHash<VendorId, QList<DeviceClassId> > m_vendorDeviceMap;
|
||||
QHash<DeviceClassId, DeviceClass> m_supportedDevices;
|
||||
QList<Device*> m_configuredDevices;
|
||||
QHash<DeviceClassId, QList<DeviceDescriptor> > m_discoveredDevices;
|
||||
QHash<DeviceClassId, QHash<DeviceDescriptorId, DeviceDescriptor> > m_discoveredDevices;
|
||||
|
||||
QHash<PluginId, DevicePlugin*> m_devicePlugins;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,10 @@
|
|||
#include "devicedescriptor.h"
|
||||
|
||||
DeviceDescriptor::DeviceDescriptor()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
DeviceDescriptor::DeviceDescriptor(const DeviceDescriptorId &id, const DeviceClassId &deviceClassId, const QString &title, const QString &description) :
|
||||
m_id(id),
|
||||
m_deviceClassId(deviceClassId),
|
||||
|
|
@ -8,6 +13,11 @@ DeviceDescriptor::DeviceDescriptor(const DeviceDescriptorId &id, const DeviceCla
|
|||
{
|
||||
}
|
||||
|
||||
bool DeviceDescriptor::isValid() const
|
||||
{
|
||||
return !m_id.isNull() && !m_deviceClassId.isNull();
|
||||
}
|
||||
|
||||
DeviceDescriptorId DeviceDescriptor::id() const
|
||||
{
|
||||
return m_id;
|
||||
|
|
|
|||
|
|
@ -8,8 +8,11 @@
|
|||
class DeviceDescriptor
|
||||
{
|
||||
public:
|
||||
DeviceDescriptor();
|
||||
DeviceDescriptor(const DeviceDescriptorId &id, const DeviceClassId &deviceClassId, const QString &title = QString(), const QString &description = QString());
|
||||
|
||||
bool isValid() const;
|
||||
|
||||
DeviceDescriptorId id() const;
|
||||
DeviceClassId deviceClassId() const;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue