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. * channelNumber is 1-based, channelIndex is 0-based.
*/ */
void vp_announceChannelSummary(const channel_t* channel, 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; 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. * 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, 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) if (channel == NULL)
return; return;
@ -208,9 +209,13 @@ void vp_announceChannelSummary(const channel_t* channel,
{ {
localFlags |= vpqIncludeDescriptions; localFlags |= vpqIncludeDescriptions;
} }
if (infoFlags&vpSplashInfo)
vp_queueStringTableEntry(&currentLanguage->openRTX);
// If VFO mode, announce VFO. // If VFO mode, announce VFO.
// channelNumber will be 0 if called from VFO mode. // channelNumber will be 0 if called from VFO mode.
if (infoFlags&vpChannelNameOrVFO)
{
if (channelNumber == 0) if (channelNumber == 0)
{ {
vp_queuePrompt(PROMPT_VFO); vp_queuePrompt(PROMPT_VFO);
@ -220,12 +225,18 @@ void vp_announceChannelSummary(const channel_t* channel,
vp_announceChannelName(channel, channelNumber, localFlags); vp_announceChannelName(channel, channelNumber, localFlags);
} }
addSilenceIfNeeded(localFlags); addSilenceIfNeeded(localFlags);
}
if (infoFlags&vpFrequencies)
vp_announceFrequencies(channel->rx_frequency, channel->tx_frequency, vp_announceFrequencies(channel->rx_frequency, channel->tx_frequency,
localFlags); localFlags);
if (infoFlags&vpRadioMode)
{
vp_announceRadioMode(channel->mode, localFlags); vp_announceRadioMode(channel->mode, localFlags);
addSilenceIfNeeded(localFlags); addSilenceIfNeeded(localFlags);
}
if (infoFlags&vpModeSpecificInfo)
{
if (channel->mode == OPMODE_FM) if (channel->mode == OPMODE_FM)
{ {
vp_announceBandwidth(channel->bandwidth, localFlags); vp_announceBandwidth(channel->bandwidth, localFlags);
@ -254,11 +265,15 @@ void vp_announceChannelSummary(const channel_t* channel,
} }
addSilenceIfNeeded(localFlags); addSilenceIfNeeded(localFlags);
}
if (infoFlags&vpPower)
{
float power = dBmToWatt(channel->power); float power = dBmToWatt(channel->power);
vp_anouncePower(power, localFlags); vp_anouncePower(power, localFlags);
addSilenceIfNeeded(localFlags); addSilenceIfNeeded(localFlags);
}
if (channelNumber > 0) // i.e. not called from VFO. if ((infoFlags&vpBankNameOrAllChannels) &&(channelNumber > 0)) // i.e. not called from VFO.
{ {
vp_announceBank(bank, localFlags); vp_announceBank(bank, localFlags);
} }
@ -740,14 +755,17 @@ void vp_announceSettingsInt(const char* const* stringTableStringPtr,
void vp_announceScreen(uint8_t ui_screen) void vp_announceScreen(uint8_t ui_screen)
{ {
const vpSummaryInfoFlags_t infoFlags = vpChannelNameOrVFO|vpFrequencies |
vpRadioMode;
switch (ui_screen) switch (ui_screen)
{ {
case MAIN_VFO: case MAIN_VFO:
vp_announceChannelSummary(&state.channel, 0, state.bank); vp_announceChannelSummary(&state.channel, 0, state.bank, infoFlags);
break; break;
case MAIN_MEM: case MAIN_MEM:
vp_announceChannelSummary(&state.channel, state.channel_index+1, vp_announceChannelSummary(&state.channel, state.channel_index+1,
state.bank); state.bank, infoFlags);
break; break;
#ifdef GPS_PRESENT #ifdef GPS_PRESENT
case MENU_GPS: case MENU_GPS:

View File

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

View File

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