solid: catch more AC adapters and batteries from device interface query

for PS3 controllers there is not much to work with regardless:
P: /devices/pci0000:00/0000:00:1a.0/usb3/3-1/3-1.1/3-1.1:1.0/0003:054C:0268.0005/power_supply/sony_controller_battery_00:06:f7:09:55:97
L: 0
E: DEVPATH=/devices/pci0000:00/0000:00:1a.0/usb3/3-1/3-1.1/3-1.1:1.0/0003:054C:0268.0005/power_supply/sony_controller_battery_00:06:f7:09:55:97
E: POWER_SUPPLY_NAME=sony_controller_battery_00:06:f7:09:55:97
E: POWER_SUPPLY_TYPE=Battery
E: POWER_SUPPLY_PRESENT=1
E: POWER_SUPPLY_CAPACITY=100
E: POWER_SUPPLY_SCOPE=Device
E: POWER_SUPPLY_STATUS=Charging
E: SUBSYSTEM=power_supply

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
Ivailo Monev 2022-04-22 19:47:56 +03:00
parent 7e439f5e58
commit a1a16743c3

View file

@ -514,15 +514,19 @@ bool UDevDevice::queryDeviceInterface(const Solid::DeviceInterface::Type &type)
}
case Solid::DeviceInterface::AcAdapter: {
const QString powersupplytype = deviceProperty("POWER_SUPPLY_TYPE").toLower();
return (
m_device.subsystem() == QLatin1String("power_supply")
&& deviceName().contains(QLatin1String("/power_supply/AC"))
&& (powersupplytype == QLatin1String("mains")
|| powersupplytype.contains(QLatin1String("ups")))
);
}
case Solid::DeviceInterface::Battery: {
const QString powersupplytype = deviceProperty("POWER_SUPPLY_TYPE").toLower();
return (
m_device.subsystem() == QLatin1String("power_supply")
&& deviceName().contains(QLatin1String("/power_supply/BAT"))
m_device.subsystem() == QLatin1String("power_supply") &&
(powersupplytype == QLatin1String("battery")
|| powersupplytype.contains(QLatin1String("usb")))
);
}