Added Voice menu to settings.

The Voice menu has two options:
Level: off, beep, level 1, level 2, level 3,
Phonetic: off, on.
md1702
vk7js 2022-05-18 21:18:12 +10:00 zatwierdzone przez Silvano Seva
rodzic 2102c15602
commit 16abf941d4
5 zmienionych plików z 137 dodań i 1 usunięć

Wyświetl plik

@ -60,6 +60,7 @@ enum uiScreen
SETTINGS_DISPLAY,
SETTINGS_GPS,
SETTINGS_M17,
SETTINGS_VOICE,
SETTINGS_RESET2DEFAULTS,
LOW_BAT
};
@ -96,6 +97,7 @@ enum settingsItems
,S_GPS
#endif
,S_M17
,S_VOICE
,S_RESET2DEFAULTS
};
@ -122,6 +124,11 @@ enum settingsGPSItems
G_TIMEZONE
};
#endif
enum settingsVoicePromptItems
{
VP_LEVEL = 0,
VP_PHONETIC,
};
/**
* Struct containing a set of positions and sizes that get
@ -197,6 +204,8 @@ extern const char *menu_items[];
extern const char *settings_items[];
extern const char *display_items[];
extern const char *settings_gps_items[];
extern const char * settings_voice_items[];
extern const char *backup_restore_items[];
extern const char *info_items[];
extern const char *authors[];
@ -204,6 +213,7 @@ extern const uint8_t menu_num;
extern const uint8_t settings_num;
extern const uint8_t display_num;
extern const uint8_t settings_gps_num;
extern const uint8_t settings_voice_num;
extern const uint8_t backup_restore_num;
extern const uint8_t info_num;
extern const uint8_t author_num;

Wyświetl plik

@ -45,6 +45,10 @@ const stringsTable_t englishStrings =
.gpsEnabled = "GPS Enabled",
.gpsSetTime = "GPS Set Time",
.UTCTimeZone = "UTC Timezone",
.voice = "Voice",
.level = "Level",
.phonetic = "Phonetic",
.beep = "Beep",
.backup = "Backup",
.restore = "Restore",
.batteryVoltage = "Bat. Voltage",

Wyświetl plik

@ -50,6 +50,10 @@ typedef struct
const char* gpsEnabled;
const char* gpsSetTime;
const char* UTCTimeZone;
const char* voice;
const char* level;
const char* phonetic;
const char* beep;
const char* backup;
const char* restore;
const char* batteryVoltage;

Wyświetl plik

@ -98,6 +98,7 @@ extern void _ui_drawMenuContacts(ui_state_t* ui_state);
extern void _ui_drawMenuGPS();
extern void _ui_drawSettingsGPS(ui_state_t* ui_state);
#endif
extern void _ui_drawSettingsVoicePrompts(ui_state_t* ui_state);
extern void _ui_drawMenuSettings(ui_state_t* ui_state);
extern void _ui_drawMenuBackupRestore(ui_state_t* ui_state);
extern void _ui_drawMenuBackup(ui_state_t* ui_state);
@ -110,6 +111,7 @@ extern void _ui_drawSettingsTimeDateSet(ui_state_t* ui_state);
#endif
extern void _ui_drawSettingsDisplay(ui_state_t* ui_state);
extern void _ui_drawSettingsM17(ui_state_t* ui_state);
extern void _ui_drawSettingsVoicePrompts(ui_state_t* ui_state);
extern void _ui_drawSettingsReset2Defaults(ui_state_t* ui_state);
extern bool _ui_drawMacroMenu();
@ -137,6 +139,7 @@ const char *settings_items[] =
"GPS",
#endif
"M17",
"Voice",
"Default Settings"
};
@ -157,6 +160,11 @@ const char *settings_gps_items[] =
"UTC Timezone"
};
#endif
const char * settings_voice_items[] =
{
"Voice Level",
"Phonetic"
};
const char *backup_restore_items[] =
{
@ -224,6 +232,7 @@ const uint8_t display_num = sizeof(display_items)/sizeof(display_items[0]);
#ifdef GPS_PRESENT
const uint8_t settings_gps_num = sizeof(settings_gps_items)/sizeof(settings_gps_items[0]);
#endif
const uint8_t settings_voice_num = sizeof(settings_voice_items)/sizeof(settings_voice_items[0]);
const uint8_t backup_restore_num = sizeof(backup_restore_items)/sizeof(backup_restore_items[0]);
const uint8_t info_num = sizeof(info_items)/sizeof(info_items[0]);
const uint8_t author_num = sizeof(authors)/sizeof(authors[0]);
@ -703,6 +712,21 @@ void _ui_changeTimer(int variation)
state.settings.display_timer += variation;
}
void _ui_changeVoiceLevel(int variation)
{
if ((state.settings.vpLevel == vpNone && variation < 0) ||
(state.settings.vpLevel == vpHigh && variation > 0))
{
return;
}
state.settings.vpLevel += variation;
}
void _ui_changePhoneticSpell(bool newVal)
{
state.settings.vpPhoneticSpell = newVal ? 1 : 0;
}
bool _ui_checkStandby(long long time_since_last_event)
{
if (standby)
@ -1422,7 +1446,10 @@ void ui_updateFSM(bool *sync_rtx)
case S_M17:
state.ui_screen = SETTINGS_M17;
break;
case S_RESET2DEFAULTS:
case S_VOICE:
state.ui_screen = SETTINGS_VOICE;
break;
case S_RESET2DEFAULTS:
state.ui_screen = SETTINGS_RESET2DEFAULTS;
break;
default:
@ -1641,6 +1668,46 @@ void ui_updateFSM(bool *sync_rtx)
_ui_menuBack(MENU_SETTINGS);
}
break;
case SETTINGS_VOICE:
if(msg.keys & KEY_LEFT || (ui_state.edit_mode &&
(msg.keys & KEY_DOWN || msg.keys & KNOB_LEFT)))
{
switch(ui_state.menu_selected)
{
case VP_LEVEL:
_ui_changeVoiceLevel(-1);
break;
case VP_PHONETIC:
_ui_changePhoneticSpell(false);
break;
default:
state.ui_screen = SETTINGS_VOICE;
}
}
else if(msg.keys & KEY_RIGHT || (ui_state.edit_mode &&
(msg.keys & KEY_UP || msg.keys & KNOB_RIGHT)))
{
switch(ui_state.menu_selected)
{
case VP_LEVEL:
_ui_changeVoiceLevel(1);
break;
case VP_PHONETIC:
_ui_changePhoneticSpell(true);
break;
default:
state.ui_screen = SETTINGS_VOICE;
}
}
else if(msg.keys & KEY_UP || msg.keys & KNOB_LEFT)
_ui_menuUp(settings_voice_num);
else if(msg.keys & KEY_DOWN || msg.keys & KNOB_RIGHT)
_ui_menuDown(settings_voice_num);
else if(msg.keys & KEY_ENTER)
ui_state.edit_mode = !ui_state.edit_mode;
else if(msg.keys & KEY_ESC)
_ui_menuBack(MENU_SETTINGS);
break;
case SETTINGS_RESET2DEFAULTS:
if(! ui_state.edit_mode){
//require a confirmation ENTER, then another
@ -1784,6 +1851,9 @@ bool ui_updateGUI()
case SETTINGS_M17:
_ui_drawSettingsM17(&ui_state);
break;
case SETTINGS_VOICE:
_ui_drawSettingsVoicePrompts(&ui_state);
break;
// Screen to support resetting Settings and VFO to defaults
case SETTINGS_RESET2DEFAULTS:
_ui_drawSettingsReset2Defaults(&ui_state);

Wyświetl plik

@ -265,6 +265,43 @@ int _ui_getSettingsGPSValueName(char *buf, uint8_t max_len, uint8_t index)
}
#endif
int _ui_getVoiceEntryName(char *buf, uint8_t max_len, uint8_t index)
{
if(index >= settings_voice_num) return -1;
snprintf(buf, max_len, "%s", settings_voice_items[index]);
return 0;
}
int _ui_getVoiceValueName(char *buf, uint8_t max_len, uint8_t index)
{
if(index >= settings_voice_num) return -1;
uint8_t value = 0;
switch(index)
{
case VP_LEVEL:
{
value = last_state.settings.vpLevel;
switch (value)
{
case vpNone:
snprintf(buf, max_len, "%s", currentLanguage->off);
break;
case vpBeep:
snprintf(buf, max_len, "%s", currentLanguage->beep);
break;
default:
snprintf(buf, max_len, "%s %d", currentLanguage->level, (value-vpBeep));
break;
}
break;
}
case VP_PHONETIC:
snprintf(buf, max_len, "%s", last_state.settings.vpPhoneticSpell ? currentLanguage->on : currentLanguage->off);
break;
}
return 0;
}
int _ui_getBackupRestoreEntryName(char *buf, uint8_t max_len, uint8_t index)
{
if(index >= backup_restore_num) return -1;
@ -698,6 +735,17 @@ void _ui_drawSettingsM17(ui_state_t* ui_state)
}
}
void _ui_drawSettingsVoicePrompts(ui_state_t* ui_state)
{
gfx_clearScreen();
// Print "Voice" on top bar
gfx_print(layout.top_pos, layout.top_font, TEXT_ALIGN_CENTER,
color_white, currentLanguage->voice);
// Print voice settings entries
_ui_drawMenuListValue(ui_state, ui_state->menu_selected, _ui_getVoiceEntryName,
_ui_getVoiceValueName);
}
void _ui_drawSettingsReset2Defaults(ui_state_t* ui_state)
{
(void) ui_state;