From aa527fc6bd096720f13216bf746b437da9579e7f Mon Sep 17 00:00:00 2001 From: 3djc Date: Tue, 3 Oct 2017 07:45:40 +0200 Subject: [PATCH] GPS datetime display fixes (#5254) * Fix x9 * Fix x7 * Apparently - is standard separator for dates * Consistency --- radio/src/gui/128x64/lcd.cpp | 49 ++++++++++++++---------- radio/src/gui/128x64/model_telemetry.cpp | 2 +- radio/src/gui/128x64/view_telemetry.cpp | 2 +- radio/src/gui/212x64/lcd.cpp | 32 +++++++++++++--- radio/src/gui/212x64/view_telemetry.cpp | 7 +++- radio/src/gui/480x272/lcd.cpp | 3 +- radio/src/gui/common/arm/widgets.cpp | 2 +- radio/src/gui/gui_common.h | 3 +- 8 files changed, 69 insertions(+), 31 deletions(-) diff --git a/radio/src/gui/128x64/lcd.cpp b/radio/src/gui/128x64/lcd.cpp index 3b6acc153..c4eac31df 100644 --- a/radio/src/gui/128x64/lcd.cpp +++ b/radio/src/gui/128x64/lcd.cpp @@ -1137,32 +1137,41 @@ void drawGPSCoord(coord_t x, coord_t y, int32_t value, const char * direction, L lcdDrawSizedText(lcdLastRightPos+1, y, direction + (value>=0 ? 0 : 1), 1); } -void drawTelemScreenDate(coord_t x, coord_t y, TelemetryItem & telemetryItem, LcdFlags att) +void drawDate(coord_t x, coord_t y, TelemetryItem & telemetryItem, LcdFlags att) { - if (att & DBLSIZE) { - x -= 42; - att &= ~FONTSIZE_MASK; - lcdDrawNumber(x, y, telemetryItem.datetime.day, att|LEADING0|LEFT, 2); - lcdDrawChar(lcdLastRightPos-1, y, '-', att); - lcdDrawNumber(lcdNextPos-1, y, telemetryItem.datetime.month, att|LEFT, 2); - lcdDrawChar(lcdLastRightPos-1, y, '-', att); - lcdDrawNumber(lcdNextPos-1, y, telemetryItem.datetime.year-2000, att|LEFT); - y += FH; - lcdDrawNumber(x, y, telemetryItem.datetime.hour, att|LEADING0|LEFT, 2); - lcdDrawChar(lcdLastRightPos, y, ':', att); - lcdDrawNumber(lcdNextPos, y, telemetryItem.datetime.min, att|LEADING0|LEFT, 2); - lcdDrawChar(lcdLastRightPos, y, ':', att); - lcdDrawNumber(lcdNextPos, y, telemetryItem.datetime.sec, att|LEADING0|LEFT, 2); + if (BLINK_ON_PHASE) { + lcdDrawNumber(x, y, telemetryItem.datetime.hour, att|LEADING0, 2); + lcdDrawText(lcdNextPos, y, ":", att); + lcdDrawNumber(lcdNextPos, y, telemetryItem.datetime.min, att|LEADING0, 2); + lcdDrawText(lcdNextPos, y, ":", att); + lcdDrawNumber(lcdNextPos, y, telemetryItem.datetime.sec, att|LEADING0, 2); } else { - lcdDrawNumber(x, y, telemetryItem.datetime.hour, att|LEADING0|LEFT, 2); - lcdDrawChar(lcdLastRightPos, y, ':', att); - lcdDrawNumber(lcdNextPos, y, telemetryItem.datetime.min, att|LEADING0|LEFT, 2); - lcdDrawChar(lcdLastRightPos, y, ':', att); - lcdDrawNumber(lcdNextPos, y, telemetryItem.datetime.sec, att|LEADING0|LEFT, 2); + lcdDrawNumber(x, y, telemetryItem.datetime.year, att|LEADING0|LEFT, 4); + lcdDrawChar(lcdLastRightPos, y, '-', att); + lcdDrawNumber(lcdNextPos, y, telemetryItem.datetime.month, att|LEADING0|LEFT, 2); + lcdDrawChar(lcdLastRightPos, y, '-', att); + lcdDrawNumber(lcdNextPos, y, telemetryItem.datetime.day, att|LEADING0|LEFT, 2); } } +void drawTelemScreenDate(coord_t x, coord_t y, source_t sensor, LcdFlags att) +{ + y+=3; + sensor = (sensor-MIXSRC_FIRST_TELEM) / 3; + TelemetryItem & telemetryItem = telemetryItems[sensor]; + + lcdDrawNumber(x, y, telemetryItem.datetime.hour, att|LEADING0, 2); + lcdDrawText(lcdNextPos, y, ":", att); + lcdDrawNumber(lcdNextPos, y, telemetryItem.datetime.min, att|LEADING0, 2); + lcdDrawText(lcdNextPos, y, ":", att); + lcdDrawNumber(lcdNextPos, y, telemetryItem.datetime.sec, att|LEADING0, 2); + + lcdDrawNumber(x-29, y, telemetryItem.datetime.month, att|LEADING0|LEFT, 2); + lcdDrawChar(lcdNextPos, y, '-', att); + lcdDrawNumber(lcdNextPos, y, telemetryItem.datetime.day, att|LEADING0|LEFT, 2); +} + void drawGPSPosition(coord_t x, coord_t y, int32_t longitude, int32_t latitude, LcdFlags flags) { if (flags & DBLSIZE) { diff --git a/radio/src/gui/128x64/model_telemetry.cpp b/radio/src/gui/128x64/model_telemetry.cpp index 2f7f5790b..a3732c29b 100644 --- a/radio/src/gui/128x64/model_telemetry.cpp +++ b/radio/src/gui/128x64/model_telemetry.cpp @@ -526,7 +526,7 @@ void menuModelTelemetryFrsky(event_t event) lcdDrawChar(lcdLastRightPos, y, ':', attr); lcdDrawSizedText(3*FW, y, g_model.telemetrySensors[index].label, TELEM_LABEL_LEN, ZCHAR); if (telemetryItems[index].isFresh()) { - lcdDrawChar(16*FW, y, '*'); + lcdDrawChar(17*FW, y, '*'); } TelemetryItem & telemetryItem = telemetryItems[index]; if (telemetryItem.isAvailable()) { diff --git a/radio/src/gui/128x64/view_telemetry.cpp b/radio/src/gui/128x64/view_telemetry.cpp index 4154a3a60..14c14b9bf 100644 --- a/radio/src/gui/128x64/view_telemetry.cpp +++ b/radio/src/gui/128x64/view_telemetry.cpp @@ -356,7 +356,7 @@ bool displayNumbersTelemetryScreen(FrSkyScreenData & screen) } } if(isSensorUnit(1+(field-MIXSRC_FIRST_TELEM)/3, UNIT_DATETIME)) - drawSourceValue(pos[j+1]-36, 6+FH+2*FH*i, field, SMLSIZE|NO_UNIT); + drawTelemScreenDate(pos[j+1]-36, 6+FH+2*FH*i, field, SMLSIZE|NO_UNIT); else drawSourceValue(pos[j+1]-2, (i==3 ? 1+FH+2*FH*i:FH+2*FH*i), field, att); } diff --git a/radio/src/gui/212x64/lcd.cpp b/radio/src/gui/212x64/lcd.cpp index 26fb8c150..452fd2b14 100644 --- a/radio/src/gui/212x64/lcd.cpp +++ b/radio/src/gui/212x64/lcd.cpp @@ -764,8 +764,30 @@ void drawGPSCoord(coord_t x, coord_t y, int32_t value, const char * direction, L lcdDrawSizedText(lcdLastRightPos+1, y, direction + (value>=0 ? 0 : 1), 1); } -void drawTelemScreenDate(coord_t x, coord_t y, TelemetryItem & telemetryItem, LcdFlags att) +void drawDate(coord_t x, coord_t y, TelemetryItem & telemetryItem, LcdFlags att) { + att &= ~FONTSIZE_MASK; + if (BLINK_ON_PHASE) { + lcdDrawNumber(x, y, telemetryItem.datetime.hour, att|LEADING0, 2); + lcdDrawText(lcdNextPos, y, ":", att); + lcdDrawNumber(lcdNextPos, y, telemetryItem.datetime.min, att|LEADING0, 2); + lcdDrawText(lcdNextPos, y, ":", att); + lcdDrawNumber(lcdNextPos, y, telemetryItem.datetime.sec, att|LEADING0, 2); + } + else { + lcdDrawNumber(x, y, telemetryItem.datetime.year, att|LEADING0, 4); + lcdDrawText(lcdNextPos, y, "-", att); + lcdDrawNumber(lcdNextPos, y, telemetryItem.datetime.month, att|LEADING0, 2); + lcdDrawText(lcdNextPos, y, "-", att); + lcdDrawNumber(lcdNextPos, y, telemetryItem.datetime.day, att|LEADING0,2); + } +} + +void drawTelemScreenDate(coord_t x, coord_t y, source_t sensor, LcdFlags att) +{ + sensor = (sensor-MIXSRC_FIRST_TELEM) / 3; + TelemetryItem & telemetryItem = telemetryItems[sensor]; + att &= ~FONTSIZE_MASK; lcdDrawNumber(x, y+1, telemetryItem.datetime.sec, att|LEADING0, 2); lcdDrawText(lcdNextPos, y+1, ":", att); @@ -773,11 +795,11 @@ void drawTelemScreenDate(coord_t x, coord_t y, TelemetryItem & telemetryItem, Lc lcdDrawText(lcdNextPos, y+1, ":", att); lcdDrawNumber(lcdNextPos, y+1, telemetryItem.datetime.hour, att|LEADING0, 2); - lcdDrawNumber(x, y+9, telemetryItem.datetime.year, att, 4); + lcdDrawNumber(x, y+9, telemetryItem.datetime.day, att|LEADING0, 2); lcdDrawText(lcdNextPos, y+9, "-", att); - lcdDrawNumber(lcdNextPos+1, y+9, telemetryItem.datetime.month, att|LEADING0, 2); - lcdDrawText(lcdNextPos+1, y+9, "-", att); - lcdDrawNumber(lcdNextPos+1, y+9, telemetryItem.datetime.day, att|LEADING0,2); + lcdDrawNumber(lcdNextPos, y+9, telemetryItem.datetime.month, att|LEADING0, 2); + lcdDrawText(lcdNextPos, y+9, "-", att); + lcdDrawNumber(lcdNextPos, y+9, telemetryItem.datetime.year, att|LEADING0,4); } void drawGPSSensorValue(coord_t x, coord_t y, TelemetryItem & telemetryItem, LcdFlags att) diff --git a/radio/src/gui/212x64/view_telemetry.cpp b/radio/src/gui/212x64/view_telemetry.cpp index 546f84930..a0f2f44f7 100644 --- a/radio/src/gui/212x64/view_telemetry.cpp +++ b/radio/src/gui/212x64/view_telemetry.cpp @@ -144,7 +144,12 @@ bool displayNumbersTelemetryScreen(FrSkyScreenData & screen) } } - drawSourceValue(x, y, field, att); + if(isSensorUnit(1+(field-MIXSRC_FIRST_TELEM)/3, UNIT_DATETIME)) { + drawTelemScreenDate(x, y, field, att); + } + else { + drawSourceValue(x, y, field, att); + } } } } diff --git a/radio/src/gui/480x272/lcd.cpp b/radio/src/gui/480x272/lcd.cpp index 62513c88f..0e86e8b93 100644 --- a/radio/src/gui/480x272/lcd.cpp +++ b/radio/src/gui/480x272/lcd.cpp @@ -307,7 +307,8 @@ void drawTrimMode(coord_t x, coord_t y, uint8_t phase, uint8_t idx, LcdFlags att } } -void drawTelemScreenDate(coord_t x, coord_t y, TelemetryItem & telemetryItem, LcdFlags att) + +void drawDate(coord_t x, coord_t y, TelemetryItem & telemetryItem, LcdFlags att) { // TODO if (att & DBLSIZE) { diff --git a/radio/src/gui/common/arm/widgets.cpp b/radio/src/gui/common/arm/widgets.cpp index 818abd297..3e9bee876 100644 --- a/radio/src/gui/common/arm/widgets.cpp +++ b/radio/src/gui/common/arm/widgets.cpp @@ -56,7 +56,7 @@ void drawSensorCustomValue(coord_t x, coord_t y, uint8_t sensor, int32_t value, TelemetrySensor & telemetrySensor = g_model.telemetrySensors[sensor]; if (telemetrySensor.unit == UNIT_DATETIME) { - drawTelemScreenDate(x, y, telemetryItem, flags); + drawDate(x, y, telemetryItem, flags); } else if (telemetrySensor.unit == UNIT_GPS) { drawGPSSensorValue(x, y, telemetryItem, flags); diff --git a/radio/src/gui/gui_common.h b/radio/src/gui/gui_common.h index a1afc7f56..ddb4ba818 100644 --- a/radio/src/gui/gui_common.h +++ b/radio/src/gui/gui_common.h @@ -93,7 +93,8 @@ swsrc_t checkIncDecMovedSwitch(swsrc_t val); #include "telemetry/telemetry_sensors.h" void drawValueWithUnit(coord_t x, coord_t y, int32_t val, uint8_t unit, LcdFlags flags); void drawCurveRef(coord_t x, coord_t y, CurveRef & curve, LcdFlags flags=0); -void drawTelemScreenDate(coord_t x, coord_t y, TelemetryItem & telemetryItem, LcdFlags flags=0); +void drawDate(coord_t x, coord_t y, TelemetryItem & telemetryItem, LcdFlags flags=0); +void drawTelemScreenDate(coord_t x, coord_t y, source_t sensor, LcdFlags flags=0); void drawGPSPosition(coord_t x, coord_t y, int32_t longitude, int32_t latitude, LcdFlags flags=0); void drawGPSSensorValue(coord_t x, coord_t y, TelemetryItem & telemetryItem, LcdFlags flags=0); void drawSensorCustomValue(coord_t x, coord_t y, uint8_t sensor, int32_t value, LcdFlags flags=0);