From a2709e067680449666d28942bcda41dc4ff7223f Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Thu, 3 Oct 2019 09:26:49 +0200 Subject: [PATCH] Completely removes the macro MOVE_CURSOR_FROM_HERE() which was for AVR (#6880) --- radio/src/dataconstants.h | 8 +-- radio/src/gui/128x64/gui.h | 2 - radio/src/gui/128x64/model_display.cpp | 60 ++++++++++++------- radio/src/gui/128x64/radio_setup.cpp | 1 - radio/src/gui/212x64/gui.h | 1 - radio/src/gui/212x64/model_display.cpp | 53 ++++++++++------ .../conversions/conversions_216_218.cpp | 2 +- .../conversions/conversions_218_219.cpp | 2 +- 8 files changed, 79 insertions(+), 50 deletions(-) diff --git a/radio/src/dataconstants.h b/radio/src/dataconstants.h index 4586bcc05..2f88ed826 100644 --- a/radio/src/dataconstants.h +++ b/radio/src/dataconstants.h @@ -334,17 +334,17 @@ enum TelemetryUnit { enum TelemetryScreenType { TELEMETRY_SCREEN_TYPE_NONE, TELEMETRY_SCREEN_TYPE_VALUES, - TELEMETRY_SCREEN_TYPE_GAUGES, -#if defined(LUA) + TELEMETRY_SCREEN_TYPE_BARS, TELEMETRY_SCREEN_TYPE_SCRIPT, +#if defined(LUA) TELEMETRY_SCREEN_TYPE_MAX = TELEMETRY_SCREEN_TYPE_SCRIPT #else - TELEMETRY_SCREEN_TYPE_MAX = TELEMETRY_SCREEN_TYPE_GAUGES + TELEMETRY_SCREEN_TYPE_MAX = TELEMETRY_SCREEN_TYPE_BARS #endif }; #define MAX_TELEMETRY_SCREENS 4 #define TELEMETRY_SCREEN_TYPE(screenIndex) TelemetryScreenType((g_model.screensType >> (2*(screenIndex))) & 0x03) -#define IS_BARS_SCREEN(screenIndex) (TELEMETRY_SCREEN_TYPE(screenIndex) == TELEMETRY_SCREEN_TYPE_GAUGES) +#define IS_BARS_SCREEN(screenIndex) (TELEMETRY_SCREEN_TYPE(screenIndex) == TELEMETRY_SCREEN_TYPE_BARS) constexpr int16_t FAILSAFE_CHANNEL_HOLD = 2000; constexpr int16_t FAILSAFE_CHANNEL_NOPULSE = 2001; diff --git a/radio/src/gui/128x64/gui.h b/radio/src/gui/128x64/gui.h index 6a720068a..329a9c3a4 100644 --- a/radio/src/gui/128x64/gui.h +++ b/radio/src/gui/128x64/gui.h @@ -246,7 +246,6 @@ void readModelNotes(); #define IS_ROTARY_EVENT(evt) (EVT_KEY_MASK(evt) >= 0x0e) void repeatLastCursorMove(event_t event); #define REPEAT_LAST_CURSOR_MOVE() { if (EVT_KEY_MASK(event) >= 0x0e) putEvent(event); else repeatLastCursorMove(event); } - #define MOVE_CURSOR_FROM_HERE() if (menuHorizontalPosition > 0) REPEAT_LAST_CURSOR_MOVE() #else #define IS_ROTARY_LEFT(evt) (0) #define IS_ROTARY_RIGHT(evt) (0) @@ -255,7 +254,6 @@ void readModelNotes(); #define IS_ROTARY_EVENT(evt) (0) void repeatLastCursorMove(event_t event); #define REPEAT_LAST_CURSOR_MOVE() repeatLastCursorMove(event) - #define MOVE_CURSOR_FROM_HERE() if (menuHorizontalPosition > 0) REPEAT_LAST_CURSOR_MOVE() #endif // TODO enum diff --git a/radio/src/gui/128x64/model_display.cpp b/radio/src/gui/128x64/model_display.cpp index b9fe1b662..f138593e0 100644 --- a/radio/src/gui/128x64/model_display.cpp +++ b/radio/src/gui/128x64/model_display.cpp @@ -52,21 +52,44 @@ enum MenuModelDisplayItems { #endif #define DISPLAY_COL3 (17*FW+2) -#if defined(LUA) - #define SCREEN_TYPE_ROWS 1 - #define DISPLAY_LINE_ROWS(x) ((TELEMETRY_SCREEN_TYPE(x) == TELEMETRY_SCREEN_TYPE_NONE || TELEMETRY_SCREEN_TYPE(x) == TELEMETRY_SCREEN_TYPE_SCRIPT) ? HIDDEN_ROW : (TELEMETRY_SCREEN_TYPE(x) == TELEMETRY_SCREEN_TYPE_GAUGES ? (uint8_t)2 : (uint8_t)1)) -#else - #define SCREEN_TYPE_ROWS 0 - #define DISPLAY_LINE_ROWS(x) (TELEMETRY_SCREEN_TYPE(x) == TELEMETRY_SCREEN_TYPE_NONE ? HIDDEN_ROW : (TELEMETRY_SCREEN_TYPE(x) == TELEMETRY_SCREEN_TYPE_GAUGES ? (uint8_t)2 : (uint8_t)1)) -#endif - -#define TELEMETRY_SCREEN_ROWS(x) SCREEN_TYPE_ROWS, DISPLAY_LINE_ROWS(x), DISPLAY_LINE_ROWS(x), DISPLAY_LINE_ROWS(x), DISPLAY_LINE_ROWS(x) -#define TELEMETRY_CURRENT_SCREEN(k) (k < ITEM_DISPLAY_SCREEN_LABEL2 ? 0 : (k < ITEM_DISPLAY_SCREEN_LABEL3 ? 1 : (k < ITEM_DISPLAY_SCREEN_LABEL4 ? 2 : 3))) - -#if defined(LUA) -void onTelemetryScriptFileSelectionMenu(const char *result) +inline uint8_t SCREEN_TYPE_COLUMNS(uint8_t screenIndex) { - int screenIndex = TELEMETRY_CURRENT_SCREEN(menuVerticalPosition - HEADER_LINE); + if (TELEMETRY_SCREEN_TYPE(screenIndex) == TELEMETRY_SCREEN_TYPE_SCRIPT) + return 1; + else + return 0; +} + +inline uint8_t SCREEN_LINE_COLUMNS(uint8_t screenIndex, uint8_t lineIndex) +{ + switch (TELEMETRY_SCREEN_TYPE(screenIndex)) { + case TELEMETRY_SCREEN_TYPE_VALUES: + return 1; + case TELEMETRY_SCREEN_TYPE_BARS: + return g_model.screens[screenIndex].bars[lineIndex].source ? 2 : 0; + default: + return HIDDEN_ROW; + } +} + +#define TELEMETRY_SCREEN_ROWS(x) SCREEN_TYPE_COLUMNS(x), SCREEN_LINE_COLUMNS(x, 0), SCREEN_LINE_COLUMNS(x, 1), SCREEN_LINE_COLUMNS(x, 2), SCREEN_LINE_COLUMNS(x, 3) + +inline uint8_t DISPLAY_CURRENT_SCREEN(uint8_t line) +{ + if (line < ITEM_DISPLAY_SCREEN_LABEL2) + return 0; + else if (line < ITEM_DISPLAY_SCREEN_LABEL3) + return 1; + else if (line < ITEM_DISPLAY_SCREEN_LABEL4) + return 2; + else + return 3; +} + +#if defined(LUA) +void onTelemetryScriptFileSelectionMenu(const char * result) +{ + int screenIndex = DISPLAY_CURRENT_SCREEN(menuVerticalPosition - HEADER_LINE); if (result == STR_UPDATE_LIST) { if (!sdListFiles(SCRIPTS_TELEM_PATH, SCRIPTS_EXT, sizeof(g_model.screens[screenIndex].script.file), NULL)) { @@ -82,7 +105,6 @@ void onTelemetryScriptFileSelectionMenu(const char *result) } #endif - int skipHiddenLines(int noRows, const uint8_t * mstate_tab, int row) { for(int i=0; i0) { switch (menuHorizontalPosition) { case 0: diff --git a/radio/src/gui/128x64/radio_setup.cpp b/radio/src/gui/128x64/radio_setup.cpp index 6c85607dc..e3fd06bb3 100644 --- a/radio/src/gui/128x64/radio_setup.cpp +++ b/radio/src/gui/128x64/radio_setup.cpp @@ -643,7 +643,6 @@ void menuRadioSetup(event_t event) resumePulses(); waitKeysReleased(); } - MOVE_CURSOR_FROM_HERE(); break; } } diff --git a/radio/src/gui/212x64/gui.h b/radio/src/gui/212x64/gui.h index 7013ede4b..b4d7fbae2 100644 --- a/radio/src/gui/212x64/gui.h +++ b/radio/src/gui/212x64/gui.h @@ -280,7 +280,6 @@ void menuChannelsView(event_t event); #endif #define REPEAT_LAST_CURSOR_MOVE() { if (CURSOR_MOVED_LEFT(event) || CURSOR_MOVED_RIGHT(event)) putEvent(event); else menuHorizontalPosition = 0; } -#define MOVE_CURSOR_FROM_HERE() if (menuHorizontalPosition > 0) REPEAT_LAST_CURSOR_MOVE() #define MENU_FIRST_LINE_EDIT (menuTab ? (MAXCOL((uint16_t)0) >= HIDDEN_ROW ? (MAXCOL((uint16_t)1) >= HIDDEN_ROW ? 2 : 1) : 0) : 0) #define POS_HORZ_INIT(posVert) ((COLATTR(posVert) & NAVIGATION_LINE_BY_LINE) ? -1 : 0) diff --git a/radio/src/gui/212x64/model_display.cpp b/radio/src/gui/212x64/model_display.cpp index 857f9a7de..0e1da16d5 100644 --- a/radio/src/gui/212x64/model_display.cpp +++ b/radio/src/gui/212x64/model_display.cpp @@ -51,21 +51,44 @@ enum MenuModelDisplayItems { #define DISPLAY_COL2 (16*FW) #define DISPLAY_COL3 (28*FW+2) -#if defined(LUA) - #define SCREEN_TYPE_ROWS 1 - #define DISPLAY_LINE_ROWS(x) ((TELEMETRY_SCREEN_TYPE(x) == TELEMETRY_SCREEN_TYPE_NONE || TELEMETRY_SCREEN_TYPE(x) == TELEMETRY_SCREEN_TYPE_SCRIPT) ? HIDDEN_ROW : (uint8_t)2) -#else - #define SCREEN_TYPE_ROWS 0 - #define DISPLAY_LINE_ROWS(x) (TELEMETRY_SCREEN_TYPE(x) == TELEMETRY_SCREEN_TYPE_NONE ? HIDDEN_ROW : (uint8_t)2) -#endif -#define TELEMETRY_SCREEN_ROWS(x) SCREEN_TYPE_ROWS, DISPLAY_LINE_ROWS(x), DISPLAY_LINE_ROWS(x), DISPLAY_LINE_ROWS(x), DISPLAY_LINE_ROWS(x) +inline uint8_t SCREEN_TYPE_COLUMNS(uint8_t screenIndex) +{ + if (TELEMETRY_SCREEN_TYPE(screenIndex) == TELEMETRY_SCREEN_TYPE_SCRIPT) + return 1; + else + return 0; +} -#define TELEMETRY_CURRENT_SCREEN(k) (k < ITEM_DISPLAY_SCREEN_LABEL2 ? 0 : (k < ITEM_DISPLAY_SCREEN_LABEL3 ? 1 : (k < ITEM_DISPLAY_SCREEN_LABEL4 ? 2 : 3))) +inline uint8_t SCREEN_LINE_COLUMNS(uint8_t screenIndex, uint8_t lineIndex) +{ + switch (TELEMETRY_SCREEN_TYPE(screenIndex)) { + case TELEMETRY_SCREEN_TYPE_VALUES: + return 2; + case TELEMETRY_SCREEN_TYPE_BARS: + return g_model.screens[screenIndex].bars[lineIndex].source ? 2 : 0; + default: + return HIDDEN_ROW; + } +} + +#define TELEMETRY_SCREEN_ROWS(x) SCREEN_TYPE_COLUMNS(x), SCREEN_LINE_COLUMNS(x, 0), SCREEN_LINE_COLUMNS(x, 1), SCREEN_LINE_COLUMNS(x, 2), SCREEN_LINE_COLUMNS(x, 3) + +inline uint8_t DISPLAY_CURRENT_SCREEN(uint8_t line) +{ + if (line < ITEM_DISPLAY_SCREEN_LABEL2) + return 0; + else if (line < ITEM_DISPLAY_SCREEN_LABEL3) + return 1; + else if (line < ITEM_DISPLAY_SCREEN_LABEL4) + return 2; + else + return 3; +} #if defined(LUA) void onTelemetryScriptFileSelectionMenu(const char *result) { - int screenIndex = TELEMETRY_CURRENT_SCREEN(menuVerticalPosition); + int screenIndex = DISPLAY_CURRENT_SCREEN(menuVerticalPosition); if (result == STR_UPDATE_LIST) { if (!sdListFiles(SCRIPTS_TELEM_PATH, SCRIPTS_EXT, sizeof(g_model.screens[screenIndex].script.file), NULL)) { @@ -122,7 +145,7 @@ void menuModelDisplay(event_t event) case ITEM_DISPLAY_SCREEN_LABEL3: case ITEM_DISPLAY_SCREEN_LABEL4: { - uint8_t screenIndex = TELEMETRY_CURRENT_SCREEN(k); + uint8_t screenIndex = DISPLAY_CURRENT_SCREEN(k); drawStringWithIndex(0*FW, y, STR_SCREEN, screenIndex+1); TelemetryScreenType oldScreenType = TELEMETRY_SCREEN_TYPE(screenIndex); TelemetryScreenType newScreenType = (TelemetryScreenType)editChoice(DISPLAY_COL2, y, "", STR_VTELEMSCREENTYPE, oldScreenType, 0, TELEMETRY_SCREEN_TYPE_MAX, (menuHorizontalPosition==0 ? attr : 0), event); @@ -151,9 +174,6 @@ void menuModelDisplay(event_t event) } } } - else if (attr) { - MOVE_CURSOR_FROM_HERE(); - } #endif break; } @@ -195,7 +215,7 @@ void menuModelDisplay(event_t event) if (IS_BARS_SCREEN(screenIndex)) { FrSkyBarData & bar = g_model.screens[screenIndex].bars[lineIndex]; - drawSource(DISPLAY_COL1, y, bar.source, menuHorizontalPosition==0 ? attr : 0); + drawSource(DISPLAY_COL1, y, bar.source, menuHorizontalPosition == 0 ? attr : 0); int16_t barMax, barMin; LcdFlags lf = LEFT; getMixSrcRange(bar.source, barMin, barMax, &lf); @@ -209,9 +229,6 @@ void menuModelDisplay(event_t event) drawSourceCustomValue(DISPLAY_COL3, y, bar.source, bar.barMax, (menuHorizontalPosition==2 ? attr : 0) | lf); } } - else if (attr) { - MOVE_CURSOR_FROM_HERE(); - } if (attr && s_editMode>0) { switch (menuHorizontalPosition) { case 0: diff --git a/radio/src/storage/conversions/conversions_216_218.cpp b/radio/src/storage/conversions/conversions_216_218.cpp index ed1590026..6d9012e03 100644 --- a/radio/src/storage/conversions/conversions_216_218.cpp +++ b/radio/src/storage/conversions/conversions_216_218.cpp @@ -1226,7 +1226,7 @@ void convertModelData_217_to_218(ModelData &model) } } } - else if (((oldModel.frsky.screensType >> (2*i)) & 0x03) == TELEMETRY_SCREEN_TYPE_GAUGES) { + else if (((oldModel.frsky.screensType >> (2*i)) & 0x03) == TELEMETRY_SCREEN_TYPE_BARS) { for (int j = 0; j < 4; j++) { newModel.frsky.screens[i].bars[j].source = convertSource_217_to_218(oldModel.frsky.screens[i].bars[j].source); } diff --git a/radio/src/storage/conversions/conversions_218_219.cpp b/radio/src/storage/conversions/conversions_218_219.cpp index f6076917d..2352a7036 100644 --- a/radio/src/storage/conversions/conversions_218_219.cpp +++ b/radio/src/storage/conversions/conversions_218_219.cpp @@ -353,7 +353,7 @@ void convertModelData_218_to_219(ModelData &model) } } } - else if (screenType == TELEMETRY_SCREEN_TYPE_GAUGES) { + else if (screenType == TELEMETRY_SCREEN_TYPE_BARS) { for (int j = 0; j < 4; j++) { newModel.screens[i].bars[j].source = convertSource_218_to_219(oldModel.frsky.screens[i].bars[j].source); }