added addconfigureddevice for descriptors to devicemanager

This commit is contained in:
Michael Zanetti 2014-04-13 23:27:00 +02:00
parent 2d84223ad6
commit 29c6fa4071
4 changed files with 40 additions and 3 deletions

View File

@ -180,6 +180,24 @@ DeviceManager::DeviceError DeviceManager::addConfiguredDevice(const DeviceClassI
return DeviceErrorCreationMethodNotSupported; 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 &params, const DeviceId id) DeviceManager::DeviceError DeviceManager::addConfiguredDeviceInternal(const DeviceClassId &deviceClassId, const QVariantMap &params, const DeviceId id)
{ {
DeviceClass deviceClass = findDeviceClass(deviceClassId); DeviceClass deviceClass = findDeviceClass(deviceClassId);
@ -435,7 +453,11 @@ void DeviceManager::createNewAutoDevices()
void DeviceManager::slotDevicesDiscovered(const DeviceClassId &deviceClassId, const QList<DeviceDescriptor> deviceDescriptors) 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); emit devicesDiscovered(deviceClassId, deviceDescriptors);
} }

View File

@ -57,7 +57,8 @@ public:
DeviceErrorDuplicateUuid, DeviceErrorDuplicateUuid,
DeviceErrorCreationMethodNotSupported, DeviceErrorCreationMethodNotSupported,
DeviceErrorDeviceParameterError, DeviceErrorDeviceParameterError,
DeviceErrorActionParameterError DeviceErrorActionParameterError,
DeviceErrorDeviceDescriptorNotFound
}; };
explicit DeviceManager(QObject *parent = 0); explicit DeviceManager(QObject *parent = 0);
@ -72,6 +73,7 @@ public:
QList<Device*> configuredDevices() const; QList<Device*> configuredDevices() const;
DeviceError addConfiguredDevice(const DeviceClassId &deviceClassId, const QVariantMap &params, const DeviceId id = DeviceId::createDeviceId()); DeviceError addConfiguredDevice(const DeviceClassId &deviceClassId, const QVariantMap &params, const DeviceId id = DeviceId::createDeviceId());
DeviceError addConfiguredDevice(const DeviceClassId &deviceClassId, const DeviceDescriptorId &deviceDescriptorId);
DeviceError removeConfiguredDevice(const DeviceId &deviceId); DeviceError removeConfiguredDevice(const DeviceId &deviceId);
Device* findConfiguredDevice(const DeviceId &id) const; Device* findConfiguredDevice(const DeviceId &id) const;
@ -108,7 +110,7 @@ private:
QHash<VendorId, QList<DeviceClassId> > m_vendorDeviceMap; QHash<VendorId, QList<DeviceClassId> > m_vendorDeviceMap;
QHash<DeviceClassId, DeviceClass> m_supportedDevices; QHash<DeviceClassId, DeviceClass> m_supportedDevices;
QList<Device*> m_configuredDevices; QList<Device*> m_configuredDevices;
QHash<DeviceClassId, QList<DeviceDescriptor> > m_discoveredDevices; QHash<DeviceClassId, QHash<DeviceDescriptorId, DeviceDescriptor> > m_discoveredDevices;
QHash<PluginId, DevicePlugin*> m_devicePlugins; QHash<PluginId, DevicePlugin*> m_devicePlugins;

View File

@ -1,5 +1,10 @@
#include "devicedescriptor.h" #include "devicedescriptor.h"
DeviceDescriptor::DeviceDescriptor()
{
}
DeviceDescriptor::DeviceDescriptor(const DeviceDescriptorId &id, const DeviceClassId &deviceClassId, const QString &title, const QString &description) : DeviceDescriptor::DeviceDescriptor(const DeviceDescriptorId &id, const DeviceClassId &deviceClassId, const QString &title, const QString &description) :
m_id(id), m_id(id),
m_deviceClassId(deviceClassId), 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 DeviceDescriptorId DeviceDescriptor::id() const
{ {
return m_id; return m_id;

View File

@ -8,8 +8,11 @@
class DeviceDescriptor class DeviceDescriptor
{ {
public: public:
DeviceDescriptor();
DeviceDescriptor(const DeviceDescriptorId &id, const DeviceClassId &deviceClassId, const QString &title = QString(), const QString &description = QString()); DeviceDescriptor(const DeviceDescriptorId &id, const DeviceClassId &deviceClassId, const QString &title = QString(), const QString &description = QString());
bool isValid() const;
DeviceDescriptorId id() const; DeviceDescriptorId id() const;
DeviceClassId deviceClassId() const; DeviceClassId deviceClassId() const;