diff --git a/openrtx/include/ui/ui_default.h b/openrtx/include/ui/ui_default.h index 775d120c..755302a2 100644 --- a/openrtx/include/ui/ui_default.h +++ b/openrtx/include/ui/ui_default.h @@ -207,8 +207,8 @@ typedef struct ui_state_t ui_state_t; extern layout_t layout; -// Copy of the radio state extern state_t last_state; +extern bool macro_latched; extern const char *menu_items[]; extern const char *settings_items[]; extern const char *display_items[]; diff --git a/openrtx/src/ui/default/ui.c b/openrtx/src/ui/default/ui.c index 435fed40..d30a4704 100644 --- a/openrtx/src/ui/default/ui.c +++ b/openrtx/src/ui/default/ui.c @@ -256,6 +256,7 @@ const color_t yellow_fab413 = {250, 180, 19, 255}; layout_t layout; state_t last_state; +bool macro_latched; static ui_state_t ui_state; static bool macro_menu = false; static bool layout_ready = false; @@ -1268,17 +1269,19 @@ void ui_updateFSM(bool *sync_rtx) // If MONI is pressed, activate MACRO functions bool moniPressed = (msg.keys & KEY_MONI) ? true : false; - if(moniPressed || FunctionKeyIsLatched()) + if(moniPressed || macro_latched) { macro_menu = true; // long press moni on its own latches function. - if (moniPressed && msg.long_press && !input_getPressedNumber(msg)) + if (moniPressed && msg.long_press && !macro_latched) { - SetFunctionLatchTimer(); // 3000 ms. + macro_latched = true; + vp_beep(BEEP_FUNCTION_LATCH_ON, LONG_BEEP); } - else + else if (moniPressed && macro_latched) { - ReleaseFunctionLatchIfNeeded(); + macro_latched = false; + vp_beep(BEEP_FUNCTION_LATCH_OFF, LONG_BEEP); } _ui_fsm_menuMacro(msg, sync_rtx); return; diff --git a/openrtx/src/ui/default/ui_menu.c b/openrtx/src/ui/default/ui_menu.c index 71370ff3..1151fb89 100644 --- a/openrtx/src/ui/default/ui_menu.c +++ b/openrtx/src/ui/default/ui_menu.c @@ -877,6 +877,11 @@ bool _ui_drawMacroMenu() // Header gfx_print(layout.top_pos, layout.top_font, TEXT_ALIGN_CENTER, color_white, currentLanguage->macroMenu); + if (macro_latched) + { + gfx_print(layout.top_pos, layout.top_font, TEXT_ALIGN_LEFT, + color_white, "L"); + } // First row if (last_state.channel.mode == OPMODE_FM) {