Commit graph

1373 commits

Author SHA1 Message Date
Bastien Nocera
4e962fdc8d lib: Mark lid related functions and properties as deprecated
As we want to eventually remove them.

See https://gitlab.freedesktop.org/upower/upower/-/merge_requests/5
2021-08-19 18:57:30 +02:00
Bastien Nocera
0f6cc0a10b 0.99.13 2021-08-17 15:55:59 +02:00
Bastien Nocera
b5a6e2491a tests: Run test suite in verbose mode by default
So we can see progress better.
2021-08-17 15:50:58 +02:00
Bastien Nocera
c5e73680dd tests: Export test log on failure 2021-08-17 14:47:25 +02:00
Dylan Van Assche
3acbedca26 tests: Test inhibitor lock for critical action
Inhibitor lock should be taken between the critical
action notification and the execution of the critical action.

Requires python-dbusmock > 0.23.1, test is skipped on lower versions.

python-dbusmock in the CI is installed from git and bumped version
to 0.23.2 until a new release is available.
2021-08-17 14:31:25 +02:00
Dylan Van Assche
0dc2a521be up-daemon: prevent suspending for critical action
Take inhibitor lock when notifying the user
about a critical battery level and release lock
when executing critical battery action.
2021-08-17 14:12:19 +02:00
Dylan Van Assche
40e5d237cf up-backend: add inhibitor lock interface
Phones are suspended most of the time so they are not awake for > 20s
to allow UPower to take action when battery is critical.
Add an interface to take and release inhibitor locks which
prevent the device from suspending to allow UPower to execute
the critical power action.
2021-08-17 14:12:19 +02:00
Bastien Nocera
e66c7da2d2 build: Require new gudev to fix battery detection
gudev 234 had bugs converting cached sysfs properties to boolean which
caused upower to think that batteries were not there, as the "present"
sysfs attribute was misread.

Require at least gudev 235 to avoid battery detection being broken.

Closes: #149
2021-08-10 12:59:16 +02:00
Bastien Nocera
26c90728c3 linux: Add test for touchpads being tagged as mice
udev adds both tags to touchpads, so replicate that behaviour.
2021-08-10 10:47:37 +00:00
Bastien Nocera
781e856974 linux: Fix touchpad not being the right type
Touchpads are also tagged as mice, so make sure that we check for
the touchpad property before checking for mouse one.
2021-08-10 10:47:37 +00:00
Bastien Nocera
3b91711e82 linux: Don't throw away large but possible energy rates
USB PD 3.1 allows up to 240W (48V, 5A) and some proprietary supplies
already delivered more than 100W over USB-C (USB PD 3.0 limit).

Closes: #147

Reported by StefanBruens
2021-08-10 12:32:24 +02:00
Bastien Nocera
a14de39241 etc: Tweak default percentage levels
If we want the computer to be able to take useful action about the low
battery, we should have a slightly higher "low" percentage level so that
power saving made really makes a difference in runtime.

Also bump "critical" slightly so that doom isn't quite as near but in the
distance nonetheless.

The "action" level stays the same, as 1% is too close to some batteries'
actual switch off point, eg. the computer might brown out before we see
1%.
2021-07-22 12:36:55 +02:00
Pablo Correa Gómez
988e79ae24 device: Don't update properties when device isn't exported
The code in up_device_notify() will still eventually be reached when the
up_device_coldplug() implementations are called, and properties are set
for the device type for the first time (rather than during instance
construction).
2021-06-30 10:56:31 +02:00
Pablo Correa Gómez
d8482bc767 tests: Add test for non-default low level 2021-06-30 10:56:25 +02:00
Pablo Correa Gómez
665a3b2757 daemon: Sync icon and warning for non-default low level
Before, the low level for changing the battery icon was hardcoded.
However, as the `low_percentage` property is settable by the user using
`PercentageLow` option. That can lead to inconsistencies when PercentageLow
is not the default. For example, if PercentageLow is set higher than 10,
the Low Battery level warning will be sent at the user-set level, but the
battery icon would not be updated to "caution" until the percentage
drops below 10%.

This issue is solved in this commit by using the `low_percentage` property
for the comparison instead of hardcoding the default.
2021-06-30 10:56:25 +02:00
Pablo Correa Gómez
9b2ab574e1
daemon: Make get_device_charge_icon() public 2021-06-18 13:08:59 +02:00
Philipp Zabel
b64902eed2 tests: Add a test case for batteries with zero power draw
Make sure that the issue reported in #7 and #44 is fixed.
The mocked battery has a zero power_now attribute and a non-zero legacy
current_now attribute on purpose, to detect if upowerd tries to read
current_now if the power_now value is small.
2021-06-17 18:15:01 +02:00
Philipp Zabel
2949136b15 linux: Fix < 0.01 W energy-rate readings from power_now sysfs property
Currently, if a power supplies' power_now sysfs file reports discharge
rates < 0.01 W, the code will try to calculate the discharge rate from
the legacy sysfs files. On new kernels where those don't exist, this
produces wrong results.

For example, on a dual-battery Thinkpad T450s, while the external
battery is discharging, the internal battery reports power_now = 0,
but the corresponding upower energy-rate field incorrectly reads
about 2.3 W.

This patch fixes the issue by falling back to the legacy code only if
the legacy current_now sysfs file exists.

Closes: #7, #44
2021-06-17 18:14:53 +02:00
Bastien Nocera
0f2837acde 0.99.12 2021-06-17 15:45:02 +02:00
Bastien Nocera
95763ef43e build: Force enable introspection for "make distcheck" to work
Introspection support is needed to be able to instatiate a UPClient
object in the test suite.
2021-06-17 15:45:02 +02:00
Bastien Nocera
0e9c6192ab ci: Export the tarball in the artifacts
Saves us from generating it locally.
2021-06-17 15:45:02 +02:00
Bastien Nocera
daf15b0f91 data: Also remove HID++ udev rules
Now that HID++ user-space support has been removed.
2021-06-17 14:37:25 +02:00
Bastien Nocera
fb431ad9ee ci: Ignore changes to "kind" enums 2021-06-17 13:47:33 +02:00
Bastien Nocera
96ea5b3521 linux: Make unknown Bluetooth devices appear as generic
Make Bluetooth devices for which we can't guess the "kind" or form
factor be "generic Bluetooth" devices, rather than "unknown" devices.

That should make it clearer in UIs that the devices are Bluetooth rather
than connected to the computer somehow.

Closes: #137
2021-06-17 13:47:33 +02:00
Bastien Nocera
2bddb64f68 lib: Add UP_DEVICE_KIND_BLUETOOTH_GENERIC type
This will be useful to show information about Bluetooth devices which
don't fit in with the existing types, and for which we don't want to
show an unknown kind.
2021-06-17 13:47:33 +02:00
Bastien Nocera
d2053eff93 linux: Remove user-space support for Logitech Unifying devices
All those devices have been supported in the Linux kernel for a number
of years already, so the user-space support has just not been exercised.
2021-06-17 12:49:59 +02:00
Bastien Nocera
b09846dbed linux: Remove sysfs-utils helpers
They've been replaced by gudev functions.
2021-06-17 12:02:42 +02:00
Bastien Nocera
0e3c511d2a linux: Use new uncached sysfs attr gudev API 2021-06-17 12:01:38 +02:00
Bastien Nocera
fe9332cbe4 linux: Use existing gudev functions in Watts-Up driver 2021-06-17 12:00:18 +02:00
Bastien Nocera
2ab63bd81b linux: Fix typo in test comment 2021-06-17 12:00:08 +02:00
Bastien Nocera
dfce006c21 linux: Simplify is_macbook() function 2021-06-17 12:00:06 +02:00
Bastien Nocera
15fb868cf1 linux: Ignore "capacity" sysfs on Macs
capacity is supposed to be the running battery percentage, not a
representation of its current state of the factory capacity (which
isn't something that's ever shown in Linux or macOS).

Use the new "ignore-system-percentage" property to work-around that
problem.

Closes: #141, #103
2021-06-17 11:13:58 +02:00
Bastien Nocera
4496ebeb0a linux: Move functions
No functional changes.
2021-06-17 10:52:04 +02:00
Bastien Nocera
fa23d1be0c linux: Add property to ignore the "capacity" sysfs value
On some hardware, the "capacity" sysfs contains the capacity of the
battery when full compared to when it was new, instead of the percentage
of battery available.

Make it possible to ignore the "capacity" with this new property.
2021-06-17 10:40:19 +02:00
Bastien Nocera
06034e1411 ci: Add ABI check 2021-04-22 14:59:10 +02:00
Bastien Nocera
81d3d3d52a ci: Indent the dependencies
Makes it easier to make changes easily readable.
2021-04-22 13:07:01 +02:00
Benjamin Berg
706dcd44e4 up-tool: Catch NULL return for more upower API calls
This can lead to crashes if the communication with the daemon fails.

See https://bugzilla.redhat.com/show_bug.cgi?id=1922777
2021-02-04 09:45:50 +00:00
Benjamin Berg
4b96535023 up-client: Document and handle NULL return when getting devices 2021-02-04 09:45:50 +00:00
Marijn Suijten
8e5b1d6b46 tests: Add test cases for Bluetooth device classes 2021-02-02 18:23:19 +01:00
Marijn Suijten
15329e840c tests: Move BlueZ battery setup into helper function 2021-02-02 18:22:42 +01:00
Marijn Suijten
62d7c08289 tests: Convert unpacked tuple constants to range() 2021-02-02 18:22:42 +01:00
Marijn Suijten
98cf71fbcc linux: Parse kind from Class if Appearance is not available
Not all headsets have a GAP profile revealing their appearance, but they
do have a class.
2021-02-02 18:22:41 +01:00
Marijn Suijten
e294444496 lib: Add more device kinds for Bluetooth classes
This adds a variety of missing device kinds specific to the Bluetooth
classes supported in gnome-bluetooth [1].

In up_device_to_text these types have only been added to the
`percentage` class, which is currently the only property exposed by
org.bluez.Battery1, where these devices are coming from.

[1]: cf4a0ba59d/lib/bluetooth-utils.c (L165)
2021-02-02 18:22:25 +01:00
Marijn Suijten
d86c637f31 lib: Invert percentage conditional in device_to_text
Almost every device kind except line power and invalid (>= last) carry a
valid percentage property. By inverting this conditional not every new
device needs to be added explicitly to this already long and lacking
chain (PDA and MONITOR were already missing).
2021-02-02 18:15:47 +01:00
Bastien Nocera
64582256a8 build: Remove libusb dependency in Linux
As the last user, the CSR support code, was removed.
2021-01-19 13:31:25 +01:00
Bastien Nocera
4227d0c439 linux: Remove support for CSR devices
Those devices date back from the mid-2000s. If they still work, and
somebody is still interested in having them export their battery status,
we would recommend moving this information to the appropriate kernel
drivers.
2021-01-19 13:29:23 +01:00
Bastien Nocera
dde6f714ea linux: Set update-time for BlueZ devices
When the battery percentage for a BlueZ device changes, change the
update-time so that the charge history is somewhat useful.
2021-01-18 22:11:32 +01:00
Bastien Nocera
67eefa17dd lib: Add "Touchpad" device type 2020-12-16 13:09:04 +01:00
Bastien Nocera
c6d2618e95 linux: Fix gudev includes for UpInput 2020-11-05 16:40:36 +01:00
Bastien Nocera
d697b39408 linux: Add support for running under umockdev
The sysfs path needs to be adjusted when running under umockdev.
2020-11-05 16:22:28 +01:00