forward radio data to discovering plugins too
This commit is contained in:
parent
95b5cbbd9d
commit
9e2f1286b1
@ -199,7 +199,12 @@ QPair<DeviceManager::DeviceError, QString> DeviceManager::discoverDevices(const
|
|||||||
if (!plugin) {
|
if (!plugin) {
|
||||||
return qMakePair<DeviceError, QString>(DeviceManager::DeviceErrorPluginNotFound, deviceClass.pluginId().toString());
|
return qMakePair<DeviceError, QString>(DeviceManager::DeviceErrorPluginNotFound, deviceClass.pluginId().toString());
|
||||||
}
|
}
|
||||||
return plugin->discoverDevices(deviceClassId, effectiveParams);
|
m_discoveringPlugins.append(plugin);
|
||||||
|
QPair<DeviceError, QString> ret = plugin->discoverDevices(deviceClassId, effectiveParams);
|
||||||
|
if (ret.first != DeviceErrorAsync) {
|
||||||
|
m_discoveringPlugins.removeOne(plugin);
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! Add a new configured device for the given \l{DeviceClass} and the given parameters.
|
/*! Add a new configured device for the given \l{DeviceClass} and the given parameters.
|
||||||
@ -622,6 +627,9 @@ void DeviceManager::startMonitoringAutoDevices()
|
|||||||
|
|
||||||
void DeviceManager::slotDevicesDiscovered(const DeviceClassId &deviceClassId, const QList<DeviceDescriptor> deviceDescriptors)
|
void DeviceManager::slotDevicesDiscovered(const DeviceClassId &deviceClassId, const QList<DeviceDescriptor> deviceDescriptors)
|
||||||
{
|
{
|
||||||
|
DevicePlugin *plugin = static_cast<DevicePlugin*>(sender());
|
||||||
|
m_discoveringPlugins.removeOne(plugin);
|
||||||
|
|
||||||
foreach (const DeviceDescriptor &descriptor, deviceDescriptors) {
|
foreach (const DeviceDescriptor &descriptor, deviceDescriptors) {
|
||||||
m_discoveredDevices.insert(descriptor.id(), descriptor);
|
m_discoveredDevices.insert(descriptor.id(), descriptor);
|
||||||
}
|
}
|
||||||
@ -812,13 +820,24 @@ void DeviceManager::slotDeviceStateValueChanged(const QUuid &stateTypeId, const
|
|||||||
|
|
||||||
void DeviceManager::radio433SignalReceived(QList<int> rawData)
|
void DeviceManager::radio433SignalReceived(QList<int> rawData)
|
||||||
{
|
{
|
||||||
|
QList<DevicePlugin*> targetPlugins;
|
||||||
|
|
||||||
foreach (Device *device, m_configuredDevices) {
|
foreach (Device *device, m_configuredDevices) {
|
||||||
DeviceClass deviceClass = m_supportedDevices.value(device->deviceClassId());
|
DeviceClass deviceClass = m_supportedDevices.value(device->deviceClassId());
|
||||||
DevicePlugin *plugin = m_devicePlugins.value(deviceClass.pluginId());
|
DevicePlugin *plugin = m_devicePlugins.value(deviceClass.pluginId());
|
||||||
if (plugin->requiredHardware().testFlag(HardwareResourceRadio433)) {
|
if (plugin->requiredHardware().testFlag(HardwareResourceRadio433) && !targetPlugins.contains(plugin)) {
|
||||||
plugin->radioData(rawData);
|
targetPlugins.append(plugin);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
foreach (DevicePlugin *plugin, m_discoveringPlugins) {
|
||||||
|
if (plugin->requiredHardware().testFlag(HardwareResourceRadio433) && !targetPlugins.contains(plugin)) {
|
||||||
|
targetPlugins.append(plugin);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (DevicePlugin *plugin, targetPlugins) {
|
||||||
|
plugin->radioData(rawData);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeviceManager::timerEvent()
|
void DeviceManager::timerEvent()
|
||||||
|
|||||||
@ -151,6 +151,8 @@ private:
|
|||||||
QHash<QUuid, QPair<DeviceClassId, ParamList> > m_pairingsJustAdd;
|
QHash<QUuid, QPair<DeviceClassId, ParamList> > m_pairingsJustAdd;
|
||||||
QHash<QUuid, QPair<DeviceClassId, DeviceDescriptorId> > m_pairingsDiscovery;
|
QHash<QUuid, QPair<DeviceClassId, DeviceDescriptorId> > m_pairingsDiscovery;
|
||||||
|
|
||||||
|
QList<DevicePlugin*> m_discoveringPlugins;
|
||||||
|
|
||||||
friend class DevicePlugin;
|
friend class DevicePlugin;
|
||||||
};
|
};
|
||||||
Q_DECLARE_OPERATORS_FOR_FLAGS(DeviceManager::HardwareResources)
|
Q_DECLARE_OPERATORS_FOR_FLAGS(DeviceManager::HardwareResources)
|
||||||
|
|||||||
Reference in New Issue
Block a user