Began work on the macros screen.
Toggling tone or enabling/disabling (macros 1 and 2) now supported. Added new voice prompt for tone.
This commit is contained in:
parent
4098baa5a8
commit
68926a72c4
|
|
@ -24,6 +24,19 @@
|
||||||
#include "voicePrompts.h"
|
#include "voicePrompts.h"
|
||||||
#include "ui/UIStrings.h"
|
#include "ui/UIStrings.h"
|
||||||
#include "cps.h"
|
#include "cps.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
Please Note!
|
||||||
|
|
||||||
|
Many of the functions take queue flags because sometimes messages must be
|
||||||
|
played in sequence (i.e. the announceXX functions may be called one after the
|
||||||
|
other) and thus the init must only be sent prior to the first message queued
|
||||||
|
and the play must only be invoked after the last message queued.
|
||||||
|
|
||||||
|
When an announceXX function is called in isolation, vpqInit|vpqPlayImmediately
|
||||||
|
should be used to ensure that the message interupts the current prompt and
|
||||||
|
plays immediately.
|
||||||
|
*/
|
||||||
void announceVFO();
|
void announceVFO();
|
||||||
void announceChannelName(channel_t* channel, uint16_t channelIndex, VoicePromptQueueFlags_T flags);
|
void announceChannelName(channel_t* channel, uint16_t channelIndex, VoicePromptQueueFlags_T flags);
|
||||||
void vpQueueFrequency(freq_t freq);
|
void vpQueueFrequency(freq_t freq);
|
||||||
|
|
@ -42,5 +55,5 @@ passed in and if so, queues it, but if not, just spells the text
|
||||||
character by character.
|
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);
|
||||||
#endif //VOICE_PROMPT_UTILS_H_INCLUDED
|
#endif //VOICE_PROMPT_UTILS_H_INCLUDED
|
||||||
|
|
@ -117,6 +117,7 @@ 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
|
||||||
PROMPT_TALKGROUP, // Talk group
|
PROMPT_TALKGROUP, // Talk group
|
||||||
|
PROMPT_TONE, // tone
|
||||||
PROMPT_CHARACTER, // character
|
PROMPT_CHARACTER, // character
|
||||||
PROMPT_SPACE, // space
|
PROMPT_SPACE, // space
|
||||||
PROMPT_PERCENT, // Percent
|
PROMPT_PERCENT, // Percent
|
||||||
|
|
|
||||||
|
|
@ -210,3 +210,48 @@ void announceText( char* text, VoicePromptQueueFlags_T flags)
|
||||||
|
|
||||||
vpPlayIfNeeded(flags);
|
vpPlayIfNeeded(flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void announceCTCSS(bool rxToneEnabled, uint8_t rxTone, bool txToneEnabled, uint8_t txTone, VoicePromptQueueFlags_T flags)
|
||||||
|
{
|
||||||
|
vpInitIfNeeded(flags);
|
||||||
|
|
||||||
|
if (!rxToneEnabled && !txToneEnabled)
|
||||||
|
{
|
||||||
|
vpQueuePrompt(PROMPT_TONE);
|
||||||
|
vpQueueStringTableEntry(¤tLanguage->off);
|
||||||
|
vpPlayIfNeeded(flags);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
char buffer[16] = "\0";
|
||||||
|
|
||||||
|
// If the rx and tx tones are the same and both are enabled, just say Tone.
|
||||||
|
if ((rxToneEnabled && txToneEnabled) && (rxTone == txTone))
|
||||||
|
{
|
||||||
|
vpQueuePrompt(PROMPT_TONE);
|
||||||
|
snprintf(buffer, 16, "%3.1f", ctcss_tone[rxTone]/10.0f);
|
||||||
|
vpQueueString(buffer, vpqDefault);
|
||||||
|
vpQueuePrompt(PROMPT_HERTZ);
|
||||||
|
vpPlayIfNeeded(flags);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// speak the individual rx and tx tones.
|
||||||
|
if (rxToneEnabled)
|
||||||
|
{
|
||||||
|
vpQueuePrompt(PROMPT_RECEIVE);
|
||||||
|
vpQueuePrompt(PROMPT_TONE);
|
||||||
|
snprintf(buffer, 16, "%3.1f", ctcss_tone[rxTone]/10.0f);
|
||||||
|
vpQueueString(buffer, vpqDefault);
|
||||||
|
vpQueuePrompt(PROMPT_HERTZ);
|
||||||
|
}
|
||||||
|
if (txToneEnabled)
|
||||||
|
{
|
||||||
|
vpQueuePrompt(PROMPT_TRANSMIT);
|
||||||
|
vpQueuePrompt(PROMPT_TONE);
|
||||||
|
snprintf(buffer, 16, "%3.1f", ctcss_tone[txTone]/10.0f);
|
||||||
|
vpQueueString(buffer, vpqDefault);
|
||||||
|
vpQueuePrompt(PROMPT_HERTZ);
|
||||||
|
}
|
||||||
|
|
||||||
|
vpPlayIfNeeded(flags);
|
||||||
|
}
|
||||||
|
|
@ -781,6 +781,9 @@ void _ui_fsm_menuMacro(kbd_msg_t msg, bool *sync_rtx)
|
||||||
state.channel.fm.txTone %= MAX_TONE_INDEX;
|
state.channel.fm.txTone %= MAX_TONE_INDEX;
|
||||||
state.channel.fm.rxTone = state.channel.fm.txTone;
|
state.channel.fm.rxTone = state.channel.fm.txTone;
|
||||||
*sync_rtx = true;
|
*sync_rtx = true;
|
||||||
|
announceCTCSS(state.channel.fm.rxToneEn, state.channel.fm.rxTone,
|
||||||
|
state.channel.fm.txToneEn, state.channel.fm.txTone,
|
||||||
|
(vpqInit | vpqPlayImmediately));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
|
|
@ -802,6 +805,9 @@ void _ui_fsm_menuMacro(kbd_msg_t msg, bool *sync_rtx)
|
||||||
state.channel.fm.txToneEn = tone_tx_enable;
|
state.channel.fm.txToneEn = tone_tx_enable;
|
||||||
state.channel.fm.rxToneEn = tone_rx_enable;
|
state.channel.fm.rxToneEn = tone_rx_enable;
|
||||||
*sync_rtx = true;
|
*sync_rtx = true;
|
||||||
|
announceCTCSS(state.channel.fm.rxToneEn, state.channel.fm.rxTone,
|
||||||
|
state.channel.fm.txToneEn, state.channel.fm.txTone,
|
||||||
|
(vpqInit | vpqPlayImmediately));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue