kopia lustrzana https://github.com/OpenRTX/OpenRTX
Refactored symbol handling to clean up code.
rodzic
1d7432ae3b
commit
88619dc682
|
|
@ -185,21 +185,42 @@ void vpQueuePrompt(uint16_t prompt)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool GetSymbolVPIfItShouldBeAnnounced(char symbol, VoicePromptFlags_T flags, voicePrompt_t* vp)
|
||||||
|
{
|
||||||
|
*vp=PROMPT_SILENCE;
|
||||||
|
|
||||||
|
const char indexedSymbols[] = "%.+-*#!,@:?()~/[]<>=$'`&|_^{}"; // Must match order of symbols in voicePrompt_t enum.
|
||||||
|
const char commonSymbols[] = "%.+-*#";
|
||||||
|
|
||||||
|
bool announceCommonSymbols = (flags & vpAnnounceCommonSymbols) ? true : false;
|
||||||
|
bool announceLessCommonSymbols=(flags & vpAnnounceLessCommonSymbols) ? true : false;
|
||||||
|
|
||||||
|
char* symbolPtr = strchr(indexedSymbols, symbol);
|
||||||
|
|
||||||
|
if (symbolPtr == NULL)
|
||||||
|
{// we don't have a prompt for this character.
|
||||||
|
return (flags&vpAnnounceASCIIValueForUnknownChars) ? true : false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool commonSymbol= strchr(commonSymbols, symbol) != NULL;
|
||||||
|
|
||||||
|
*vp = PROMPT_PERCENT+(symbolPtr-indexedSymbols);
|
||||||
|
|
||||||
|
return ((commonSymbol && announceCommonSymbols) || (!commonSymbol && announceLessCommonSymbols));
|
||||||
|
}
|
||||||
|
|
||||||
// This function spells out a string letter by letter.
|
// This function spells out a string letter by letter.
|
||||||
void vpQueueString(char *promptString, VoicePromptFlags_T flags)
|
void vpQueueString(char *promptString, VoicePromptFlags_T flags)
|
||||||
{
|
{
|
||||||
const char indexedSymbols[] = "%.+-*#!,@:?()~/[]<>=$'`&|_^{}"; // handles must match order of vps.
|
|
||||||
const char commonSymbols[] = "%.+-*#"; // handles must match order of vps.
|
|
||||||
|
|
||||||
if (voicePromptIsActive)
|
if (voicePromptIsActive)
|
||||||
{
|
{
|
||||||
vpInit();
|
vpInit();
|
||||||
}
|
}
|
||||||
bool announceCommonSymbols = (flags & vpAnnounceCommonSymbols) ? true : false;
|
|
||||||
bool announceLessCommonSymbols=(flags & vpAnnounceLessCommonSymbols) ? true : false;
|
|
||||||
|
|
||||||
while (*promptString != 0)
|
while (*promptString != 0)
|
||||||
{
|
{
|
||||||
|
voicePrompt_t vp = PROMPT_SILENCE;
|
||||||
|
|
||||||
if ((*promptString >= '0') && (*promptString <= '9'))
|
if ((*promptString >= '0') && (*promptString <= '9'))
|
||||||
{
|
{
|
||||||
vpQueuePrompt(*promptString - '0' + PROMPT_0);
|
vpQueuePrompt(*promptString - '0' + PROMPT_0);
|
||||||
|
|
@ -224,32 +245,16 @@ void vpQueueString(char *promptString, VoicePromptFlags_T flags)
|
||||||
{
|
{
|
||||||
vpQueuePrompt(PROMPT_SPACE);
|
vpQueuePrompt(PROMPT_SPACE);
|
||||||
}
|
}
|
||||||
else if (announceCommonSymbols || announceLessCommonSymbols)
|
else if (GetSymbolVPIfItShouldBeAnnounced(*promptString, flags, &vp))
|
||||||
{
|
{
|
||||||
char* symbolPtr = strchr(indexedSymbols, *promptString);
|
if (vp != PROMPT_SILENCE)
|
||||||
if (symbolPtr != NULL)
|
vpQueuePrompt(vp);
|
||||||
{
|
else // announce ASCII
|
||||||
bool commonSymbol= strchr(commonSymbols, *symbolPtr) != NULL;
|
|
||||||
|
|
||||||
if ((commonSymbol && announceCommonSymbols) || (!commonSymbol && announceLessCommonSymbols))
|
|
||||||
{
|
|
||||||
vpQueuePrompt(PROMPT_PERCENT+(symbolPtr-indexedSymbols));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
vpQueuePrompt(PROMPT_SILENCE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (flags&vpAnnounceASCIIValueForUnknownChars)
|
|
||||||
{
|
{
|
||||||
int32_t val = *promptString;
|
int32_t val = *promptString;
|
||||||
vpQueueLanguageString(¤tLanguage->dtmf_code); // just the word "code" as we don't have character.
|
vpQueueLanguageString(¤tLanguage->dtmf_code); // just the word "code" as we don't have character.
|
||||||
vpQueueInteger(val);
|
vpQueueInteger(val);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
vpQueuePrompt(PROMPT_SILENCE);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Ładowanie…
Reference in New Issue