Fixed announcement of channel number/name in summary and when changing channel.

This commit is contained in:
vk7js 2022-09-03 08:58:23 +10:00 committed by Silvano Seva
parent 30e8671044
commit 5ed0121780
3 changed files with 38 additions and 26 deletions

View File

@ -38,10 +38,10 @@ plays immediately.
/**
*
* Note: channelNumber is 1-based, index is 0-based.
*/
void vp_announceChannelName(const channel_t* channel,
const uint16_t channelIndex,
const uint16_t channelNumber,
const vpQueueFlags_t flags);
/**
@ -66,10 +66,10 @@ void vp_announceRadioMode(const uint8_t mode, const vpQueueFlags_t flags);
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 channelIndex, const uint16_t bank);
const uint16_t channelNumber, const uint16_t bank);
/**
*

View File

@ -73,7 +73,7 @@ static void removeUnnecessaryZerosFromVoicePrompts(char* str)
void vp_announceChannelName(const channel_t* channel,
const uint16_t channelIndex,
const uint16_t channelNumber,
const vpQueueFlags_t flags)
{
clearCurrPromptIfNeeded(flags);
@ -83,12 +83,12 @@ void vp_announceChannelName(const channel_t* channel,
vp_queuePrompt(PROMPT_CHANNEL);
}
vp_queueInteger(channelIndex);
vp_queueInteger(channelNumber);
// Only queue the name if it is not the same as the raw number.
// Otherwise the radio will say channel 1 1 for channel 1.
// Otherwise the radio will repeat channel 1 channel 1 for channel 1.
char numAsStr[16] = "\0";
snprintf(numAsStr, 16, "%d", channelIndex);
snprintf(numAsStr, 16, "Channel%d", channelNumber);
if (strcmp(numAsStr, channel->name) != 0)
{
@ -193,7 +193,7 @@ void vp_anouncePower(const float power, const vpQueueFlags_t flags)
}
void vp_announceChannelSummary(const channel_t* channel,
const uint16_t channelIndex, const uint16_t bank)
const uint16_t channelNumber, const uint16_t bank)
{
if (channel == NULL)
return;
@ -209,19 +209,21 @@ void vp_announceChannelSummary(const channel_t* channel,
}
// If VFO mode, announce VFO.
// channelIndex will be 0 if called from VFO mode.
if (channelIndex == 0)
// channelNumber will be 0 if called from VFO mode.
if (channelNumber == 0)
{
vp_queuePrompt(PROMPT_VFO);
}
else
{
vp_announceChannelName(channel, channelIndex, localFlags);
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)
{
@ -236,12 +238,10 @@ void vp_announceChannelSummary(const channel_t* channel,
}
else if (channel->mode == OPMODE_M17)
{
addSilenceIfNeeded(localFlags);
vp_announceM17Info(channel, localFlags);
}
else if (channel->mode == OPMODE_DMR)
{
addSilenceIfNeeded(localFlags);
vp_announceContactWithIndex(channel->dmr.contact_index, localFlags);
// Force announcement of the words timeslot and colorcode to avoid
@ -256,7 +256,7 @@ void vp_announceChannelSummary(const channel_t* channel,
vp_anouncePower(channel->power, localFlags);
addSilenceIfNeeded(localFlags);
if (channelIndex > 0) // i.e. not called from VFO.
if (channelNumber > 0) // i.e. not called from VFO.
{
vp_announceBank(bank, localFlags);
}
@ -740,7 +740,8 @@ void vp_announceScreen(uint8_t ui_screen)
vp_announceChannelSummary(&state.channel, 0, state.bank);
break;
case MAIN_MEM:
vp_announceChannelSummary(&state.channel, state.channel_index, state.bank);
vp_announceChannelSummary(&state.channel, state.channel_index+1,
state.bank);
break;
#ifdef GPS_PRESENT
case MENU_GPS:

View File

@ -1348,7 +1348,6 @@ void ui_updateFSM(bool *sync_rtx)
// M17 Destination callsign input
if(ui_state.edit_mode)
{
if(state.channel.mode == OPMODE_M17)
{
if(msg.keys & KEY_ENTER)
{
@ -1422,23 +1421,35 @@ 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)
announceChannelSummary(&state.channel, state.channel_index,
(vpqInit | vpqPlayImmediately));
else
ReplayLastPrompt();
f1Handled=true;
}
if (state.settings.vpLevel > vpBeep)
{// quick press repeat vp, long press summary.
if (msg.long_press)
{
vp_announceChannelSummary(&state.channel,
state.channel_index+1,
state.bank);
}
else
{
vp_replayLastPrompt();
}
f1Handled = true;
}
}
else if(msg.keys & KEY_UP || msg.keys & KNOB_RIGHT)
{
_ui_fsm_loadChannel(state.channel_index + 1, sync_rtx);
vp_announceChannelName(&state.channel,
state.channel_index+1,
queueFlags);
}
else if(msg.keys & KEY_DOWN || msg.keys & KNOB_LEFT)
{
_ui_fsm_loadChannel(state.channel_index - 1, sync_rtx);
vp_announceChannelName(&state.channel,
state.channel_index+1,
queueFlags);
}
}
break;