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, void vp_announceChannelName(const channel_t* channel,
const uint16_t channelIndex, const uint16_t channelNumber,
const vpQueueFlags_t flags); 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); 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, 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, void vp_announceChannelName(const channel_t* channel,
const uint16_t channelIndex, const uint16_t channelNumber,
const vpQueueFlags_t flags) const vpQueueFlags_t flags)
{ {
clearCurrPromptIfNeeded(flags); clearCurrPromptIfNeeded(flags);
@ -83,12 +83,12 @@ void vp_announceChannelName(const channel_t* channel,
vp_queuePrompt(PROMPT_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. // 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"; char numAsStr[16] = "\0";
snprintf(numAsStr, 16, "%d", channelIndex); snprintf(numAsStr, 16, "Channel%d", channelNumber);
if (strcmp(numAsStr, channel->name) != 0) 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, 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) if (channel == NULL)
return; return;
@ -209,19 +209,21 @@ void vp_announceChannelSummary(const channel_t* channel,
} }
// If VFO mode, announce VFO. // If VFO mode, announce VFO.
// channelIndex will be 0 if called from VFO mode. // channelNumber will be 0 if called from VFO mode.
if (channelIndex == 0) if (channelNumber == 0)
{ {
vp_queuePrompt(PROMPT_VFO); vp_queuePrompt(PROMPT_VFO);
} }
else else
{ {
vp_announceChannelName(channel, channelIndex, localFlags); vp_announceChannelName(channel, channelNumber, localFlags);
} }
addSilenceIfNeeded(localFlags);
vp_announceFrequencies(channel->rx_frequency, channel->tx_frequency, vp_announceFrequencies(channel->rx_frequency, channel->tx_frequency,
localFlags); localFlags);
vp_announceRadioMode(channel->mode, localFlags); vp_announceRadioMode(channel->mode, localFlags);
addSilenceIfNeeded(localFlags);
if (channel->mode == OPMODE_FM) if (channel->mode == OPMODE_FM)
{ {
@ -236,12 +238,10 @@ void vp_announceChannelSummary(const channel_t* channel,
} }
else if (channel->mode == OPMODE_M17) else if (channel->mode == OPMODE_M17)
{ {
addSilenceIfNeeded(localFlags);
vp_announceM17Info(channel, localFlags); vp_announceM17Info(channel, localFlags);
} }
else if (channel->mode == OPMODE_DMR) else if (channel->mode == OPMODE_DMR)
{ {
addSilenceIfNeeded(localFlags);
vp_announceContactWithIndex(channel->dmr.contact_index, localFlags); vp_announceContactWithIndex(channel->dmr.contact_index, localFlags);
// Force announcement of the words timeslot and colorcode to avoid // 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); vp_anouncePower(channel->power, localFlags);
addSilenceIfNeeded(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); vp_announceBank(bank, localFlags);
} }
@ -740,7 +740,8 @@ void vp_announceScreen(uint8_t ui_screen)
vp_announceChannelSummary(&state.channel, 0, state.bank); vp_announceChannelSummary(&state.channel, 0, state.bank);
break; break;
case MAIN_MEM: case MAIN_MEM:
vp_announceChannelSummary(&state.channel, state.channel_index, state.bank); vp_announceChannelSummary(&state.channel, state.channel_index+1,
state.bank);
break; break;
#ifdef GPS_PRESENT #ifdef GPS_PRESENT
case MENU_GPS: case MENU_GPS:

View File

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