AgeCommit message (Collapse)AuthorFilesLines
2022-11-16rules: Update hwdb from upstream NUTHEADmasterBastien Nocera1-0/+1
2022-11-16idevice: Simplify setting the modelBastien Nocera1-1/+1
2022-11-16idevice: Prefer the user-chosen name when availableKai Uwe Broulik1-0/+10
Use the device name as model name when the user-chosen device name is available. This matches what the Bluez backend does.
2022-11-03ci: Fix paths included in build artifactsBenjamin Berg1-1/+2
Seems like using $(pwd) got broken with newer gitlab versions. Just use the CI_PROJECT_DIR (though we could also just use '.' even).
2022-10-29enumerator-udev: also check for an idevice on "usb" subsystemMaciej S. Szmigiero2-2/+23
Commit 1550d50f ("linux: Remove "usb" subsystem match") broke detection of some idevices, since it left just the "usbmisc" subsystem match while some idevice / kernel combinations (at least an iPhone 11 on a 6.0 kernel) don't present any such udev usbmisc devices. However, they do present "usb" subsystem ones, so add this match back. Leave idevice detection also for the "usbmisc" match since that's what the original (known working) code before aforementioned commit did - it is possible that it is required for some kernel / idevice combinations.
2022-10-21enumerator-udev: actually check for an ideviceMaciej S. Szmigiero1-0/+5
up-enumerator-udev.c forgot to include the build config file, resulting in HAVE_IDEVICE macro always being undefined. This meant that the idevice backend was never actually instantiated - as evidenced by the file not even compiling when this was fixed, due to missing "up-device-idevice.h" include. Fix both of these issues.
2022-09-09supply-battery: Assume battery is present if the attr is missingBenjamin Berg1-1/+3
Fixes: #208
2022-09-05linux: Test whether BT mice get de-duplicatedBastien Nocera1-0/+15
2022-09-05linux: Make BT mouse export its serial numberBastien Nocera1-1/+2
As a real mouse would.
2022-09-05linux: Make BT mice use the same address in testsBastien Nocera1-5/+5
So we can use, one, the other, or both, and still see a single device.
2022-09-05linux: Hide duplicate Logitech Bluetooth devicesBastien Nocera1-0/+57
A lot of newer Logitech devices support both the BATT Bluetooth LE service as well the HID++ protocol. This advertises 2 separate battery interfaces, one HID++ one through the kernel, one BATT one through BlueZ. Avoid confusing UIs and hide the Bluetooth battery from the interface by checking for duplicates each time a new device is added. Closes: #166
2022-09-05daemon: Don't count hidden devicesBastien Nocera1-1/+2
2022-09-05daemon: Don't warn if a device gets unexportedBastien Nocera1-4/+4
Now that we can unregister devices from the bus, make sure that we don't throw warnings doing that.
2022-09-05daemon: Don't add unexported devices to the arrayBastien Nocera1-1/+4
Otherwise all the following devices will be ignored.
2022-09-05device: Make it possible to remove devices from D-BusBastien Nocera2-2/+15
Add up_device_unregister() method to allow backends to hide particular UpDevices from the D-Bus interface. Also rename the private up_device_register_device() function, no need to say "device" twice there, we're registering the only device passed as an argument.
2022-09-05battery: Quiet debug messageBastien Nocera1-1/+1
This might end up spamming users. Best leave those messages to folks who are interested in root-causing those problems.
2022-09-05ci: Run upower inside catchsegvBastien Nocera1-1/+1
2022-09-05ci: Build catchsegv in CIBastien Nocera1-0/+10
Build crash catcher "catchsegv"[1] in CI. [1]:
2022-09-05linux: Fix reading capacity_level with newer libgudevBastien Nocera1-4/+1
Newer development versions of libgudev now strip the linefeeds by themselves, so fix our naive linefeed-stripping which munched on the last character of the string if there was no linefeed. Could not find a percentage for capacity level 'Ful' See
2022-09-05linux: Allow filling only the serial from siblingBastien Nocera1-7/+9
This fixes the serial number not being set on Bluetooth devices which might not have a serial number but should always have a Bluetooth address to differentiate them.
2022-09-02linux: Fix BlueZ device names not synchronisingBastien Nocera1-3/+4
We were correctly handling an "Alias" property changing, but never passed the property to that code as we were dropping anything that wasn't a battery related update.
2022-08-25openbsd: initialize new_state with a default value before using itLandry Breuil1-1/+1
otherwise the native build on openbsd complains: ../src/openbsd/up-backend.c:278:23: warning: variable 'new_state' is uninitialized when used here [-Wuninitialized] new_time_to_empty = (new_state == UP_DEVICE_STATE_DISCHARGING && a.minutes_left > 0 ? a.minutes_left : 0); ^~~~~~~~~ regression from 8be73b98 ?
2022-08-10openbsd: move most initialization code from _init to _coldplug (fixes #201)Landry Breuil1-58/+55
regression from the refactoring in bd488fac
2022-07-21Release 1.90.0 with larger refactoringsv1.90.0Benjamin Berg2-1/+19
The version number has been bumped to be able to maintain multiple branches without conflict. This version bump is not associated with a API/ABI break.
2022-07-21battery: User power/current reading from batteryBenjamin Berg2-7/+38
This switches to always use the power/current reading if we had a sensible reading at some point in the past. In contrast to the older UPower code, will will however ignore the reading for 10 seconds after a discontinuity (power plug/unplug or resume) unless we read an explicit zero value after the event happened. We do this under the assumption that the readings may be wildly off, and it is better to not show an estimate rather than one that is wildly incorrect. Note that this commit also normalises negative power readings while discharging to be positive. Closes: #199
2022-07-21battery: Make repolling more explicitBenjamin Berg1-21/+19
Estimation code can request a battery poll if the value is not good enough at the point. Make this a little bit more explicit by renaming the intenral variable to "repoll_needed" and automatically resetting it to FALSE.
2022-07-21battery: Better separate power usage estimation codeBenjamin Berg1-38/+40
The up_device_battery_estimate function did more than just estimating the current power consumption (and doing some state guessing). Move the time to full/empty checking out of the function. Also, let it directly modify the reported state before it is pushed into the ring-buffer.
2022-07-21Add Georgian translatonNorwayFun1-0/+100
2022-07-12daemon: Reevaluate polling timeout after resumeBenjamin Berg1-0/+2
When polling is resumed the timeout needs to be reevaluated. This requires running the polling handler once (in the next mainloop iteration). Set the ready time to zero to ensure this is happening. Without this, we would be stuck without actually polling until we get a uevent from the kernel on one of the power supplies. Fixes: #198
2022-07-11doc: Remove websiteBenjamin Berg3-152/+0
It now has its own repository.
2022-07-08ci: Expose documentation as artifactBenjamin Berg1-0/+21
2022-06-22test: Add battery ID changing test for history loading/savingBenjamin Berg1-0/+42
2022-06-22device: Reload history when the ID changesBenjamin Berg2-17/+31
When a battery is swapped the old history needs to be saved and the other history should be loaded. Change the code to load the history lazily when needed. Then, to reload, we purely need to clear the history object and it'll be loaded again when required.
2022-06-21test: Fix flaky battery aggregation testBenjamin Berg1-5/+10
It seems that the test was still flaky, the reason for that would be that we did not explicitly wait for the log line saying that the aggregate state was calculated. The only reason that it did not consistently fail appears to be that searching for the state conflict caused messages to be skipped. That is wrong, we should account for every "Calculating percentage" message to ensure that upowerd and the test is in sync.
2022-06-21supply-battery: Fixup commentBenjamin Berg1-3/+1
2022-06-21supply-battery: Stop reading voltage_presentBenjamin Berg1-7/+0
It appears this is an old property name. The string does not appear anywhere in the Linux kernel as of 5.18.0.
2022-06-21battery: Add full/empty guessing based on capacityBenjamin Berg2-4/+48
Assuming we have some estimation for the current battery capacity (i.e. percentage), we can infer a FULL/EMPTY state. Do so if the battery state is unknown. Related: #196
2022-06-21test: Add test for charging/discharging guessing based on rateBenjamin Berg1-0/+40
See: #196
2022-06-21battery: Guess charging/discharging state based on energy rateBenjamin Berg1-9/+29
This should be quite robust, in particular as we should be getting notifications about AC plug/unplug. The value for the battery will lag a few seconds. However, the DisplayDevice will do some guessing taking the AC state into account, and as such the user should get at least some immediate feedback. Closes: #196
2022-06-21linux: Use new battery class and drop unused codeBenjamin Berg3-621/+22
This makes the switch. There are a few behaviour changes with regard to estimations (which hopefully got both simpler and more robust at the same time).
2022-06-21linux: Add new UpDeviceSupplyBattery classBenjamin Berg5-1/+381
This split the functionality found in UpDeviceSupply to handle batteries out and is based on the previously added UpDeviceBattery class.
2022-06-21Add generic UpDeviceBattery base classBenjamin Berg4-0/+577
This class can handle laptop battery related quirks and estimations.
2022-06-15daemon: Iterate mainloop during coldplugBenjamin Berg1-0/+4
This ensures that all idle handlers have run and we report a consistent state on the bus.
2022-06-15test: Disable battery polling to make test more stableBenjamin Berg1-1/+10
Otherwise the fast repolling can get in-between, cause extra logging and trigger a failure.
2022-06-15Add some debugging information to the READMEBenjamin Berg1-0/+33
We keep giving people these commands for bug triaging. So, lets hope that adding them to the README removes some of the overhead and can be helpful to users.
2022-06-14test: Test state guessing for one and two batteriesBenjamin Berg1-32/+41
The state guessing code based on the AC state was not tested well. Improve the test by testing both 1 and 2 batteries and checking the reported state in more detail.
2022-06-14daemon: Guess state for multiple batteries without ACBenjamin Berg1-19/+9
There is no reason to not guess the state if the device has no AC power and there is more than one battery. Remove the corresponding constraint. Related: #146
2022-06-14daemon: Move state guessing after percentage calculationBenjamin Berg1-14/+20
Otherwise we may not have the percentage to work with, rendering the guessing useless. This also moves the time estimation down (after the state guessing) and does it unconditionally. This is, however, not an issue, as the calculation matches with other places. Related: #146
2022-06-14supply: Use percentage to guess empty STATEBenjamin Berg1-1/+1
Using energy is broken as the value might be zero if it is not provided. However, either energy or percentage ("capacity") should have been read from the sysfs. And, in both cases the percentage should reflect something reasonable. Related: #146
2022-06-09test: Properly wait for idle handler after ueventsBenjamin Berg1-6/+15
The state aggregation test requires an idle handler to run, which can be a bit unreliable as it may or may not run twice. Force running it twice and add code to wait for it to complete. Do so properly by waiting for the correct log messages rather than sleeping so that everything is ordered nicely while not slowing down the test a lot. Closes: #193