Added bandwidth and power announcements

Added bandwidth and power announcement for both macro and summary.
Added new voice prompts for bandwidth and power.
This commit is contained in:
vk7js 2022-05-14 13:54:15 +10:00 committed by Silvano Seva
parent 5a8044437c
commit d19e0d57ec
4 changed files with 58 additions and 8 deletions

View File

@ -42,6 +42,7 @@ void announceChannelName(channel_t* channel, uint16_t channelIndex, VoicePromptQ
void vpQueueFrequency(freq_t freq); void vpQueueFrequency(freq_t freq);
void announceFrequencies(freq_t rx, freq_t tx, VoicePromptQueueFlags_T flags); void announceFrequencies(freq_t rx, freq_t tx, VoicePromptQueueFlags_T flags);
void announceRadioMode(uint8_t mode, VoicePromptQueueFlags_T flags); void announceRadioMode(uint8_t mode, VoicePromptQueueFlags_T flags);
void announceBandwidth(uint8_t bandwidth, VoicePromptQueueFlags_T flags);
void announceChannelSummary(channel_t* channel, uint16_t channelIndex, void announceChannelSummary(channel_t* channel, uint16_t channelIndex,
VoicePromptQueueFlags_T flags); VoicePromptQueueFlags_T flags);
void AnnounceInputChar(char ch); void AnnounceInputChar(char ch);
@ -56,4 +57,5 @@ character by character.
*/ */
void announceText( char* text, VoicePromptQueueFlags_T flags); void announceText( char* text, VoicePromptQueueFlags_T flags);
void announceCTCSS(bool rxToneEnabled, uint8_t rxTone, bool txToneEnabled, uint8_t txTone, VoicePromptQueueFlags_T flags); void announceCTCSS(bool rxToneEnabled, uint8_t rxTone, bool txToneEnabled, uint8_t txTone, VoicePromptQueueFlags_T flags);
void anouncePower(float power, VoicePromptQueueFlags_T flags);
#endif //VOICE_PROMPT_UTILS_H_INCLUDED #endif //VOICE_PROMPT_UTILS_H_INCLUDED

View File

@ -113,6 +113,8 @@ PROMPT_WATTS, // Watts
PROMPT_RECEIVE, // Receive PROMPT_RECEIVE, // Receive
PROMPT_TRANSMIT, // Transmit PROMPT_TRANSMIT, // Transmit
PROMPT_MODE, // Mode PROMPT_MODE, // Mode
PROMPT_BANDWIDTH, // bandwidth
PROMPT_POWER, // power
PROMPT_SOURCE_ID, // Source ID PROMPT_SOURCE_ID, // Source ID
PROMPT_DEST_ID, // Destination ID PROMPT_DEST_ID, // Destination ID
PROMPT_DMR_ID, // DMR ID PROMPT_DMR_ID, // DMR ID

View File

@ -73,7 +73,7 @@ VoicePromptQueueFlags_T flags)
char numAsStr[16]="\0"; char numAsStr[16]="\0";
snprintf(numAsStr, 16, "%d", channelIndex); snprintf(numAsStr, 16, "%d", channelIndex);
if (strcmp(numAsStr, channel->name) != 0) if (strcmp(numAsStr, channel->name) != 0)
vpQueueString(channel->name, flags); vpQueueString(channel->name, vpAnnounceCommonSymbols);
vpPlayIfNeeded(flags); vpPlayIfNeeded(flags);
} }
@ -132,6 +132,39 @@ void announceRadioMode(uint8_t mode, VoicePromptQueueFlags_T flags)
vpPlayIfNeeded(flags); vpPlayIfNeeded(flags);
} }
void announceBandwidth(uint8_t bandwidth, VoicePromptQueueFlags_T flags)
{
if (bandwidth > BW_25)
bandwidth = BW_25; // should probably never happen!
vpInitIfNeeded(flags);
if (flags & vpqIncludeDescriptions)
vpQueuePrompt(PROMPT_BANDWIDTH);
char* bandwidths[]={"12.5", "20", "25"};
vpQueueString(bandwidths[bandwidth], vpAnnounceCommonSymbols);
vpQueuePrompt(PROMPT_KILOHERTZ);
vpPlayIfNeeded(flags);
}
void anouncePower(float power, VoicePromptQueueFlags_T flags)
{
vpInitIfNeeded(flags);
char buffer[16] = "\0";
//joe
if (flags & vpqIncludeDescriptions)
vpQueuePrompt(PROMPT_POWER);
snprintf(buffer, 16, "%1.1f", power);
vpQueueString(buffer, vpAnnounceCommonSymbols);
vpQueuePrompt(PROMPT_WATTS);
vpPlayIfNeeded(flags);
}
void vpAnnounceChannelSummary(channel_t* channel, uint16_t channelIndex, void vpAnnounceChannelSummary(channel_t* channel, uint16_t channelIndex,
VoicePromptQueueFlags_T flags) VoicePromptQueueFlags_T flags)
{ {
@ -148,12 +181,19 @@ VoicePromptQueueFlags_T flags)
announceFrequencies(channel->rx_frequency , channel->tx_frequency, localFlags); announceFrequencies(channel->rx_frequency , channel->tx_frequency, localFlags);
announceRadioMode(channel->mode, localFlags); announceRadioMode(channel->mode, localFlags);
if ((channel->mode == OPMODE_FM) && (channel->fm.rxToneEn || channel->fm.txToneEn)) if (channel->mode == OPMODE_FM)
{ {
announceCTCSS(channel->fm.rxToneEn, channel->fm.rxTone, announceBandwidth(channel->bandwidth, localFlags);
channel->fm.txToneEn, channel->fm.txTone,
localFlags); if (channel->fm.rxToneEn || channel->fm.txToneEn)
{
announceCTCSS(channel->fm.rxToneEn, channel->fm.rxTone,
channel->fm.txToneEn, channel->fm.txTone,
localFlags);
}
} }
// Todo M17 and DMR info.
anouncePower(channel->power, localFlags);
vpPlayIfNeeded(flags); vpPlayIfNeeded(flags);
} }

View File

@ -772,6 +772,10 @@ void _ui_fsm_menuMacro(kbd_msg_t msg, bool *sync_rtx)
bool tone_tx_enable = state.channel.fm.txToneEn; bool tone_tx_enable = state.channel.fm.txToneEn;
bool tone_rx_enable = state.channel.fm.rxToneEn; bool tone_rx_enable = state.channel.fm.rxToneEn;
uint8_t tone_flags = tone_tx_enable << 1 | tone_rx_enable; uint8_t tone_flags = tone_tx_enable << 1 | tone_rx_enable;
VoicePromptQueueFlags_T queueFlags=vpqInit | vpqPlayImmediately;
if (!vpIsPlaying())
queueFlags |= vpqIncludeDescriptions;
switch(ui_state.input_number) switch(ui_state.input_number)
{ {
case 1: case 1:
@ -783,7 +787,7 @@ void _ui_fsm_menuMacro(kbd_msg_t msg, bool *sync_rtx)
*sync_rtx = true; *sync_rtx = true;
announceCTCSS(state.channel.fm.rxToneEn, state.channel.fm.rxTone, announceCTCSS(state.channel.fm.rxToneEn, state.channel.fm.rxTone,
state.channel.fm.txToneEn, state.channel.fm.txTone, state.channel.fm.txToneEn, state.channel.fm.txTone,
(vpqInit | vpqPlayImmediately)); queueFlags);
} }
break; break;
case 2: case 2:
@ -807,7 +811,7 @@ void _ui_fsm_menuMacro(kbd_msg_t msg, bool *sync_rtx)
*sync_rtx = true; *sync_rtx = true;
announceCTCSS(state.channel.fm.rxToneEn, state.channel.fm.rxTone, announceCTCSS(state.channel.fm.rxToneEn, state.channel.fm.rxTone,
state.channel.fm.txToneEn, state.channel.fm.txTone, state.channel.fm.txToneEn, state.channel.fm.txTone,
(vpqInit | vpqPlayImmediately)); queueFlags);
} }
break; break;
case 4: case 4:
@ -816,6 +820,7 @@ void _ui_fsm_menuMacro(kbd_msg_t msg, bool *sync_rtx)
state.channel.bandwidth++; state.channel.bandwidth++;
state.channel.bandwidth %= 3; state.channel.bandwidth %= 3;
*sync_rtx = true; *sync_rtx = true;
announceBandwidth(state.channel.bandwidth, queueFlags);
} }
break; break;
case 5: case 5:
@ -834,6 +839,7 @@ void _ui_fsm_menuMacro(kbd_msg_t msg, bool *sync_rtx)
else else
state.channel.power = 100; state.channel.power = 100;
*sync_rtx = true; *sync_rtx = true;
anouncePower(state.channel.power, queueFlags);
break; break;
break; break;
case 7: case 7: