void CPeripherals::GetSettingsFromMapping(CPeripheral &peripheral) const { /* check all mappings in the order in which they are defined in peripherals.xml */ for (unsigned int iMappingPtr = 0; iMappingPtr < m_mappings.size(); iMappingPtr++) { const PeripheralDeviceMapping *mapping = &m_mappings.at(iMappingPtr); bool bProductMatch = false; if (mapping->m_PeripheralID.size() == 0) { bProductMatch = true; } else { for (unsigned int i = 0; i < mapping->m_PeripheralID.size(); i++) if (mapping->m_PeripheralID[i].m_iVendorId == peripheral.VendorId() && mapping->m_PeripheralID[i].m_iProductId == peripheral.ProductId()) bProductMatch = true; } bool bBusMatch = (mapping->m_busType == PERIPHERAL_BUS_UNKNOWN || mapping->m_busType == peripheral.GetBusType()); bool bClassMatch = (mapping->m_class == PERIPHERAL_UNKNOWN || mapping->m_class == peripheral.Type()); if (bBusMatch && bProductMatch && bClassMatch) { for (map<CStdString, CSetting *>::const_iterator itr = mapping->m_settings.begin(); itr != mapping->m_settings.end(); itr++) peripheral.AddSetting((*itr).first, (*itr).second); } } }
void CPeripherals::GetSettingsFromMapping(CPeripheral &peripheral) const { CSingleLock lock(m_critSectionMappings); /* check all mappings in the order in which they are defined in peripherals.xml */ for (const auto& mapping : m_mappings) { bool bProductMatch = false; if (mapping.m_PeripheralID.empty()) bProductMatch = true; else { for (const auto& peripheralID : mapping.m_PeripheralID) if (peripheralID.m_iVendorId == peripheral.VendorId() && peripheralID.m_iProductId == peripheral.ProductId()) bProductMatch = true; } bool bBusMatch = (mapping.m_busType == PERIPHERAL_BUS_UNKNOWN || mapping.m_busType == peripheral.GetBusType()); bool bClassMatch = (mapping.m_class == PERIPHERAL_UNKNOWN || mapping.m_class == peripheral.Type()); if (bBusMatch && bProductMatch && bClassMatch) { for (auto itr = mapping.m_settings.begin(); itr != mapping.m_settings.end(); ++itr) peripheral.AddSetting((*itr).first, (*itr).second.m_setting, (*itr).second.m_order); } } }