void CPeripherals::OnDeviceAdded(const CPeripheralBus &bus, const CPeripheral &peripheral) { OnDeviceChanged(); // don't show a notification for devices detected during the initial scan if (bus.IsInitialised()) CGUIDialogKaiToast::QueueNotification(CGUIDialogKaiToast::Info, g_localizeStrings.Get(35005), peripheral.DeviceName()); }
void CPeripherals::OnDeviceAdded(const CPeripheralBus &bus, const CPeripheral &peripheral) { OnDeviceChanged(); //! @todo Improve device notifications in v18 #if 0 bool bNotify = true; // don't show a notification for devices detected during the initial scan if (!bus.IsInitialised()) bNotify = false; if (bNotify) CGUIDialogKaiToast::QueueNotification(CGUIDialogKaiToast::Info, g_localizeStrings.Get(35005), peripheral.DeviceName()); #endif }
void CPeripherals::OnDeviceAdded(const CPeripheralBus &bus, const CPeripheral &peripheral) { CGUIDialogPeripheralManager *dialog = (CGUIDialogPeripheralManager *)g_windowManager.GetWindow(WINDOW_DIALOG_PERIPHERAL_MANAGER); if (dialog && dialog->IsActive()) dialog->Update(); // refresh settings (peripherals manager could be enabled now) CGUIMessage msg(GUI_MSG_UPDATE, WINDOW_SETTINGS_SYSTEM, 0); g_windowManager.SendThreadMessage(msg, WINDOW_SETTINGS_SYSTEM); SetChanged(); // don't show a notification for devices detected during the initial scan if (bus.IsInitialised()) CGUIDialogKaiToast::QueueNotification(CGUIDialogKaiToast::Info, g_localizeStrings.Get(35005), peripheral.DeviceName()); }
void CPeripherals::OnDeviceAdded(const CPeripheralBus &bus, const CPeripheral &peripheral) { OnDeviceChanged(); bool bNotify = true; // don't show a notification for devices detected during the initial scan if (!bus.IsInitialised()) bNotify = false; // don't show a notification for emulated peripherals if (peripheral.Type() == PERIPHERAL_JOYSTICK_EMULATION) //! @todo Change to peripheral.IsEmulated() bNotify = false; if (bNotify) CGUIDialogKaiToast::QueueNotification(CGUIDialogKaiToast::Info, g_localizeStrings.Get(35005), peripheral.DeviceName()); }
int CPeripherals::GetMappingForDevice(const CPeripheralBus &bus, const PeripheralType classType, int iVendorId, int iProductId) 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++) { 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 == iVendorId && mapping.m_PeripheralID[i].m_iProductId == iProductId) bProductMatch = true; } bool bBusMatch = (mapping.m_busType == PERIPHERAL_BUS_UNKNOWN || mapping.m_busType == bus.Type()); bool bClassMatch = (mapping.m_class == PERIPHERAL_UNKNOWN || mapping.m_class == classType); if (bProductMatch && bBusMatch && bClassMatch) { CStdString strVendorId, strProductId; PeripheralTypeTranslator::FormatHexString(iVendorId, strVendorId); PeripheralTypeTranslator::FormatHexString(iProductId, strProductId); CLog::Log(LOGDEBUG, "%s - device (%s:%s) mapped to %s (type = %s)", __FUNCTION__, strVendorId.c_str(), strProductId.c_str(), mapping.m_strDeviceName.c_str(), PeripheralTypeTranslator::TypeToString(mapping.m_mappedTo)); return iMappingPtr; } } return -1; }
bool CPeripherals::GetMappingForDevice(const CPeripheralBus &bus, PeripheralScanResult& result) 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 == result.m_iVendorId && peripheralID.m_iProductId == result.m_iProductId) bProductMatch = true; } bool bBusMatch = (mapping.m_busType == PERIPHERAL_BUS_UNKNOWN || mapping.m_busType == bus.Type()); bool bClassMatch = (mapping.m_class == PERIPHERAL_UNKNOWN || mapping.m_class == result.m_type); if (bProductMatch && bBusMatch && bClassMatch) { std::string strVendorId, strProductId; PeripheralTypeTranslator::FormatHexString(result.m_iVendorId, strVendorId); PeripheralTypeTranslator::FormatHexString(result.m_iProductId, strProductId); CLog::Log(LOGDEBUG, "%s - device (%s:%s) mapped to %s (type = %s)", __FUNCTION__, strVendorId.c_str(), strProductId.c_str(), mapping.m_strDeviceName.c_str(), PeripheralTypeTranslator::TypeToString(mapping.m_mappedTo)); result.m_mappedType = mapping.m_mappedTo; if (!mapping.m_strDeviceName.empty()) result.m_strDeviceName = mapping.m_strDeviceName; return true; } } return false; }
void CPeripherals::CreatePeripheral(CPeripheralBus &bus, const PeripheralScanResult& result) { PeripheralPtr peripheral; PeripheralScanResult mappedResult = result; if (mappedResult.m_busType == PERIPHERAL_BUS_UNKNOWN) mappedResult.m_busType = bus.Type(); /* check whether there's something mapped in peripherals.xml */ GetMappingForDevice(bus, mappedResult); switch(mappedResult.m_mappedType) { case PERIPHERAL_HID: peripheral = PeripheralPtr(new CPeripheralHID(mappedResult, &bus)); break; case PERIPHERAL_NIC: peripheral = PeripheralPtr(new CPeripheralNIC(mappedResult, &bus)); break; case PERIPHERAL_DISK: peripheral = PeripheralPtr(new CPeripheralDisk(mappedResult, &bus)); break; case PERIPHERAL_NYXBOARD: peripheral = PeripheralPtr(new CPeripheralNyxboard(mappedResult, &bus)); break; case PERIPHERAL_TUNER: peripheral = PeripheralPtr(new CPeripheralTuner(mappedResult, &bus)); break; case PERIPHERAL_BLUETOOTH: peripheral = PeripheralPtr(new CPeripheralBluetooth(mappedResult, &bus)); break; case PERIPHERAL_CEC: #if defined(HAVE_LIBCEC) if (bus.Type() == PERIPHERAL_BUS_CEC) peripheral = PeripheralPtr(new CPeripheralCecAdapter(mappedResult, &bus)); #else if (!m_bMissingLibCecWarningDisplayed) { m_bMissingLibCecWarningDisplayed = true; CLog::Log(LOGWARNING, "%s - libCEC support has not been compiled in, so the CEC adapter cannot be used.", __FUNCTION__); CGUIDialogKaiToast::QueueNotification(CGUIDialogKaiToast::Warning, g_localizeStrings.Get(36000), g_localizeStrings.Get(36017)); } #endif break; case PERIPHERAL_IMON: peripheral = PeripheralPtr(new CPeripheralImon(mappedResult, &bus)); break; case PERIPHERAL_JOYSTICK: peripheral = PeripheralPtr(new CPeripheralJoystick(mappedResult, &bus)); break; default: break; } if (peripheral) { /* try to initialise the new peripheral * Initialise() will make sure that each device is only initialised once */ if (peripheral->Initialise()) bus.Register(peripheral); else { CLog::Log(LOGDEBUG, "%s - failed to initialise peripheral on '%s'", __FUNCTION__, mappedResult.m_strLocation.c_str()); } } }