ui: display percentage estimates from battery voltage
This commit is contained in:
parent
fa83e6ebb8
commit
174d0388ca
|
@ -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',
|
||||
|
|
|
@ -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))
|
||||
|
|
Loading…
Reference in New Issue