From 8cb92728813ca99ae29defb6061219b366f4052c Mon Sep 17 00:00:00 2001 From: vk7js <58905135+vk7js@users.noreply.github.com> Date: Thu, 1 Sep 2022 21:43:53 +1000 Subject: [PATCH] Added vp_announceScreen to automatically announce informational screens such as VFO, channel, ... --- openrtx/include/core/voicePromptUtils.h | 5 +++++ openrtx/src/core/voicePromptUtils.c | 25 +++++++++++++++++++++++++ openrtx/src/ui/ui.c | 18 +++++++++--------- 3 files changed, 39 insertions(+), 9 deletions(-) diff --git a/openrtx/include/core/voicePromptUtils.h b/openrtx/include/core/voicePromptUtils.h index d15e96ec..d1b3c399 100644 --- a/openrtx/include/core/voicePromptUtils.h +++ b/openrtx/include/core/voicePromptUtils.h @@ -199,6 +199,11 @@ void vp_announceSettingsVoiceLevel(const vpQueueFlags_t flags); void vp_announceSettingsOnOffToggle(const char* const* stringTableStringPtr, const vpQueueFlags_t flags, bool val); +/** + * This function is called from ui_updateFSM to speak informational screens. + */ +void vp_announceScreen(uint8_t ui_screen); + /** * */ diff --git a/openrtx/src/core/voicePromptUtils.c b/openrtx/src/core/voicePromptUtils.c index 85d06622..c8b21967 100644 --- a/openrtx/src/core/voicePromptUtils.c +++ b/openrtx/src/core/voicePromptUtils.c @@ -28,6 +28,7 @@ #include #include #include +#include #include "interfaces/cps_io.h" @@ -731,6 +732,30 @@ void vp_announceSettingsOnOffToggle(const char* const* stringTableStringPtr, playIfNeeded(flags); } +void vp_announceScreen(uint8_t ui_screen) +{ + switch (ui_screen) + { + case MAIN_VFO: + vp_announceChannelSummary(&state.channel, 0, state.bank); + break; + case MAIN_MEM: + vp_announceChannelSummary(&state.channel, state.channel_index, state.bank); + break; +#ifdef GPS_PRESENT + case MENU_GPS: + vp_announceGPSInfo(); + break; +#endif // GPS_PRESENT + case MENU_ABOUT: + vp_announceAboutScreen(); + break; + case SETTINGS_TIMEDATE: + vp_announceSettingsTimeDate(); + break; + } +} + vpQueueFlags_t vp_getVoiceLevelQueueFlags() { uint8_t vpLevel = state.settings.vpLevel; diff --git a/openrtx/src/ui/ui.c b/openrtx/src/ui/ui.c index 4ccc0172..ca64cf3e 100644 --- a/openrtx/src/ui/ui.c +++ b/openrtx/src/ui/ui.c @@ -1776,9 +1776,15 @@ void ui_updateFSM(bool *sync_rtx) state.settings.gps_enabled = 0; else state.settings.gps_enabled = 1; + vp_announceSettingsOnOffToggle(¤tLanguage->gpsEnabled, + queueFlags, + state.settings.gps_enabled); break; case G_SET_TIME: state.gps_set_time = !state.gps_set_time; + vp_announceSettingsOnOffToggle(¤tLanguage->gpsSetTime, + queueFlags, + state.gps_set_time); break; case G_TIMEZONE: if(msg.keys & KEY_LEFT || msg.keys & KEY_UP || @@ -1787,6 +1793,7 @@ void ui_updateFSM(bool *sync_rtx) else if(msg.keys & KEY_RIGHT || msg.keys & KEY_DOWN || msg.keys & KNOB_RIGHT) state.settings.utc_timezone += 1; + // todo announce timezone change break; default: state.ui_screen = SETTINGS_GPS; @@ -1910,16 +1917,9 @@ void ui_updateFSM(bool *sync_rtx) else if ((priorUIScreen!=state.ui_screen) && state.settings.vpLevel > vpLow) { // When we switch to VFO or Channel screen, we need to announce it. + // Likewise for information screens. // All other cases are handled as needed. - if (state.ui_screen == MAIN_VFO) - { - vp_announceChannelSummary(&state.channel, 0, state.bank); - } - else if (state.ui_screen == MAIN_MEM) - { - vp_announceChannelSummary(&state.channel, state.channel_index, - state.bank); - } + vp_announceScreen(state.ui_screen); } } else if(event.type == EVENT_STATUS)