Added mechanism for specifying exactly what is read in the summary.
This commit is contained in:
parent
495b721231
commit
f8bfc7fb13
|
|
@ -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);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -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.
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -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,57 +209,71 @@ void vp_announceChannelSummary(const channel_t* channel,
|
||||||
{
|
{
|
||||||
localFlags |= vpqIncludeDescriptions;
|
localFlags |= vpqIncludeDescriptions;
|
||||||
}
|
}
|
||||||
|
if (infoFlags&vpSplashInfo)
|
||||||
|
vp_queueStringTableEntry(¤tLanguage->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 (channelNumber == 0)
|
if (infoFlags&vpChannelNameOrVFO)
|
||||||
{
|
{
|
||||||
vp_queuePrompt(PROMPT_VFO);
|
if (channelNumber == 0)
|
||||||
}
|
|
||||||
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)
|
|
||||||
{
|
{
|
||||||
vp_announceCTCSS(channel->fm.rxToneEn, channel->fm.rxTone,
|
vp_queuePrompt(PROMPT_VFO);
|
||||||
channel->fm.txToneEn, channel->fm.txTone, localFlags);
|
|
||||||
}
|
}
|
||||||
|
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
|
if (channel->fm.rxToneEn || channel->fm.txToneEn)
|
||||||
// ambiguity.
|
{
|
||||||
vp_announceTimeslot(channel->dmr.dmr_timeslot,
|
vp_announceCTCSS(channel->fm.rxToneEn, channel->fm.rxTone,
|
||||||
(localFlags | vpqIncludeDescriptions));
|
channel->fm.txToneEn, channel->fm.txTone, localFlags);
|
||||||
vp_announceColorCode(channel->dmr.rxColorCode, channel->dmr.txColorCode,
|
}
|
||||||
(localFlags | vpqIncludeDescriptions));
|
}
|
||||||
|
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);
|
if (infoFlags&vpPower)
|
||||||
float power = dBmToWatt(channel->power);
|
{
|
||||||
vp_anouncePower(power, localFlags);
|
float power = dBmToWatt(channel->power);
|
||||||
addSilenceIfNeeded(localFlags);
|
vp_anouncePower(power, 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:
|
||||||
|
|
|
||||||
|
|
@ -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(¤tLanguage->openRTX);
|
vpSummaryInfoFlags_t infoFlags = vpChannelNameOrVFO | vpFrequencies |
|
||||||
vp_play();
|
vpRadioMode | vpSplashInfo;
|
||||||
|
vp_announceChannelSummary(&state.channel, 0, 0, infoFlags);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1294,27 +1294,16 @@ 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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(input_isNumberPressed(msg))
|
else if(input_isNumberPressed(msg))
|
||||||
{
|
{
|
||||||
|
|
@ -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_index,
|
&state.channel,
|
||||||
state.bank);
|
state.channel_index,
|
||||||
|
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
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue