From 806c343b802c86cd30f475723a512511f4cb3ac1 Mon Sep 17 00:00:00 2001 From: Damjan Adamic Date: Tue, 11 Aug 2015 22:18:35 +0200 Subject: [PATCH 1/2] Re #2671: voltage symbol changed to upper case in putsVolts(). --- radio/src/gui/9X/lcd.cpp | 2 +- radio/src/gui/Taranis/lcd.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/radio/src/gui/9X/lcd.cpp b/radio/src/gui/9X/lcd.cpp index 386957747..de9173505 100755 --- a/radio/src/gui/9X/lcd.cpp +++ b/radio/src/gui/9X/lcd.cpp @@ -646,7 +646,7 @@ void putsTimer(coord_t x, coord_t y, putstime_t tme, LcdFlags att, LcdFlags att2 void putsVolts(coord_t x, coord_t y, uint16_t volts, LcdFlags att) { lcd_outdezAtt(x, y, (int16_t)volts, (~NO_UNIT) & (att | ((att&PREC2)==PREC2 ? 0 : PREC1))); - if (~att & NO_UNIT) lcd_putcAtt(lcdLastPos, y, 'v', att); + if (~att & NO_UNIT) lcd_putcAtt(lcdLastPos, y, 'V', att); } void putsVBat(coord_t x, coord_t y, LcdFlags att) diff --git a/radio/src/gui/Taranis/lcd.cpp b/radio/src/gui/Taranis/lcd.cpp index dd22b8c43..6c5b69982 100755 --- a/radio/src/gui/Taranis/lcd.cpp +++ b/radio/src/gui/Taranis/lcd.cpp @@ -610,7 +610,7 @@ void putsTimer(coord_t x, coord_t y, putstime_t tme, LcdFlags att, LcdFlags att2 void putsVolts(coord_t x, coord_t y, uint16_t volts, LcdFlags att) { lcd_outdezAtt(x, y, (int16_t)volts, (~NO_UNIT) & (att | ((att&PREC2)==PREC2 ? 0 : PREC1))); - if (~att & NO_UNIT) lcd_putcAtt(lcdLastPos, y, 'v', att); + if (~att & NO_UNIT) lcd_putcAtt(lcdLastPos, y, 'V', att); } void putsVBat(coord_t x, coord_t y, LcdFlags att) From 04a8570d485aa01035db58294a2c2795a3bacd45 Mon Sep 17 00:00:00 2001 From: Damjan Adamic Date: Tue, 11 Aug 2015 22:20:17 +0200 Subject: [PATCH 2/2] Re #2671: added TX battery blinking on batter warning, fixed display problem when battery voltage lower than batlow value. --- radio/src/main_arm.cpp | 2 +- radio/src/targets/taranis/board_taranis.h | 2 +- radio/src/targets/taranis/top_lcd_driver.cpp | 33 +++++++++++++------- 3 files changed, 23 insertions(+), 14 deletions(-) diff --git a/radio/src/main_arm.cpp b/radio/src/main_arm.cpp index bfff0b24f..f8045105a 100644 --- a/radio/src/main_arm.cpp +++ b/radio/src/main_arm.cpp @@ -192,7 +192,7 @@ void perMain() setTopRssi(TELEMETRY_RSSI()); setTopBatteryValue(g_vbat100mV); int state = 5 * (g_vbat100mV - g_eeGeneral.vBatMin - 90) / (30 + g_eeGeneral.vBatMax - g_eeGeneral.vBatMin); - setTopBatteryState(state); + setTopBatteryState(state, g_vbat100mV <= g_eeGeneral.vBatWarn); topLcdRefreshEnd(); #endif diff --git a/radio/src/targets/taranis/board_taranis.h b/radio/src/targets/taranis/board_taranis.h index f10818090..e33217b8c 100644 --- a/radio/src/targets/taranis/board_taranis.h +++ b/radio/src/targets/taranis/board_taranis.h @@ -354,7 +354,7 @@ void topLcdRefreshEnd(void); void setTopFirstTimer(int32_t value); void setTopSecondTimer(uint32_t value); void setTopRssi(uint32_t rssi); -void setTopBatteryState(uint32_t state); +void setTopBatteryState(int state, uint8_t blinking); void setTopBatteryValue(uint32_t volts); #endif diff --git a/radio/src/targets/taranis/top_lcd_driver.cpp b/radio/src/targets/taranis/top_lcd_driver.cpp index 6dc883cb7..ca590d0bd 100755 --- a/radio/src/targets/taranis/top_lcd_driver.cpp +++ b/radio/src/targets/taranis/top_lcd_driver.cpp @@ -34,6 +34,8 @@ * */ +#include "board_taranis.h" + #define CS1_HIGH() TOPLCD_GPIO->BSRRL = TOPLCD_GPIO_PIN_CS1 #define CS1_LOW() TOPLCD_GPIO->BSRRH = TOPLCD_GPIO_PIN_CS1 #define CS2_HIGH() TOPLCD_GPIO->BSRRL = TOPLCD_GPIO_PIN_CS2 @@ -334,19 +336,26 @@ void setTopRssi(uint32_t rssi) setTopRssiBar(rssi); } -void setTopBatteryState(uint32_t state) +void setTopBatteryState(int state, uint8_t blinking) { - Ht1621Data1[4] |= 0x40; // Battery border - if (state > 0) - Ht1621Data1[7] |= 0x80; - if (state > 1) - Ht1621Data1[9] |= 0x80; - if (state > 2) - Ht1621Data1[5] |= 0x80; - if (state > 3) - Ht1621Data1[10] |= 0x80; - if (state > 4) - Ht1621Data1[4] |= 0x80; + if (!blinking || BLINK_ON_PHASE) { + // since the border can not be turned off, + // we blink the first bar even if the actual value is zero + if (blinking && state < 1) { + state = 1; + } + Ht1621Data1[4] |= 0x40; // Battery border // TODO this is not working for me, the border is ALWAYS on + if (state > 0) + Ht1621Data1[7] |= 0x80; + if (state > 1) + Ht1621Data1[9] |= 0x80; + if (state > 2) + Ht1621Data1[5] |= 0x80; + if (state > 3) + Ht1621Data1[10] |= 0x80; + if (state > 4) + Ht1621Data1[4] |= 0x80; + } } void setTopBatteryValue(uint32_t volts)