Fixed voice prompt bugs

Fixed following voice prompt bugs:
1. Now say OpenRTX when powering on if vp enabled to let user know radio is on.
2. When switching back to VFO or channel mode from menus, now anounce VFO info or channel info.
3. When entering first digit of frequency in VFO input mode, say it.
4. Refixed issue of concatenating menus rather than clearing menu.
This commit is contained in:
Silvano Seva 2022-08-29 21:35:44 +02:00
parent 1383e3d61e
commit d81a4220d1
3 changed files with 28 additions and 3 deletions

View File

@ -279,6 +279,12 @@ void vp_init()
// Initialize codec2 module // Initialize codec2 module
codec_init(); codec_init();
if (state.settings.vpLevel > vpBeep)
{
vp_queueStringTableEntry(&currentLanguage->openRTX);
vp_play();
}
} }
void vp_terminate() void vp_terminate()

View File

@ -1169,6 +1169,8 @@ void ui_updateFSM(bool *sync_rtx)
{ {
macro_menu = false; macro_menu = false;
} }
int priorUIScreen = state.ui_screen;
switch(state.ui_screen) switch(state.ui_screen)
{ {
// VFO screen // VFO screen
@ -1905,6 +1907,20 @@ void ui_updateFSM(bool *sync_rtx)
{ {
vp_replayLastPrompt(); vp_replayLastPrompt();
} }
else if ((priorUIScreen!=state.ui_screen) && state.settings.vpLevel > vpLow)
{
// When we switch to VFO or Channel screen, we need to announce it.
// All other cases are handled as needed.
if (state.ui_screen == MAIN_VFO)
{
vp_announceChannelSummary(&state.channel, 0, state.bank);
}
else if (state.ui_screen == MAIN_MEM)
{
vp_announceChannelSummary(&state.channel, state.channel_index,
state.bank);
}
}
} }
else if(event.type == EVENT_STATUS) else if(event.type == EVENT_STATUS)
{ {

View File

@ -103,14 +103,17 @@ static void announceMenuItemIfNeeded(char* name, char* value)
// prompt if arrowing rapidly. // prompt if arrowing rapidly.
bool voicePromptWasPlaying = vp_isPlaying(); bool voicePromptWasPlaying = vp_isPlaying();
// Stop any prompt in progress and clear the buffer. // Stop any prompt in progress and/or clear the buffer.
if (voicePromptWasPlaying) vp_clearCurrPrompt();
vp_clearCurrPrompt();
// If no value is supplied, or, no prompt is in progress, announce the name. // If no value is supplied, or, no prompt is in progress, announce the name.
if ((voicePromptWasPlaying == false) || (value == NULL) || (*value == '\0')) if ((voicePromptWasPlaying == false) || (value == NULL) || (*value == '\0'))
vp_announceText(name, vpqDefault); vp_announceText(name, vpqDefault);
// This is a top-level menu rather than a menu/value pair.
if (value == NULL)
vp_queueStringTableEntry(&currentLanguage->menu);
if ((value != NULL) && (*value != '\0')) if ((value != NULL) && (*value != '\0'))
vp_announceText(value, vpqDefault); vp_announceText(value, vpqDefault);