Browse Source

Add charging indicator to companion_radio battery icon

Show a small lightning-bolt icon to the left of the battery indicator on
the ui-new home screen while the device is externally powered, and a plug
icon once the battery reads full. The bolt/plug sits beside the battery so
the fill bar stays clean and uninterrupted. When a buzzer is present, the
mute icon shifts one slot further left so the two never overlap.

Charging state is derived from board.isExternalPowered(), so this works on
any board that reports external power (e.g. the nRF52 VBUS-detect path).

Co-Authored-By: Claude Opus 4.8 <[email protected]>
pull/3054/head
romeomont 8 hours ago
parent
commit
08a841d84e
  1. 14
      examples/companion_radio/ui-new/UITask.cpp
  2. 10
      examples/companion_radio/ui-new/icons.h

14
examples/companion_radio/ui-new/UITask.cpp

@ -141,11 +141,21 @@ class HomeScreen : public UIScreen {
int fillWidth = (batteryPercentage * (iconWidth - 4)) / 100;
display.fillRect(iconX + 2, iconY + 2, fillWidth, iconHeight - 4);
// show muted icon if buzzer is muted
// while charging, show a bolt (or a plug once full) just left of the battery,
// keeping the fill bar itself clean and uninterrupted
bool charging = board.isExternalPowered();
if (charging) {
const uint8_t* symbol = (batteryPercentage < 100) ? charging_icon : plug_icon;
display.setColor(UIColor::title_txt);
display.drawXbm(iconX - 9, iconY + 1, symbol, 8, 8);
}
// show muted icon if buzzer is muted (shifted further left when the charging
// icon already occupies the slot immediately left of the battery)
#ifdef PIN_BUZZER
if (_task->isBuzzerQuiet()) {
display.setColor(UIColor::warning_txt);
display.drawXbm(iconX - 9, iconY + 1, muted_icon, 8, 8);
display.drawXbm(iconX - (charging ? 18 : 9), iconY + 1, muted_icon, 8, 8);
}
#endif
}

10
examples/companion_radio/ui-new/icons.h

@ -119,4 +119,14 @@ static const uint8_t advert_icon[] = {
static const uint8_t muted_icon[] = {
0x20, 0x6a, 0xea, 0xe4, 0xe4, 0xea, 0x6a, 0x20
};
// small lightning bolt, 8x8px, shown next to the battery icon while charging
static const uint8_t charging_icon[] = {
0x18, 0x30, 0x60, 0xFC, 0x18, 0x30, 0x60, 0xC0
};
// small power plug, 8x8px, shown next to the battery icon once fully charged
static const uint8_t plug_icon[] = {
0x24, 0x24, 0x7E, 0x7E, 0x7E, 0x3C, 0x18, 0x18
};
Loading…
Cancel
Save