From c7da7cf725feedfc2c953a8740a71d5a1f675783 Mon Sep 17 00:00:00 2001 From: Krzysiek Egzmont Date: Mon, 9 Oct 2023 16:30:20 +0200 Subject: [PATCH] Battery symbol fix --- ui/battery.c | 72 +++++++++++++++------------------------------------- ui/battery.h | 4 +-- ui/status.c | 45 ++------------------------------ 3 files changed, 25 insertions(+), 96 deletions(-) diff --git a/ui/battery.c b/ui/battery.c index 3f89b93..9a2957c 100644 --- a/ui/battery.c +++ b/ui/battery.c @@ -22,66 +22,36 @@ #include "functions.h" #include "ui/battery.h" -void UI_DisplayBattery(const uint8_t level, const uint8_t blink) +void UI_DrawBattery(uint8_t* bitmap, uint8_t level, uint8_t blink) { -// if (gCurrentFunction != FUNCTION_TRANSMIT) + memmove(bitmap, BITMAP_BatteryLevel1, sizeof(BITMAP_BatteryLevel1)); + + if (level >= 1) { - uint8_t bitmap[sizeof(BITMAP_BatteryLevel1)]; - -#if 1 - - if (level >= 2) + unsigned int i; + uint8_t bars = level > 0 ? level - 1 : 0; + if(bars>4) bars = 4; + for (i = 0; i < bars; i++) { - memmove(bitmap, BITMAP_BatteryLevel1, sizeof(BITMAP_BatteryLevel1)); #ifndef ENABLE_REVERSE_BAT_SYMBOL - uint8_t *pb = bitmap + sizeof(BITMAP_BatteryLevel1); - if (level >= 2) - memmove(pb - 4, BITMAP_BatteryLevel, sizeof(BITMAP_BatteryLevel)); - if (level >= 5) - memmove(pb - 7, BITMAP_BatteryLevel, sizeof(BITMAP_BatteryLevel)); - if (level >= 7) - memmove(pb - 10, BITMAP_BatteryLevel, sizeof(BITMAP_BatteryLevel)); - if (level >= 9) - memmove(pb - 13, BITMAP_BatteryLevel, sizeof(BITMAP_BatteryLevel)); + memcpy(bitmap + sizeof(bitmap) - 4 - (i * 3), BITMAP_BatteryLevel, 2); #else - if (level >= 2) - memmove(bitmap + 3, BITMAP_BatteryLevel, sizeof(BITMAP_BatteryLevel)); - if (level >= 5) - memmove(bitmap + 6, BITMAP_BatteryLevel, sizeof(BITMAP_BatteryLevel)); - if (level >= 7) - memmove(bitmap + 9, BITMAP_BatteryLevel, sizeof(BITMAP_BatteryLevel)); - if (level >= 9) - memmove(bitmap + 12, BITMAP_BatteryLevel, sizeof(BITMAP_BatteryLevel)); + memcpy(bitmap + 3 + (i * 3) + 0, BITMAP_BatteryLevel, 2); #endif } - else - if (blink == 1) - memmove(bitmap, BITMAP_BatteryLevel1, sizeof(BITMAP_BatteryLevel1)); - else - memset(bitmap, 0, sizeof(bitmap)); + } + else + if (blink == 0) + memset(bitmap, 0, sizeof(bitmap)); +} -#else +void UI_DisplayBattery(uint8_t level, uint8_t blink) +{ + if (gCurrentFunction != FUNCTION_TRANSMIT) { + uint8_t bitmap[sizeof(BITMAP_BatteryLevel1)]; - if (level > 0) - { - const uint8_t lev = (level <= 11) ? level : 11; - - memmove(bitmap, BITMAP_BatteryLevel1, sizeof(BITMAP_BatteryLevel1)); - - #ifdef ENABLE_REVERSE_BAT_SYMBOL - for (uint8_t i = 0; i < lev; i++) - bitmap[3 + i] = (i & 1u) ? 0b01011101 : 0b01011101; - #else - for (uint8_t i = 0; i < lev; i++) - bitmap[sizeof(bitmap) - 3 - i] = (i & 1u) ? 0b01011101 : 0b01011101; - #endif - } - else - memset(bitmap, 0, sizeof(bitmap)); - -#endif - - // col lne, siz, bm + UI_DrawBattery(bitmap, level, blink); + memmove(bitmap, BITMAP_BatteryLevel1, sizeof(BITMAP_BatteryLevel1)); ST7565_DrawLine(LCD_WIDTH - sizeof(bitmap), 0, sizeof(bitmap), bitmap); } } diff --git a/ui/battery.h b/ui/battery.h index 92e1f47..36c26d1 100644 --- a/ui/battery.h +++ b/ui/battery.h @@ -18,8 +18,8 @@ #define UI_BATTERY_H #include - -void UI_DisplayBattery(const uint8_t Level, const uint8_t blink); +void UI_DrawBattery(uint8_t* bitmap, uint8_t level, uint8_t blink); +void UI_DisplayBattery(uint8_t Level, uint8_t blink); #endif diff --git a/ui/status.c b/ui/status.c index 690354c..6004acf 100644 --- a/ui/status.c +++ b/ui/status.c @@ -28,6 +28,7 @@ #include "helper/battery.h" #include "misc.h" #include "settings.h" +#include "ui/battery.h" #include "ui/helper.h" #include "ui/ui.h" #include "ui/status.h" @@ -217,50 +218,8 @@ void UI_DisplayStatus(const bool test_display) x += sizeof(BITMAP_USB_C); // BATTERY LEVEL indicator - if (gBatteryDisplayLevel >= 2 && !gLowBattery) - { - line += x; - memmove(line, BITMAP_BatteryLevel1, sizeof(BITMAP_BatteryLevel1)); - - #ifndef ENABLE_REVERSE_BAT_SYMBOL - line += sizeof(BITMAP_BatteryLevel1); - { - const int8_t pos[] = {-4, -7, -10, 13}; - for (unsigned int i = 0; i < ARRAY_SIZE(pos); i++) - if (gBatteryDisplayLevel >= (2 + i)) - memmove(line + pos[i], BITMAP_BatteryLevel, sizeof(BITMAP_BatteryLevel)); + UI_DrawBattery(line + x, gBatteryDisplayLevel, gLowBattery); -/* switch (gBatteryDisplayLevel) - { - default: - case 5: memmove(line - 13, BITMAP_BatteryLevel, sizeof(BITMAP_BatteryLevel)); - case 4: memmove(line - 10, BITMAP_BatteryLevel, sizeof(BITMAP_BatteryLevel)); - case 3: memmove(line - 7, BITMAP_BatteryLevel, sizeof(BITMAP_BatteryLevel)); - case 2: memmove(line - 4, BITMAP_BatteryLevel, sizeof(BITMAP_BatteryLevel)); - } -*/ } - #else - { - const int8_t pos[] = {3, 6, 9, 12}; - for (unsigned int i = 0; i < ARRAY_SIZE(pos); i++) - if (gBatteryDisplayLevel >= (2 + i)) - memmove(line + pos[i], BITMAP_BatteryLevel, sizeof(BITMAP_BatteryLevel)); -/* - switch (gBatteryDisplayLevel) - { - default: - case 5: memmove(line + 12, BITMAP_BatteryLevel, sizeof(BITMAP_BatteryLevel)); - case 4: memmove(line + 9, BITMAP_BatteryLevel, sizeof(BITMAP_BatteryLevel)); - case 3: memmove(line + 6, BITMAP_BatteryLevel, sizeof(BITMAP_BatteryLevel)); - case 2: memmove(line + 3, BITMAP_BatteryLevel, sizeof(BITMAP_BatteryLevel)); - } -*/ } - #endif - } - else - if (gLowBatteryBlink == 1) - memmove(line + x, BITMAP_BatteryLevel1, sizeof(BITMAP_BatteryLevel1)); - // ************** ST7565_BlitStatusLine();