From c8768f6ab2db3c4f9071999c69c4f703bc942ea9 Mon Sep 17 00:00:00 2001 From: nerdCopter <56646290+nerdCopter@users.noreply.github.com> Date: Fri, 22 Mar 2024 14:16:13 -0500 Subject: [PATCH 1/9] HDZERO - OSD Centering --- src/main/io/osd.c | 24 ++++++++++++++++-------- src/main/io/osd.h | 4 ++++ src/main/pg/vcd.h | 3 ++- 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/src/main/io/osd.c b/src/main/io/osd.c index 937b71c694..88561c99ff 100644 --- a/src/main/io/osd.c +++ b/src/main/io/osd.c @@ -169,6 +169,8 @@ static escSensorData_t *escDataCombined; #define AH_SIDEBAR_WIDTH_POS 7 #define AH_SIDEBAR_HEIGHT_POS 3 +static uint8_t leftScreen; + static const char compassBar[] = { SYM_HEADING_W, SYM_HEADING_LINE, SYM_HEADING_DIVIDED_LINE, SYM_HEADING_LINE, @@ -1163,19 +1165,25 @@ void osdInit(displayPort_t *osdDisplayPortToUse) { armState = ARMING_FLAG(ARMED); memset(blinkBits, 0, sizeof(blinkBits)); displayClearScreen(osdDisplayPort); - osdDrawLogo(3, 1); +#if defined(USE_HDZERO_OSD) + if (vcdProfile()->video_system == VIDEO_SYSTEM_HD) { + leftScreen = HDINDENT; + } else +#endif + { leftScreen = SDINDENT;} + osdDrawLogo(leftScreen + 3, 1); char string_buffer[30]; tfp_sprintf(string_buffer, "V%s", FC_VERSION_STRING); - displayWrite(osdDisplayPort, 20, 6, string_buffer); + displayWrite(osdDisplayPort, leftScreen + 20, 6, string_buffer); #ifdef USE_CMS - displayWrite(osdDisplayPort, 7, 8, CMS_STARTUP_HELP_TEXT1); - displayWrite(osdDisplayPort, 11, 9, CMS_STARTUP_HELP_TEXT2); - displayWrite(osdDisplayPort, 11, 10, CMS_STARTUP_HELP_TEXT3); + displayWrite(osdDisplayPort, leftScreen + 7, 8, CMS_STARTUP_HELP_TEXT1); + displayWrite(osdDisplayPort, leftScreen + 11, 9, CMS_STARTUP_HELP_TEXT2); + displayWrite(osdDisplayPort, leftScreen + 11, 10, CMS_STARTUP_HELP_TEXT3); #endif #ifdef USE_RTC_TIME char dateTimeBuffer[FORMATTED_DATE_TIME_BUFSIZE]; if (osdFormatRtcDateTime(&dateTimeBuffer[0])) { - displayWrite(osdDisplayPort, 5, 12, dateTimeBuffer); + displayWrite(osdDisplayPort, leftScreen + 5, 12, dateTimeBuffer); } #endif displayResync(osdDisplayPort); @@ -1483,12 +1491,12 @@ static timeDelta_t osdShowArmed(void) timeDelta_t ret; displayClearScreen(osdDisplayPort); if ((osdConfig()->logo_on_arming == OSD_LOGO_ARMING_ON) || ((osdConfig()->logo_on_arming == OSD_LOGO_ARMING_FIRST) && !everArmed)) { - osdDrawLogo(3, 1); + osdDrawLogo(leftScreen + 3, 1); ret = osdConfig()->logo_on_arming_duration * 1e5; } else { ret = (REFRESH_1S / 2); } - displayWrite(osdDisplayPort, 12, 7, "ARMED"); + displayWrite(osdDisplayPort, leftScreen + 12, 7, "ARMED"); everArmed = true; return ret; } diff --git a/src/main/io/osd.h b/src/main/io/osd.h index 886a3080d6..83e4969712 100644 --- a/src/main/io/osd.h +++ b/src/main/io/osd.h @@ -22,6 +22,7 @@ #include "common/time.h" #include "pg/pg.h" +#include "pg/vcd.h" #define OSD_NUM_TIMER_TYPES 3 extern const char * const osdTimerSourceNames[OSD_NUM_TIMER_TYPES]; @@ -44,6 +45,9 @@ extern const char * const osdTimerSourceNames[OSD_NUM_TIMER_TYPES]; #define OSD_X(x) ((x & OSD_POSITION_XY_MASK) | ((x & OSD_POSITION_XHD_MASK) >> (OSD_POSITION_BIT_XHD - OSD_POSITION_BITS))) #define OSD_Y(x) ((x >> OSD_POSITION_BITS) & OSD_POSITION_XY_MASK) +#define SDINDENT 0 //Analog leftmost character for OSD Init and Menus +#define HDINDENT 15 //HD leftmost character for OSD Init and Menus + // Timer configuration // Stored as 15[alarm:8][precision:4][source:4]0 #define OSD_TIMER(src, prec, alarm) ((src & 0x0F) | ((prec & 0x0F) << 4) | ((alarm & 0xFF ) << 8)) diff --git a/src/main/pg/vcd.h b/src/main/pg/vcd.h index df3ed8001d..33ff77155a 100644 --- a/src/main/pg/vcd.h +++ b/src/main/pg/vcd.h @@ -27,7 +27,8 @@ enum VIDEO_SYSTEMS { VIDEO_SYSTEM_AUTO = 0, VIDEO_SYSTEM_PAL, - VIDEO_SYSTEM_NTSC + VIDEO_SYSTEM_NTSC, + VIDEO_SYSTEM_HD }; typedef struct vcdProfile_s { From 320921afdd251c9af35fb7f608d82fbf7bcb62e6 Mon Sep 17 00:00:00 2001 From: nerdCopter <56646290+nerdCopter@users.noreply.github.com> Date: Fri, 22 Mar 2024 14:29:25 -0500 Subject: [PATCH 2/9] stupid space --- src/main/io/osd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/io/osd.c b/src/main/io/osd.c index 88561c99ff..117496ee69 100644 --- a/src/main/io/osd.c +++ b/src/main/io/osd.c @@ -1170,7 +1170,7 @@ void osdInit(displayPort_t *osdDisplayPortToUse) { leftScreen = HDINDENT; } else #endif - { leftScreen = SDINDENT;} + { leftScreen = SDINDENT; } osdDrawLogo(leftScreen + 3, 1); char string_buffer[30]; tfp_sprintf(string_buffer, "V%s", FC_VERSION_STRING); From 7ab559d8ee21237b4234713fa4c1a0aacb9b7069 Mon Sep 17 00:00:00 2001 From: nerdCopter <56646290+nerdCopter@users.noreply.github.com> Date: Fri, 22 Mar 2024 15:48:39 -0500 Subject: [PATCH 3/9] HDZERO - OSD Centering ; continued --- src/main/cms/cms.c | 12 ++++++++++-- src/main/io/osd.c | 10 +++++----- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/main/cms/cms.c b/src/main/cms/cms.c index 3a4730f66f..22c27bf7ff 100644 --- a/src/main/cms/cms.c +++ b/src/main/cms/cms.c @@ -27,6 +27,8 @@ //#define CMS_PAGE_DEBUG // For multi-page/menu debugging //#define CMS_MENU_DEBUG // For external menu content creators +#pragma once + #include #include #include @@ -66,6 +68,7 @@ // For VISIBLE* #include "io/osd.h" #include "io/rcdevice_cam.h" +#include "pg/vcd.h" #include "rx/rx.h" @@ -591,13 +594,18 @@ void cmsMenuOpen(void) { if ( pCurrentDisplay->cols < NORMAL_SCREEN_MIN_COLS) { smallScreen = true; linesPerMenuItem = 2; - leftMenuColumn = 0; + leftMenuColumn = SDINDENT; rightMenuColumn = pCurrentDisplay->cols; maxMenuItems = (pCurrentDisplay->rows) / linesPerMenuItem; } else { smallScreen = false; linesPerMenuItem = 1; - leftMenuColumn = 2; +#if defined(USE_HDZERO_OSD) + if ((vcdProfile()->video_system == VIDEO_SYSTEM_HD) && (pCurrentDisplay->cols > 30)) { + leftMenuColumn = HDINDENT + 2; + } else +#endif + { leftMenuColumn = SDINDENT + 2; } #ifdef CMS_OSD_RIGHT_ALIGNED_VALUES rightMenuColumn = pCurrentDisplay->cols - 2; #else diff --git a/src/main/io/osd.c b/src/main/io/osd.c index 117496ee69..506dbab24d 100644 --- a/src/main/io/osd.c +++ b/src/main/io/osd.c @@ -1384,9 +1384,9 @@ static void osdGetBlackboxStatusString(char * buff) { #endif static void osdDisplayStatisticLabel(uint8_t y, const char * text, const char * value) { - displayWrite(osdDisplayPort, 2, y, text); - displayWrite(osdDisplayPort, 20, y, ":"); - displayWrite(osdDisplayPort, 22, y, value); + displayWrite(osdDisplayPort, leftScreen + 2, y, text); + displayWrite(osdDisplayPort, leftScreen + 20, y, ":"); + displayWrite(osdDisplayPort, leftScreen + 22, y, value); } /* @@ -1408,7 +1408,7 @@ static void osdShowStats(uint16_t endBatteryVoltage) { uint8_t top = 2; char buff[OSD_ELEMENT_BUFFER_LENGTH]; displayClearScreen(osdDisplayPort); - displayWrite(osdDisplayPort, 2, top++, " --- STATS ---"); + displayWrite(osdDisplayPort, leftScreen + 2, top++, " --- STATS ---"); if (osdStatGetState(OSD_STAT_RTC_DATE_TIME)) { bool success = false; #ifdef USE_RTC_TIME @@ -1417,7 +1417,7 @@ static void osdShowStats(uint16_t endBatteryVoltage) { if (!success) { tfp_sprintf(buff, "NO RTC"); } - displayWrite(osdDisplayPort, 2, top++, buff); + displayWrite(osdDisplayPort, leftScreen + 2, top++, buff); } if (osdStatGetState(OSD_STAT_TIMER_1)) { osdFormatTimer(buff, false, (OSD_TIMER_SRC(osdConfig()->timers[OSD_TIMER_1]) == OSD_TIMER_SRC_ON ? false : true), OSD_TIMER_1); From a48b7725b7a22a168eba52bfb2a47a52b0278fd4 Mon Sep 17 00:00:00 2001 From: nerdCopter <56646290+nerdCopter@users.noreply.github.com> Date: Sat, 23 Mar 2024 12:24:47 -0500 Subject: [PATCH 4/9] HDZERO - OSD Centering ; better --- src/main/cms/cms.c | 14 +++++++++----- src/main/io/osd.c | 4 ++-- src/main/io/osd.h | 5 +++-- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/main/cms/cms.c b/src/main/cms/cms.c index 22c27bf7ff..58641f83cf 100644 --- a/src/main/cms/cms.c +++ b/src/main/cms/cms.c @@ -27,8 +27,6 @@ //#define CMS_PAGE_DEBUG // For multi-page/menu debugging //#define CMS_MENU_DEBUG // For external menu content creators -#pragma once - #include #include #include @@ -594,7 +592,7 @@ void cmsMenuOpen(void) { if ( pCurrentDisplay->cols < NORMAL_SCREEN_MIN_COLS) { smallScreen = true; linesPerMenuItem = 2; - leftMenuColumn = SDINDENT; + leftMenuColumn = 0; rightMenuColumn = pCurrentDisplay->cols; maxMenuItems = (pCurrentDisplay->rows) / linesPerMenuItem; } else { @@ -602,12 +600,18 @@ void cmsMenuOpen(void) { linesPerMenuItem = 1; #if defined(USE_HDZERO_OSD) if ((vcdProfile()->video_system == VIDEO_SYSTEM_HD) && (pCurrentDisplay->cols > 30)) { - leftMenuColumn = HDINDENT + 2; + leftMenuColumn = HDINDENTMENU + 2; } else #endif { leftMenuColumn = SDINDENT + 2; } #ifdef CMS_OSD_RIGHT_ALIGNED_VALUES - rightMenuColumn = pCurrentDisplay->cols - 2; +#if defined(USE_HDZERO_OSD) + if ((vcdProfile()->video_system == VIDEO_SYSTEM_HD) && (pCurrentDisplay->cols > 30)) { + rightMenuColumn = pCurrentDisplay->cols - 3 - HDINDENTMENU; + } else +#endif + { rightMenuColumn = pCurrentDisplay->cols - 2; } + #else rightMenuColumn = pCurrentDisplay->cols - CMS_DRAW_BUFFER_LEN; #endif diff --git a/src/main/io/osd.c b/src/main/io/osd.c index 506dbab24d..635b00c9da 100644 --- a/src/main/io/osd.c +++ b/src/main/io/osd.c @@ -1166,8 +1166,8 @@ void osdInit(displayPort_t *osdDisplayPortToUse) { memset(blinkBits, 0, sizeof(blinkBits)); displayClearScreen(osdDisplayPort); #if defined(USE_HDZERO_OSD) - if (vcdProfile()->video_system == VIDEO_SYSTEM_HD) { - leftScreen = HDINDENT; + if ((vcdProfile()->video_system == VIDEO_SYSTEM_HD) && (pCurrentDisplay->cols > 30)) { + leftScreen = HDINDENTINIT; } else #endif { leftScreen = SDINDENT; } diff --git a/src/main/io/osd.h b/src/main/io/osd.h index 83e4969712..32ba82ae07 100644 --- a/src/main/io/osd.h +++ b/src/main/io/osd.h @@ -45,8 +45,9 @@ extern const char * const osdTimerSourceNames[OSD_NUM_TIMER_TYPES]; #define OSD_X(x) ((x & OSD_POSITION_XY_MASK) | ((x & OSD_POSITION_XHD_MASK) >> (OSD_POSITION_BIT_XHD - OSD_POSITION_BITS))) #define OSD_Y(x) ((x >> OSD_POSITION_BITS) & OSD_POSITION_XY_MASK) -#define SDINDENT 0 //Analog leftmost character for OSD Init and Menus -#define HDINDENT 15 //HD leftmost character for OSD Init and Menus +#define SDINDENT 0 //Analog leftmost character for OSD Init and Menus +#define HDINDENTINIT 10 //HD leftmost character for OSD Init and Menus +#define HDINDENTMENU 4 //HD leftmost character for OSD Init and Menus // Timer configuration // Stored as 15[alarm:8][precision:4][source:4]0 From fea7cfb3ffe8601393aa86e75eb8423336c7c306 Mon Sep 17 00:00:00 2001 From: nerdCopter <56646290+nerdCopter@users.noreply.github.com> Date: Sat, 23 Mar 2024 13:04:28 -0500 Subject: [PATCH 5/9] HDZERO - OSD Centering ; readability --- src/main/cms/cms.c | 12 ++++++------ src/main/io/osd.c | 8 ++++---- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/main/cms/cms.c b/src/main/cms/cms.c index 58641f83cf..4e5146b7a8 100644 --- a/src/main/cms/cms.c +++ b/src/main/cms/cms.c @@ -599,16 +599,16 @@ void cmsMenuOpen(void) { smallScreen = false; linesPerMenuItem = 1; #if defined(USE_HDZERO_OSD) - if ((vcdProfile()->video_system == VIDEO_SYSTEM_HD) && (pCurrentDisplay->cols > 30)) { - leftMenuColumn = HDINDENTMENU + 2; - } else + if ((vcdProfile()->video_system == VIDEO_SYSTEM_HD) && (pCurrentDisplay->cols > 30)) + { leftMenuColumn = HDINDENTMENU + 2; } + else #endif { leftMenuColumn = SDINDENT + 2; } #ifdef CMS_OSD_RIGHT_ALIGNED_VALUES #if defined(USE_HDZERO_OSD) - if ((vcdProfile()->video_system == VIDEO_SYSTEM_HD) && (pCurrentDisplay->cols > 30)) { - rightMenuColumn = pCurrentDisplay->cols - 3 - HDINDENTMENU; - } else + if ((vcdProfile()->video_system == VIDEO_SYSTEM_HD) && (pCurrentDisplay->cols > 30)) + { rightMenuColumn = pCurrentDisplay->cols - 3 - HDINDENTMENU; } + else #endif { rightMenuColumn = pCurrentDisplay->cols - 2; } diff --git a/src/main/io/osd.c b/src/main/io/osd.c index 635b00c9da..9694dd3291 100644 --- a/src/main/io/osd.c +++ b/src/main/io/osd.c @@ -1166,11 +1166,11 @@ void osdInit(displayPort_t *osdDisplayPortToUse) { memset(blinkBits, 0, sizeof(blinkBits)); displayClearScreen(osdDisplayPort); #if defined(USE_HDZERO_OSD) - if ((vcdProfile()->video_system == VIDEO_SYSTEM_HD) && (pCurrentDisplay->cols > 30)) { - leftScreen = HDINDENTINIT; - } else + if ((vcdProfile()->video_system == VIDEO_SYSTEM_HD) && (pCurrentDisplay->cols > 30)) + { leftScreen = HDINDENTINIT; } + else #endif - { leftScreen = SDINDENT; } + { leftScreen = SDINDENT; } osdDrawLogo(leftScreen + 3, 1); char string_buffer[30]; tfp_sprintf(string_buffer, "V%s", FC_VERSION_STRING); From eeb9159654dacce8d3818deb58beacdbcdc30fbc Mon Sep 17 00:00:00 2001 From: nerdCopter <56646290+nerdCopter@users.noreply.github.com> Date: Sat, 23 Mar 2024 14:09:35 -0500 Subject: [PATCH 6/9] HDZERO - OSD Centering ; Rebooting text --- src/main/cms/cms.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/cms/cms.c b/src/main/cms/cms.c index 4e5146b7a8..bc0e6770bc 100644 --- a/src/main/cms/cms.c +++ b/src/main/cms/cms.c @@ -646,7 +646,7 @@ long cmsMenuExit(displayPort_t *pDisplay, const void *ptr) { currentCtx.menu = NULL; if (exitType == CMS_EXIT_SAVEREBOOT) { displayClearScreen(pDisplay); - displayWrite(pDisplay, 5, 3, "REBOOTING..."); + displayWrite(pDisplay, leftMenuColumn + 5, 3, "REBOOTING..."); displayResync(pDisplay); // Was max7456RefreshAll(); why at this timing? stopMotors(); stopPwmAllMotors(); From 679035451a876070fefc44e29909cfcbe579a030 Mon Sep 17 00:00:00 2001 From: nerdCopter <56646290+nerdCopter@users.noreply.github.com> Date: Sat, 23 Mar 2024 14:43:25 -0500 Subject: [PATCH 7/9] HDZERO - OSD Centering ; Rebooting and BB Erasing text --- src/main/cms/cms.c | 2 +- src/main/cms/cms_menu_blackbox.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/cms/cms.c b/src/main/cms/cms.c index bc0e6770bc..c71405a074 100644 --- a/src/main/cms/cms.c +++ b/src/main/cms/cms.c @@ -646,7 +646,7 @@ long cmsMenuExit(displayPort_t *pDisplay, const void *ptr) { currentCtx.menu = NULL; if (exitType == CMS_EXIT_SAVEREBOOT) { displayClearScreen(pDisplay); - displayWrite(pDisplay, leftMenuColumn + 5, 3, "REBOOTING..."); + displayWrite(pDisplay, (pCurrentDisplay->cols % 2) - 6, 3, "REBOOTING..."); displayResync(pDisplay); // Was max7456RefreshAll(); why at this timing? stopMotors(); stopPwmAllMotors(); diff --git a/src/main/cms/cms_menu_blackbox.c b/src/main/cms/cms_menu_blackbox.c index 56adfed277..84f11531c3 100644 --- a/src/main/cms/cms_menu_blackbox.c +++ b/src/main/cms/cms_menu_blackbox.c @@ -140,7 +140,7 @@ static long cmsx_EraseFlash(displayPort_t *pDisplay, const void *ptr) { return 0; } displayClearScreen(pDisplay); - displayWrite(pDisplay, 5, 3, "ERASING FLASH..."); + displayWrite(pDisplay, (pCurrentDisplay->cols % 2) - 7, 3, "ERASING FLASH..."); displayResync(pDisplay); // Was max7456RefreshAll(); Why at this timing? flashfsEraseCompletely(); while (!flashfsIsReady()) { From 58732afb315c5d6d4518ae166fc546e3acb0b2b7 Mon Sep 17 00:00:00 2001 From: nerdCopter <56646290+nerdCopter@users.noreply.github.com> Date: Sat, 23 Mar 2024 15:19:39 -0500 Subject: [PATCH 8/9] HDZERO - OSD Centering ; Narrower CMS menu --- src/main/cms/cms.c | 4 ++-- src/main/io/osd.c | 2 +- src/main/io/osd.h | 3 +-- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/main/cms/cms.c b/src/main/cms/cms.c index c71405a074..993ab96559 100644 --- a/src/main/cms/cms.c +++ b/src/main/cms/cms.c @@ -600,14 +600,14 @@ void cmsMenuOpen(void) { linesPerMenuItem = 1; #if defined(USE_HDZERO_OSD) if ((vcdProfile()->video_system == VIDEO_SYSTEM_HD) && (pCurrentDisplay->cols > 30)) - { leftMenuColumn = HDINDENTMENU + 2; } + { leftMenuColumn = HDINDENT + 2; } else #endif { leftMenuColumn = SDINDENT + 2; } #ifdef CMS_OSD_RIGHT_ALIGNED_VALUES #if defined(USE_HDZERO_OSD) if ((vcdProfile()->video_system == VIDEO_SYSTEM_HD) && (pCurrentDisplay->cols > 30)) - { rightMenuColumn = pCurrentDisplay->cols - 3 - HDINDENTMENU; } + { rightMenuColumn = pCurrentDisplay->cols - 2 - HDINDENT; } else #endif { rightMenuColumn = pCurrentDisplay->cols - 2; } diff --git a/src/main/io/osd.c b/src/main/io/osd.c index 9694dd3291..c13d3da510 100644 --- a/src/main/io/osd.c +++ b/src/main/io/osd.c @@ -1167,7 +1167,7 @@ void osdInit(displayPort_t *osdDisplayPortToUse) { displayClearScreen(osdDisplayPort); #if defined(USE_HDZERO_OSD) if ((vcdProfile()->video_system == VIDEO_SYSTEM_HD) && (pCurrentDisplay->cols > 30)) - { leftScreen = HDINDENTINIT; } + { leftScreen = HDINDENT; } else #endif { leftScreen = SDINDENT; } diff --git a/src/main/io/osd.h b/src/main/io/osd.h index 32ba82ae07..15ffb20cc6 100644 --- a/src/main/io/osd.h +++ b/src/main/io/osd.h @@ -46,8 +46,7 @@ extern const char * const osdTimerSourceNames[OSD_NUM_TIMER_TYPES]; #define OSD_Y(x) ((x >> OSD_POSITION_BITS) & OSD_POSITION_XY_MASK) #define SDINDENT 0 //Analog leftmost character for OSD Init and Menus -#define HDINDENTINIT 10 //HD leftmost character for OSD Init and Menus -#define HDINDENTMENU 4 //HD leftmost character for OSD Init and Menus +#define HDINDENT 10 //HD leftmost character for OSD Init and Menus // Timer configuration // Stored as 15[alarm:8][precision:4][source:4]0 From 68b64fc6201cd87c94380faccd77e6ada5a5a5eb Mon Sep 17 00:00:00 2001 From: nerdCopter <56646290+nerdCopter@users.noreply.github.com> Date: Sat, 23 Mar 2024 15:28:05 -0500 Subject: [PATCH 9/9] HDZERO - OSD Centering ; remove emptyline --- src/main/cms/cms.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/cms/cms.c b/src/main/cms/cms.c index 993ab96559..f5259d23b5 100644 --- a/src/main/cms/cms.c +++ b/src/main/cms/cms.c @@ -611,7 +611,6 @@ void cmsMenuOpen(void) { else #endif { rightMenuColumn = pCurrentDisplay->cols - 2; } - #else rightMenuColumn = pCurrentDisplay->cols - CMS_DRAW_BUFFER_LEN; #endif