From af76afb52153d11ce0f83230ac8f699dc56d36f6 Mon Sep 17 00:00:00 2001 From: vk7js <58905135+vk7js@users.noreply.github.com> Date: Fri, 6 May 2022 21:59:06 +1000 Subject: [PATCH] Added vpQueueFrequency to speak frequency with proper handling of decimal place and addition of MHz. --- openrtx/include/core/voicePrompts.h | 2 ++ openrtx/src/core/voicePrompts.c | 29 +++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/openrtx/include/core/voicePrompts.h b/openrtx/include/core/voicePrompts.h index c552096d..b1267a64 100644 --- a/openrtx/include/core/voicePrompts.h +++ b/openrtx/include/core/voicePrompts.h @@ -168,6 +168,8 @@ void vpAppendPrompt(uint16_t prompt);// Append an individual prompt item. This c void vpQueueString(char *promptString, VoicePromptFlags_T flags); void vpQueueInteger(int32_t value); // Append a signed integer void vpQueueStringTableEntry(const char * const *);//Append a text string from the current language e.g. currentLanguage->off +void vpQueueFrequency(freq_t freq, bool includeMHz); + void vpPlay(void);// Starts prompt playback extern bool vpIsPlaying(void); bool vpHasDataToPlay(void); diff --git a/openrtx/src/core/voicePrompts.c b/openrtx/src/core/voicePrompts.c index bcb61e8c..eb206b42 100644 --- a/openrtx/src/core/voicePrompts.c +++ b/openrtx/src/core/voicePrompts.c @@ -316,3 +316,32 @@ bool vpHasDataToPlay(void) return (vpCurrentSequence.Length > 0); } +static void removeUnnecessaryZerosFromVoicePrompts(char *str) +{ + const int NUM_DECIMAL_PLACES = 1; + int len = strlen(str); + for(int i = len; i > 2; i--) + { + if ((str[i - 1] != '0') || (str[i - (NUM_DECIMAL_PLACES + 1)] == '.')) + { + str[i] = 0; + return; + } + } +} + +void vpQueueFrequency(freq_t freq, bool includeMHz) +{ + char buffer[10]; + + snprintf(buffer, 10, "%d.%05d", (freq / 1000000), ((freq%1000000)/10)); + removeUnnecessaryZerosFromVoicePrompts(buffer); + + vpQueueString(buffer); + + if (includeMHz) + { + vpQueuePrompt(PROMPT_MEGAHERTZ); + } +} +