kopia lustrzana https://github.com/OpenRTX/OpenRTX
Added Voice menu to settings.
The Voice menu has two options: Level: off, beep, level 1, level 2, level 3, Phonetic: off, on.md1702
rodzic
2102c15602
commit
16abf941d4
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Ładowanie…
Reference in New Issue