Add new "VFO/MR" configurable button function
This commit is contained in:
@@ -437,5 +437,8 @@ void ACTION_Handle(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
|
|||||||
case ACTION_OPT_A_B:
|
case ACTION_OPT_A_B:
|
||||||
COMMON_SwitchVFOs();
|
COMMON_SwitchVFOs();
|
||||||
break;
|
break;
|
||||||
|
case ACTION_OPT_VFO_MR:
|
||||||
|
COMMON_SwitchVFOMode();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
35
app/common.c
35
app/common.c
@@ -35,3 +35,38 @@ void COMMON_SwitchVFOs()
|
|||||||
|
|
||||||
gRequestDisplayScreen = DISPLAY_MAIN;
|
gRequestDisplayScreen = DISPLAY_MAIN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void COMMON_SwitchVFOMode()
|
||||||
|
{
|
||||||
|
#ifdef ENABLE_NOAA
|
||||||
|
if (gEeprom.VFO_OPEN && IS_NOT_NOAA_CHANNEL(gTxVfo->CHANNEL_SAVE))
|
||||||
|
#else
|
||||||
|
if (gEeprom.VFO_OPEN)
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
if (IS_MR_CHANNEL(gTxVfo->CHANNEL_SAVE))
|
||||||
|
{ // swap to frequency mode
|
||||||
|
gEeprom.ScreenChannel[gEeprom.TX_VFO] = gEeprom.FreqChannel[gEeprom.TX_VFO];
|
||||||
|
#ifdef ENABLE_VOICE
|
||||||
|
gAnotherVoiceID = VOICE_ID_FREQUENCY_MODE;
|
||||||
|
#endif
|
||||||
|
gRequestSaveVFO = true;
|
||||||
|
gVfoConfigureMode = VFO_CONFIGURE_RELOAD;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t Channel = RADIO_FindNextChannel(gEeprom.MrChannel[gEeprom.TX_VFO], 1, false, 0);
|
||||||
|
if (Channel != 0xFF)
|
||||||
|
{ // swap to channel mode
|
||||||
|
gEeprom.ScreenChannel[gEeprom.TX_VFO] = Channel;
|
||||||
|
#ifdef ENABLE_VOICE
|
||||||
|
AUDIO_SetVoiceID(0, VOICE_ID_CHANNEL_MODE);
|
||||||
|
AUDIO_SetDigitVoice(1, Channel + 1);
|
||||||
|
gAnotherVoiceID = (VOICE_ID_t)0xFE;
|
||||||
|
#endif
|
||||||
|
gRequestSaveVFO = true;
|
||||||
|
gVfoConfigureMode = VFO_CONFIGURE_RELOAD;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -8,5 +8,6 @@
|
|||||||
|
|
||||||
void COMMON_KeypadLockToggle();
|
void COMMON_KeypadLockToggle();
|
||||||
void COMMON_SwitchVFOs();
|
void COMMON_SwitchVFOs();
|
||||||
|
void COMMON_SwitchVFOMode();
|
||||||
|
|
||||||
#endif
|
#endif
|
32
app/main.c
32
app/main.c
@@ -183,37 +183,7 @@ static void processFKeyFunction(const KEY_Code_t Key, const bool beep)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case KEY_3:
|
case KEY_3:
|
||||||
#ifdef ENABLE_NOAA
|
COMMON_SwitchVFOMode();
|
||||||
if (gEeprom.VFO_OPEN && IS_NOT_NOAA_CHANNEL(gTxVfo->CHANNEL_SAVE))
|
|
||||||
#else
|
|
||||||
if (gEeprom.VFO_OPEN)
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
if (IS_MR_CHANNEL(gTxVfo->CHANNEL_SAVE))
|
|
||||||
{ // swap to frequency mode
|
|
||||||
gEeprom.ScreenChannel[Vfo] = gEeprom.FreqChannel[gEeprom.TX_VFO];
|
|
||||||
#ifdef ENABLE_VOICE
|
|
||||||
gAnotherVoiceID = VOICE_ID_FREQUENCY_MODE;
|
|
||||||
#endif
|
|
||||||
gRequestSaveVFO = true;
|
|
||||||
gVfoConfigureMode = VFO_CONFIGURE_RELOAD;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint8_t Channel = RADIO_FindNextChannel(gEeprom.MrChannel[gEeprom.TX_VFO], 1, false, 0);
|
|
||||||
if (Channel != 0xFF)
|
|
||||||
{ // swap to channel mode
|
|
||||||
gEeprom.ScreenChannel[Vfo] = Channel;
|
|
||||||
#ifdef ENABLE_VOICE
|
|
||||||
AUDIO_SetVoiceID(0, VOICE_ID_CHANNEL_MODE);
|
|
||||||
AUDIO_SetDigitVoice(1, Channel + 1);
|
|
||||||
gAnotherVoiceID = (VOICE_ID_t)0xFE;
|
|
||||||
#endif
|
|
||||||
gRequestSaveVFO = true;
|
|
||||||
gVfoConfigureMode = VFO_CONFIGURE_RELOAD;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (beep)
|
if (beep)
|
||||||
gBeepToPlay = BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL;
|
gBeepToPlay = BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL;
|
||||||
|
@@ -82,6 +82,7 @@ enum {
|
|||||||
ACTION_OPT_1750,
|
ACTION_OPT_1750,
|
||||||
ACTION_OPT_KEYLOCK,
|
ACTION_OPT_KEYLOCK,
|
||||||
ACTION_OPT_A_B,
|
ACTION_OPT_A_B,
|
||||||
|
ACTION_OPT_VFO_MR,
|
||||||
ACTION_OPT_LEN
|
ACTION_OPT_LEN
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -351,6 +351,7 @@ const t_sidefunction SIDEFUNCTIONS[] =
|
|||||||
#endif
|
#endif
|
||||||
{"LOCK\nKEYPAD", ACTION_OPT_KEYLOCK},
|
{"LOCK\nKEYPAD", ACTION_OPT_KEYLOCK},
|
||||||
{"SWITCH\nVFO", ACTION_OPT_A_B},
|
{"SWITCH\nVFO", ACTION_OPT_A_B},
|
||||||
|
{"VFO/MR", ACTION_OPT_VFO_MR},
|
||||||
};
|
};
|
||||||
const t_sidefunction* gSubMenu_SIDEFUNCTIONS = SIDEFUNCTIONS;
|
const t_sidefunction* gSubMenu_SIDEFUNCTIONS = SIDEFUNCTIONS;
|
||||||
const uint8_t gSubMenu_SIDEFUNCTIONS_size = ARRAY_SIZE(SIDEFUNCTIONS);
|
const uint8_t gSubMenu_SIDEFUNCTIONS_size = ARRAY_SIZE(SIDEFUNCTIONS);
|
||||||
|
Reference in New Issue
Block a user