diff --git a/app/app.c b/app/app.c index 4738e4c..80dd7f1 100644 --- a/app/app.c +++ b/app/app.c @@ -1754,7 +1754,7 @@ static void APP_ProcessKey_FM(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld) FM_Key_DIGITS(Key, bKeyPressed, bKeyHeld); break; case KEY_MENU: - //FM_Key_MENU(bKeyPressed, bKeyHeld); + FM_Key_MENU(bKeyPressed, bKeyHeld); return; case KEY_UP: FM_Key_UP_DOWN(bKeyPressed, bKeyHeld, 1); diff --git a/app/fm.c b/app/fm.c index 0de62b9..c4d8ffb 100644 --- a/app/fm.c +++ b/app/fm.c @@ -344,6 +344,53 @@ void FM_Key_EXIT(bool bKeyPressed, bool bKeyHeld) gRequestDisplayScreen = DISPLAY_FM; } +void FM_Key_MENU(bool bKeyPressed, bool bKeyHeld) +{ + if (bKeyHeld) { + return; + } + if (!bKeyPressed) { + return; + } + + gRequestDisplayScreen = DISPLAY_FM; + gBeepToPlay = BEEP_1KHZ_60MS_OPTIONAL; + + if (gFM_Step == 0) { + if (!gEeprom.FM_IsChannelSelected) { + if (gAskToSave) { + gFM_Channels[gFM_ChannelPosition] = gEeprom.FM_FrequencyToPlay; + gAskToSave = false; + gRequestSaveFM = true; + } else { + gAskToSave = true; + } + } else { + if (gAskToDelete) { + gFM_Channels[gEeprom.FM_CurrentChannel] = 0xFFFF; + FM_ConfigureChannelState(); + BK1080_SetFrequency(gEeprom.FM_FrequencyToPlay); + gRequestSaveFM = true; + gAskToDelete = false; + } else { + gAskToDelete = true; + } + } + } else { + if (gFM_AutoScan || g_20000427 != 1) { + gBeepToPlay = BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL; + gInputBoxIndex = 0; + return; + } else if (gAskToSave) { + gFM_Channels[gFM_ChannelPosition] = gEeprom.FM_FrequencyToPlay; + gAskToSave = false; + gRequestSaveFM = true; + } else { + gAskToSave = true; + } + } +} + void FM_Key_UP_DOWN(bool bKeyPressed, bool bKeyHeld, int8_t Step) { if (bKeyHeld || !bKeyPressed) { diff --git a/app/fm.h b/app/fm.h index d29cf17..3894eac 100644 --- a/app/fm.h +++ b/app/fm.h @@ -37,6 +37,7 @@ int FM_CheckFrequencyLock(uint16_t Frequency, uint16_t LowerLimit); void FM_Key_DIGITS(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld); void FM_Key_EXIT(bool bKeyPressed, bool bKeyHeld); +void FM_Key_MENU(bool bKeyPressed, bool bKeyHeld); void FM_Key_UP_DOWN(bool bKeyPressed, bool bKeyHeld, int8_t Step); #endif