Added voice feedback for the M17 Settings Menu:

1. Added vp_announceBuffer to speak a prompt, edit mode and string buffer.
2. Added logic to the vp_announceScreen for m17Settings read-only mode.
3. Added logic for handling edit mode.
4. Removed vpCaps flag from several places because it is irrelevant when input only supports caps.
md1702
vk7js 2022-09-05 21:01:58 +10:00 zatwierdzone przez Silvano Seva
rodzic 579ce7baa5
commit c0eba3866e
3 zmienionych plików z 47 dodań i 2 usunięć

Wyświetl plik

@ -202,6 +202,13 @@ void vp_announceSettingsInt(const char* const* stringTableStringPtr,
*/
void vp_announceScreen(uint8_t ui_screen);
/**
* This function is called from ui_updateFSM to speak string buffers.
*/
void vp_announceBuffer(const char* const* stringTableStringPtr, bool editMode,
const char* buffer);
/**
*
*/

Wyświetl plik

@ -271,8 +271,7 @@ void vp_announceInputChar(const char ch)
vp_flush();
uint8_t flags = vpAnnounceCaps
| vpAnnounceSpace
uint8_t flags = vpAnnounceSpace
| vpAnnounceCommonSymbols
| vpAnnounceLessCommonSymbols;
@ -749,9 +748,38 @@ void vp_announceScreen(uint8_t ui_screen)
case SETTINGS_TIMEDATE:
vp_announceSettingsTimeDate();
break;
case SETTINGS_M17:
vp_announceBuffer(&currentLanguage->callsign,
false, state.settings.callsign);
break;
}
}
void vp_announceBuffer(const char* const* stringTableStringPtr, bool editMode,
const char* buffer)
{
bool isPlaying=vp_isPlaying();
vp_flush();
if (!isPlaying)
{
vp_queueStringTableEntry(stringTableStringPtr);
if (editMode)
vp_queuePrompt(PROMPT_EDIT);
}
vpFlags_t flags= vpAnnounceCommonSymbols;
// add edit mode flags to adjust what is spoken.
if (editMode)
flags |= vpAnnounceLessCommonSymbols | vpAnnounceSpace | vpAnnounceASCIIValueForUnknownChars;
vp_queueString(buffer, flags);
vp_play();
}
vpQueueFlags_t vp_getVoiceLevelQueueFlags()
{
uint8_t vpLevel = state.settings.vpLevel;

Wyświetl plik

@ -1840,6 +1840,8 @@ void ui_updateFSM(bool *sync_rtx)
strncpy(state.settings.callsign, ui_state.new_callsign, 10);
ui_state.edit_mode = false;
*sync_rtx = true;
vp_announceBuffer(&currentLanguage->callsign,
false, state.settings.callsign);
}
else if(msg.keys & KEY_ESC)
// Discard selected callsign and disable input mode
@ -1849,6 +1851,12 @@ void ui_updateFSM(bool *sync_rtx)
_ui_textInputDel(ui_state.new_callsign);
else if(input_isNumberPressed(msg))
_ui_textInputKeypad(ui_state.new_callsign, 9, msg, true);
else if (msg.long_press && (msg.keys & KEY_F1) && (state.settings.vpLevel > vpBeep))
{
vp_announceBuffer(&currentLanguage->callsign,
true, ui_state.new_callsign);
f1Handled=true;
}
}
else
{
@ -1858,6 +1866,8 @@ void ui_updateFSM(bool *sync_rtx)
ui_state.edit_mode = true;
// Reset text input variables
_ui_textInputReset(ui_state.new_callsign);
vp_announceBuffer(&currentLanguage->callsign,
true, ui_state.new_callsign);
}
else if(msg.keys & KEY_ESC)
_ui_menuBack(MENU_SETTINGS);