• Filipe Laíns's avatar
    HID: logitech-hidpp: add support for Unified Battery (1004) feature · e037acf0
    Filipe Laíns authored
    This new feature present in new devices replaces the old Battery Level Status
    (0x1000) feature. It keeps essentially the same information for levels
    (reporting critical, low, good and full) but makes these levels optional, the
    device exports a capability setting which describes which levels it supports.
    In addition to this, there is an optional state_of_charge paramenter that
    exports the battery percentage.
    
    This patch adds support for this new feature. There were some implementation
    choices, as described below and in the code.
    
    If the device supports the state_of_charge parameter, we will just export the
    battery percentage and not the levels, which the device might still support.
    
    Since this feature can co-exist with the Battery Voltage (0x1001) feature and
    we currently only support one battery feature, I changed the battery feature
    discovery to try to use 0x1000 and 0x1004 first and only then 0x1001, the
    battery voltage feature.
    
    In the future we could uncouple this and make the battery feature co-exists
    with 0x1000 and 0x1004, allowing the device to export voltage information in
    addition to the battery percentage or level.
    
    I tested this patch with a MX Anywhere 3, which supports the new feature. Since
    I don't have any device that doesn't support the state_of_charge parameter of
    this feature, I forced the MX Anywhere 3 to use the level information, instead
    of battery percentage, to test that part of the implementation.
    
    I also tested with a MX Master 3, which supports the Battery Level Status
    (0x1000) feature, and a G703 Hero, which supports the Battery Voltage (0x1001)
    feature, to make sure nothing broke there.
    
    [jkosina@suse.cz: fix comment]
    Signed-off-by: default avatarFilipe Laíns <lains@archlinux.org>
    Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
    e037acf0
hid-logitech-hidpp.c 121 KB