kopia lustrzana https://github.com/OpenRTX/OpenRTX
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
rodzic
579ce7baa5
commit
c0eba3866e
|
|
@ -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);
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -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(¤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()
|
||||
{
|
||||
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);
|
||||
ui_state.edit_mode = false;
|
||||
*sync_rtx = true;
|
||||
vp_announceBuffer(¤tLanguage->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(¤tLanguage->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(¤tLanguage->callsign,
|
||||
true, ui_state.new_callsign);
|
||||
}
|
||||
else if(msg.keys & KEY_ESC)
|
||||
_ui_menuBack(MENU_SETTINGS);
|
||||
|
|
|
|||
Ładowanie…
Reference in New Issue