From fe6922494a949dd2df97af8ace5b242947054846 Mon Sep 17 00:00:00 2001 From: Raphael Coeffic Date: Wed, 15 Jun 2022 11:51:18 +0200 Subject: [PATCH] LCD & backlight init only from lcdInitDisplayDriver() --- radio/src/gui/colorlcd/lcd.cpp | 4 +- radio/src/targets/horus/board.cpp | 3 - radio/src/targets/nv14/battery_driver.cpp | 80 +++++++++++---------- radio/src/targets/nv14/board.cpp | 2 - radio/src/targets/simu/backlight_driver.cpp | 1 + 5 files changed, 45 insertions(+), 45 deletions(-) diff --git a/radio/src/gui/colorlcd/lcd.cpp b/radio/src/gui/colorlcd/lcd.cpp index fdc027807..eb7377ddb 100644 --- a/radio/src/gui/colorlcd/lcd.cpp +++ b/radio/src/gui/colorlcd/lcd.cpp @@ -144,11 +144,13 @@ void lcdInitDisplayDriver() { lv_init(); - // Clear buffers first (is that really needed?) + // Clear buffers first memset(LCD_FIRST_FRAME_BUFFER, 0, sizeof(LCD_FIRST_FRAME_BUFFER)); memset(LCD_SECOND_FRAME_BUFFER, 0, sizeof(LCD_SECOND_FRAME_BUFFER)); + // Init hardware LCD driver lcdInit(); + backlightInit(); lv_disp_draw_buf_init(&disp_buf, lcdFront->getData(), lcd->getData(), LCD_W*LCD_H); lv_disp_drv_init(&disp_drv); /*Basic initialization*/ diff --git a/radio/src/targets/horus/board.cpp b/radio/src/targets/horus/board.cpp index 0fa07f999..07ef4f199 100644 --- a/radio/src/targets/horus/board.cpp +++ b/radio/src/targets/horus/board.cpp @@ -209,9 +209,6 @@ void boardInit() } #endif - lcdInit(); - backlightInit(); - globalData.flyskygimbals = false; #if defined(RADIO_FAMILY_T16) || defined(PCBNV14) flysky_hall_stick_check_init(); diff --git a/radio/src/targets/nv14/battery_driver.cpp b/radio/src/targets/nv14/battery_driver.cpp index e75e59456..edf67a0e2 100644 --- a/radio/src/targets/nv14/battery_driver.cpp +++ b/radio/src/targets/nv14/battery_driver.cpp @@ -92,48 +92,53 @@ uint16_t get_battery_charge_state() return chargeState; } -void drawChargingInfo(uint16_t chargeState){ - static int progress = 0; - const char* text = chargeState == CHARGE_STARTED ? STR_BATTERYCHARGING : STR_BATTERYFULL; - int h = 0; - LcdFlags color = 0; - if(CHARGE_STARTED == chargeState) - { - if(progress >= 100) - { - progress = 0; - } - else - { - progress+=25; - } - text = STR_BATTERYCHARGING; - h = ((BATTERY_H_INNER * progress) / 100); - color = COLOR_THEME_EDIT; - } - else if(CHARGE_FINISHED == chargeState) - { - text = STR_BATTERYFULL; - h = BATTERY_H_INNER; - color = COLOR_THEME_EDIT; - } - else - { - text = STR_BATTERYNONE; - h = BATTERY_H_INNER; - color = COLOR_THEME_PRIMARY1; +void drawChargingInfo(uint16_t chargeState) +{ + static int progress = 0; + const char* text = + chargeState == CHARGE_STARTED ? STR_BATTERYCHARGING : STR_BATTERYFULL; + int h = 0; + LcdFlags color = 0; + if (CHARGE_STARTED == chargeState) { + if (progress >= 100) { + progress = 0; + } else { + progress += 25; } + text = STR_BATTERYCHARGING; + h = ((BATTERY_H_INNER * progress) / 100); + color = COLOR_THEME_EDIT; + } else if (CHARGE_FINISHED == chargeState) { + text = STR_BATTERYFULL; + h = BATTERY_H_INNER; + color = COLOR_THEME_EDIT; + } else { + text = STR_BATTERYNONE; + h = BATTERY_H_INNER; + color = COLOR_THEME_PRIMARY1; + } - BACKLIGHT_ENABLE(); - lcd->drawSizedText(LCD_W/2, LCD_H-50, text, strlen(text), CENTERED|COLOR_THEME_PRIMARY2); + BACKLIGHT_ENABLE(); + lcd->clear(); + lcd->drawSizedText(LCD_W / 2, LCD_H - 50, text, strlen(text), + CENTERED | COLOR_THEME_PRIMARY2); - lcd->drawFilledRect((LCD_W - BATTERY_W)/2, BATTERY_TOP, BATTERY_W, BATTERY_H, SOLID, COLOR_THEME_PRIMARY2); - lcd->drawFilledRect((LCD_W - BATTERY_W_INNER)/2, BATTERY_TOP_INNER, BATTERY_W_INNER, BATTERY_H_INNER, SOLID, COLOR_THEME_PRIMARY1); + lcd->drawFilledRect((LCD_W - BATTERY_W) / 2, BATTERY_TOP, BATTERY_W, + BATTERY_H, SOLID, COLOR_THEME_PRIMARY2); + lcd->drawFilledRect((LCD_W - BATTERY_W_INNER) / 2, BATTERY_TOP_INNER, + BATTERY_W_INNER, BATTERY_H_INNER, SOLID, + COLOR_THEME_PRIMARY1); - lcd->drawFilledRect((LCD_W - BATTERY_W_INNER)/2, BATTERY_TOP_INNER + BATTERY_H_INNER - h , BATTERY_W_INNER, h, SOLID, color); - lcd->drawFilledRect((LCD_W - BATTERY_CONNECTOR_W)/2, BATTERY_TOP-BATTERY_CONNECTOR_H , BATTERY_CONNECTOR_W, BATTERY_CONNECTOR_H, SOLID, COLOR_THEME_PRIMARY2); + lcd->drawFilledRect((LCD_W - BATTERY_W_INNER) / 2, + BATTERY_TOP_INNER + BATTERY_H_INNER - h, BATTERY_W_INNER, + h, SOLID, color); + lcd->drawFilledRect((LCD_W - BATTERY_CONNECTOR_W) / 2, + BATTERY_TOP - BATTERY_CONNECTOR_H, BATTERY_CONNECTOR_W, + BATTERY_CONNECTOR_H, SOLID, COLOR_THEME_PRIMARY2); } + #define CHARGE_INFO_DURATION 500 + //this method should be called by timer interrupt or by GPIO interrupt void handle_battery_charge(uint32_t last_press_time) { @@ -174,8 +179,6 @@ void handle_battery_charge(uint32_t last_press_time) if(updateTime == 0 || ((get_tmr10ms() - updateTime) >= 50)) { if(!lcdInited) { - backlightInit(); - lcdInit(); lcdInitDisplayDriver(); lcdInited = true; } @@ -184,7 +187,6 @@ void handle_battery_charge(uint32_t last_press_time) } updateTime = get_tmr10ms(); lcdInitDirectDrawing(); - lcd->clear(); drawChargingInfo(chargeState); lcdRefresh(); } diff --git a/radio/src/targets/nv14/board.cpp b/radio/src/targets/nv14/board.cpp index 8f6284f0f..0319105db 100644 --- a/radio/src/targets/nv14/board.cpp +++ b/radio/src/targets/nv14/board.cpp @@ -186,8 +186,6 @@ void boardInit() memset(&g_FATFS_Obj, 0, sizeof(g_FATFS_Obj)); monitorInit(); adcInit(&stm32_hal_adc_driver); - backlightInit(); - lcdInit(); hapticInit(); diff --git a/radio/src/targets/simu/backlight_driver.cpp b/radio/src/targets/simu/backlight_driver.cpp index 0be329a99..c50583cb4 100644 --- a/radio/src/targets/simu/backlight_driver.cpp +++ b/radio/src/targets/simu/backlight_driver.cpp @@ -23,6 +23,7 @@ bool boardBacklightOn = false; bool isBacklightEnabled() { return boardBacklightOn; } void backlightFullOn() { boardBacklightOn = true; } +void backlightInit() {} void backlightEnable(unsigned char) {} void backlightEnable(unsigned char, unsigned char) {} void backlightDisable() {}