Added vp_announceScreen to automatically announce informational screens such as VFO, channel, ...

This commit is contained in:
vk7js 2022-09-01 21:43:53 +10:00 committed by Silvano Seva
parent 158b38d113
commit 8cb9272881
3 changed files with 39 additions and 9 deletions

View File

@ -199,6 +199,11 @@ void vp_announceSettingsVoiceLevel(const vpQueueFlags_t flags);
void vp_announceSettingsOnOffToggle(const char* const* stringTableStringPtr, void vp_announceSettingsOnOffToggle(const char* const* stringTableStringPtr,
const vpQueueFlags_t flags, bool val); const vpQueueFlags_t flags, bool val);
/**
* This function is called from ui_updateFSM to speak informational screens.
*/
void vp_announceScreen(uint8_t ui_screen);
/** /**
* *
*/ */

View File

@ -28,6 +28,7 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <ui.h>
#include "interfaces/cps_io.h" #include "interfaces/cps_io.h"
@ -731,6 +732,30 @@ void vp_announceSettingsOnOffToggle(const char* const* stringTableStringPtr,
playIfNeeded(flags); 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() vpQueueFlags_t vp_getVoiceLevelQueueFlags()
{ {
uint8_t vpLevel = state.settings.vpLevel; uint8_t vpLevel = state.settings.vpLevel;

View File

@ -1776,9 +1776,15 @@ void ui_updateFSM(bool *sync_rtx)
state.settings.gps_enabled = 0; state.settings.gps_enabled = 0;
else else
state.settings.gps_enabled = 1; state.settings.gps_enabled = 1;
vp_announceSettingsOnOffToggle(&currentLanguage->gpsEnabled,
queueFlags,
state.settings.gps_enabled);
break; break;
case G_SET_TIME: case G_SET_TIME:
state.gps_set_time = !state.gps_set_time; state.gps_set_time = !state.gps_set_time;
vp_announceSettingsOnOffToggle(&currentLanguage->gpsSetTime,
queueFlags,
state.gps_set_time);
break; break;
case G_TIMEZONE: case G_TIMEZONE:
if(msg.keys & KEY_LEFT || msg.keys & KEY_UP || 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 || else if(msg.keys & KEY_RIGHT || msg.keys & KEY_DOWN ||
msg.keys & KNOB_RIGHT) msg.keys & KNOB_RIGHT)
state.settings.utc_timezone += 1; state.settings.utc_timezone += 1;
// todo announce timezone change
break; break;
default: default:
state.ui_screen = SETTINGS_GPS; 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) else if ((priorUIScreen!=state.ui_screen) && state.settings.vpLevel > vpLow)
{ {
// When we switch to VFO or Channel screen, we need to announce it. // When we switch to VFO or Channel screen, we need to announce it.
// Likewise for information screens.
// All other cases are handled as needed. // All other cases are handled as needed.
if (state.ui_screen == MAIN_VFO) vp_announceScreen(state.ui_screen);
{
vp_announceChannelSummary(&state.channel, 0, state.bank);
}
else if (state.ui_screen == MAIN_MEM)
{
vp_announceChannelSummary(&state.channel, state.channel_index,
state.bank);
}
} }
} }
else if(event.type == EVENT_STATUS) else if(event.type == EVENT_STATUS)