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)
|
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
|
# modified to be much closer to battery reports
|
||||||
def decipher_voltage(voltage_report):
|
def decipher_voltage(voltage_report):
|
||||||
voltage, flags = _unpack('>HB', voltage_report[:3])
|
voltage, flags = _unpack('>HB', voltage_report[:3])
|
||||||
|
@ -1194,6 +1213,11 @@ def decipher_voltage(voltage_report):
|
||||||
elif (flags & (1 << 5)):
|
elif (flags & (1 << 5)):
|
||||||
charge_lvl = CHARGE_LEVEL.critical
|
charge_lvl = CHARGE_LEVEL.critical
|
||||||
|
|
||||||
|
for level in battery_voltage_remaining:
|
||||||
|
if level[0] < voltage:
|
||||||
|
charge_lvl = level[1]
|
||||||
|
break
|
||||||
|
|
||||||
if _log.isEnabledFor(_DEBUG):
|
if _log.isEnabledFor(_DEBUG):
|
||||||
_log.debug(
|
_log.debug(
|
||||||
'device ???, battery voltage %d mV, charging = %s, charge status %d = %s, charge level %s, charge type %s',
|
'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:
|
if battery_voltage is not None:
|
||||||
panel._battery._label.set_text(_('Battery Voltage'))
|
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')
|
tooltip_text = _('Voltage reported by battery')
|
||||||
elif isinstance(battery_level, _NamedInt):
|
elif isinstance(battery_level, _NamedInt):
|
||||||
panel._battery._label.set_text(_('Battery Level'))
|
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_TEXT, _CAN_SET_ROW_NONE)
|
||||||
_model.set_value(item, _COLUMN.STATUS_ICON, _CAN_SET_ROW_NONE)
|
_model.set_value(item, _COLUMN.STATUS_ICON, _CAN_SET_ROW_NONE)
|
||||||
else:
|
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}
|
status_text = '%(battery_voltage)dmV' % {'battery_voltage': battery_voltage}
|
||||||
elif isinstance(battery_level, _NamedInt):
|
elif isinstance(battery_level, _NamedInt):
|
||||||
status_text = _(str(battery_level))
|
status_text = _(str(battery_level))
|
||||||
|
|
Loading…
Reference in New Issue