ui: display percentage estimates from battery voltage

This commit is contained in:
Peter F. Patel-Schneider 2021-12-17 20:04:49 -05:00
parent fa83e6ebb8
commit 174d0388ca
2 changed files with 26 additions and 2 deletions

View File

@ -1170,6 +1170,25 @@ def get_voltage(device):
return decipher_voltage(battery_voltage)
# voltage to remaining charge from Logitech
battery_voltage_remaining = (
(4186, 100),
(4067, 90),
(3989, 80),
(3922, 70),
(3859, 60),
(3811, 50),
(3778, 40),
(3751, 30),
(3717, 20),
(3671, 10),
(3646, 5),
(3579, 2),
(3500, 0),
(-1000, 0),
)
# modified to be much closer to battery reports
def decipher_voltage(voltage_report):
voltage, flags = _unpack('>HB', voltage_report[:3])
@ -1194,6 +1213,11 @@ def decipher_voltage(voltage_report):
elif (flags & (1 << 5)):
charge_lvl = CHARGE_LEVEL.critical
for level in battery_voltage_remaining:
if level[0] < voltage:
charge_lvl = level[1]
break
if _log.isEnabledFor(_DEBUG):
_log.debug(
'device ???, battery voltage %d mV, charging = %s, charge status %d = %s, charge level %s, charge type %s',

View File

@ -695,7 +695,7 @@ def _update_device_panel(device, panel, buttons, full=False):
if battery_voltage is not None:
panel._battery._label.set_text(_('Battery Voltage'))
text = '%(battery_voltage)dmV' % {'battery_voltage': battery_voltage}
text = '%(voltage)dmV, %(level)d%%' % {'voltage': battery_voltage, 'level': battery_level}
tooltip_text = _('Voltage reported by battery')
elif isinstance(battery_level, _NamedInt):
panel._battery._label.set_text(_('Battery Level'))
@ -909,7 +909,7 @@ def update_device(device, item, selected_device_id, need_popup, full=False):
_model.set_value(item, _COLUMN.STATUS_TEXT, _CAN_SET_ROW_NONE)
_model.set_value(item, _COLUMN.STATUS_ICON, _CAN_SET_ROW_NONE)
else:
if battery_voltage is not None:
if battery_voltage is not None and False: # Use levels instead of voltage here
status_text = '%(battery_voltage)dmV' % {'battery_voltage': battery_voltage}
elif isinstance(battery_level, _NamedInt):
status_text = _(str(battery_level))