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.
This commit is contained in:
parent
579ce7baa5
commit
c0eba3866e
|
|
@ -202,6 +202,13 @@ void vp_announceSettingsInt(const char* const* stringTableStringPtr,
|
||||||
*/
|
*/
|
||||||
void vp_announceScreen(uint8_t ui_screen);
|
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);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -271,8 +271,7 @@ void vp_announceInputChar(const char ch)
|
||||||
|
|
||||||
vp_flush();
|
vp_flush();
|
||||||
|
|
||||||
uint8_t flags = vpAnnounceCaps
|
uint8_t flags = vpAnnounceSpace
|
||||||
| vpAnnounceSpace
|
|
||||||
| vpAnnounceCommonSymbols
|
| vpAnnounceCommonSymbols
|
||||||
| vpAnnounceLessCommonSymbols;
|
| vpAnnounceLessCommonSymbols;
|
||||||
|
|
||||||
|
|
@ -749,9 +748,38 @@ void vp_announceScreen(uint8_t ui_screen)
|
||||||
case SETTINGS_TIMEDATE:
|
case SETTINGS_TIMEDATE:
|
||||||
vp_announceSettingsTimeDate();
|
vp_announceSettingsTimeDate();
|
||||||
break;
|
break;
|
||||||
|
case SETTINGS_M17:
|
||||||
|
vp_announceBuffer(¤tLanguage->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()
|
vpQueueFlags_t vp_getVoiceLevelQueueFlags()
|
||||||
{
|
{
|
||||||
uint8_t vpLevel = state.settings.vpLevel;
|
uint8_t vpLevel = state.settings.vpLevel;
|
||||||
|
|
|
||||||
|
|
@ -1840,6 +1840,8 @@ void ui_updateFSM(bool *sync_rtx)
|
||||||
strncpy(state.settings.callsign, ui_state.new_callsign, 10);
|
strncpy(state.settings.callsign, ui_state.new_callsign, 10);
|
||||||
ui_state.edit_mode = false;
|
ui_state.edit_mode = false;
|
||||||
*sync_rtx = true;
|
*sync_rtx = true;
|
||||||
|
vp_announceBuffer(¤tLanguage->callsign,
|
||||||
|
false, state.settings.callsign);
|
||||||
}
|
}
|
||||||
else if(msg.keys & KEY_ESC)
|
else if(msg.keys & KEY_ESC)
|
||||||
// Discard selected callsign and disable input mode
|
// Discard selected callsign and disable input mode
|
||||||
|
|
@ -1849,6 +1851,12 @@ void ui_updateFSM(bool *sync_rtx)
|
||||||
_ui_textInputDel(ui_state.new_callsign);
|
_ui_textInputDel(ui_state.new_callsign);
|
||||||
else if(input_isNumberPressed(msg))
|
else if(input_isNumberPressed(msg))
|
||||||
_ui_textInputKeypad(ui_state.new_callsign, 9, msg, true);
|
_ui_textInputKeypad(ui_state.new_callsign, 9, msg, true);
|
||||||
|
else if (msg.long_press && (msg.keys & KEY_F1) && (state.settings.vpLevel > vpBeep))
|
||||||
|
{
|
||||||
|
vp_announceBuffer(¤tLanguage->callsign,
|
||||||
|
true, ui_state.new_callsign);
|
||||||
|
f1Handled=true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -1858,6 +1866,8 @@ void ui_updateFSM(bool *sync_rtx)
|
||||||
ui_state.edit_mode = true;
|
ui_state.edit_mode = true;
|
||||||
// Reset text input variables
|
// Reset text input variables
|
||||||
_ui_textInputReset(ui_state.new_callsign);
|
_ui_textInputReset(ui_state.new_callsign);
|
||||||
|
vp_announceBuffer(¤tLanguage->callsign,
|
||||||
|
true, ui_state.new_callsign);
|
||||||
}
|
}
|
||||||
else if(msg.keys & KEY_ESC)
|
else if(msg.keys & KEY_ESC)
|
||||||
_ui_menuBack(MENU_SETTINGS);
|
_ui_menuBack(MENU_SETTINGS);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue