Added mechanism for specifying exactly what is read in the summary.

This commit is contained in:
vk7js 2022-09-06 22:07:56 +10:00 committed by Silvano Seva
parent 495b721231
commit f8bfc7fb13
5 changed files with 89 additions and 64 deletions

View File

@ -69,7 +69,8 @@ void vp_announceBandwidth(const uint8_t bandwidth, const vpQueueFlags_t flags);
* channelNumber is 1-based, channelIndex is 0-based.
*/
void vp_announceChannelSummary(const channel_t* channel,
const uint16_t channelNumber, const uint16_t bank);
const uint16_t channelNumber, const uint16_t bank,
const vpSummaryInfoFlags_t infoFlags);
/**
*

View File

@ -228,6 +228,20 @@ typedef enum
}
VoicePromptVerbosity_T;
typedef enum
{
vpChannelNameOrVFO = 0x01,
vpFrequencies = 0x02,
vpRadioMode = 0x04,
vpModeSpecificInfo = 0x08,
vpPower = 0x10,
vpBankNameOrAllChannels = 0x20,
vpSplashInfo = 0x40,
vpAllInfoExceptSplash = 0x3f,
vpAllInfo = 0xff
}
vpSummaryInfoFlags_t;
/**
* Initialise the voice prompt system and load vp table of contents.
*/

View File

@ -194,7 +194,8 @@ void vp_anouncePower(const float power, const vpQueueFlags_t flags)
}
void vp_announceChannelSummary(const channel_t* channel,
const uint16_t channelNumber, const uint16_t bank)
const uint16_t channelNumber, const uint16_t bank,
const vpSummaryInfoFlags_t infoFlags)
{
if (channel == NULL)
return;
@ -208,57 +209,71 @@ void vp_announceChannelSummary(const channel_t* channel,
{
localFlags |= vpqIncludeDescriptions;
}
if (infoFlags&vpSplashInfo)
vp_queueStringTableEntry(&currentLanguage->openRTX);
// If VFO mode, announce VFO.
// channelNumber will be 0 if called from VFO mode.
if (channelNumber == 0)
if (infoFlags&vpChannelNameOrVFO)
{
vp_queuePrompt(PROMPT_VFO);
}
else
{
vp_announceChannelName(channel, channelNumber, localFlags);
}
addSilenceIfNeeded(localFlags);
vp_announceFrequencies(channel->rx_frequency, channel->tx_frequency,
localFlags);
vp_announceRadioMode(channel->mode, localFlags);
addSilenceIfNeeded(localFlags);
if (channel->mode == OPMODE_FM)
{
vp_announceBandwidth(channel->bandwidth, localFlags);
addSilenceIfNeeded(localFlags);
if (channel->fm.rxToneEn || channel->fm.txToneEn)
if (channelNumber == 0)
{
vp_announceCTCSS(channel->fm.rxToneEn, channel->fm.rxTone,
channel->fm.txToneEn, channel->fm.txTone, localFlags);
vp_queuePrompt(PROMPT_VFO);
}
else
{
vp_announceChannelName(channel, channelNumber, localFlags);
}
addSilenceIfNeeded(localFlags);
}
else if (channel->mode == OPMODE_M17)
if (infoFlags&vpFrequencies)
vp_announceFrequencies(channel->rx_frequency, channel->tx_frequency,
localFlags);
if (infoFlags&vpRadioMode)
{
vp_announceM17Info(channel, localFlags);
vp_announceRadioMode(channel->mode, localFlags);
addSilenceIfNeeded(localFlags);
}
else if (channel->mode == OPMODE_DMR)
if (infoFlags&vpModeSpecificInfo)
{
vp_announceContactWithIndex(channel->dmr.contact_index, localFlags);
if (channel->mode == OPMODE_FM)
{
vp_announceBandwidth(channel->bandwidth, localFlags);
addSilenceIfNeeded(localFlags);
// Force announcement of the words timeslot and colorcode to avoid
// ambiguity.
vp_announceTimeslot(channel->dmr.dmr_timeslot,
(localFlags | vpqIncludeDescriptions));
vp_announceColorCode(channel->dmr.rxColorCode, channel->dmr.txColorCode,
(localFlags | vpqIncludeDescriptions));
if (channel->fm.rxToneEn || channel->fm.txToneEn)
{
vp_announceCTCSS(channel->fm.rxToneEn, channel->fm.rxTone,
channel->fm.txToneEn, channel->fm.txTone, localFlags);
}
}
else if (channel->mode == OPMODE_M17)
{
vp_announceM17Info(channel, localFlags);
}
else if (channel->mode == OPMODE_DMR)
{
vp_announceContactWithIndex(channel->dmr.contact_index, localFlags);
// Force announcement of the words timeslot and colorcode to avoid
// ambiguity.
vp_announceTimeslot(channel->dmr.dmr_timeslot,
(localFlags | vpqIncludeDescriptions));
vp_announceColorCode(channel->dmr.rxColorCode, channel->dmr.txColorCode,
(localFlags | vpqIncludeDescriptions));
}
addSilenceIfNeeded(localFlags);
}
addSilenceIfNeeded(localFlags);
float power = dBmToWatt(channel->power);
vp_anouncePower(power, localFlags);
addSilenceIfNeeded(localFlags);
if (channelNumber > 0) // i.e. not called from VFO.
if (infoFlags&vpPower)
{
float power = dBmToWatt(channel->power);
vp_anouncePower(power, localFlags);
addSilenceIfNeeded(localFlags);
}
if ((infoFlags&vpBankNameOrAllChannels) &&(channelNumber > 0)) // i.e. not called from VFO.
{
vp_announceBank(bank, localFlags);
}
@ -740,14 +755,17 @@ void vp_announceSettingsInt(const char* const* stringTableStringPtr,
void vp_announceScreen(uint8_t ui_screen)
{
const vpSummaryInfoFlags_t infoFlags = vpChannelNameOrVFO|vpFrequencies |
vpRadioMode;
switch (ui_screen)
{
case MAIN_VFO:
vp_announceChannelSummary(&state.channel, 0, state.bank);
vp_announceChannelSummary(&state.channel, 0, state.bank, infoFlags);
break;
case MAIN_MEM:
vp_announceChannelSummary(&state.channel, state.channel_index+1,
state.bank);
state.bank, infoFlags);
break;
#ifdef GPS_PRESENT
case MENU_GPS:

View File

@ -282,9 +282,10 @@ void vp_init()
codec_init();
if (state.settings.vpLevel > vpBeep)
{
vp_queueStringTableEntry(&currentLanguage->openRTX);
vp_play();
{// announce the splash msg and VFO.
vpSummaryInfoFlags_t infoFlags = vpChannelNameOrVFO | vpFrequencies |
vpRadioMode | vpSplashInfo;
vp_announceChannelSummary(&state.channel, 0, 0, infoFlags);
}
}

View File

@ -1294,27 +1294,16 @@ void ui_updateFSM(bool *sync_rtx)
}
}
else if(msg.keys & KEY_F1)
{
if (state.settings.vpLevel > vpBeep)
{// quick press repeat vp, long press summary.
if (msg.long_press)
vp_announceChannelSummary(&state.channel, 0, state.bank);
else
vp_replayLastPrompt();
f1Handled = true;
}
}
else if(msg.keys & KEY_F1)
{
if (state.settings.vpLevel > vpBeep)
{// quick press repeat vp, long press summary.
if (msg.long_press)
vp_announceChannelSummary(&state.channel, 0,
state.bank);
state.bank, vpAllInfoExceptSplash);
else
vp_replayLastPrompt();
f1Handled = true;
}
f1Handled = true;
}
}
else if(input_isNumberPressed(msg))
{
@ -1398,9 +1387,11 @@ void ui_updateFSM(bool *sync_rtx)
// Quick press repeat vp, long press summary.
if (msg.long_press)
{
vp_announceChannelSummary(&state.channel,
state.channel_index,
state.bank);
vp_announceChannelSummary(
&state.channel,
state.channel_index,
state.bank,
vpAllInfoExceptSplash);
}
else
{
@ -1451,7 +1442,7 @@ void ui_updateFSM(bool *sync_rtx)
{
vp_announceChannelSummary(&state.channel,
state.channel_index+1,
state.bank);
state.bank, vpAllInfoExceptSplash);
}
else
{