Default UI: implemented setting of M17 CAN
This commit is contained in:
parent
2f0d56a8e0
commit
cadec3dfd4
|
|
@ -90,16 +90,16 @@ enum menuItems
|
|||
|
||||
enum settingsItems
|
||||
{
|
||||
S_DISPLAY = 0
|
||||
S_DISPLAY = 0,
|
||||
#ifdef RTC_PRESENT
|
||||
,S_TIMEDATE
|
||||
S_TIMEDATE,
|
||||
#endif
|
||||
#ifdef GPS_PRESENT
|
||||
,S_GPS
|
||||
S_GPS,
|
||||
#endif
|
||||
,S_M17
|
||||
,S_VOICE
|
||||
,S_RESET2DEFAULTS
|
||||
S_M17,
|
||||
S_VOICE,
|
||||
S_RESET2DEFAULTS,
|
||||
};
|
||||
|
||||
enum backupRestoreItems
|
||||
|
|
@ -110,11 +110,11 @@ enum backupRestoreItems
|
|||
|
||||
enum displayItems
|
||||
{
|
||||
D_BRIGHTNESS = 0
|
||||
D_BRIGHTNESS = 0,
|
||||
#ifdef SCREEN_CONTRAST
|
||||
,D_CONTRAST
|
||||
D_CONTRAST,
|
||||
#endif
|
||||
,D_TIMER
|
||||
D_TIMER,
|
||||
};
|
||||
|
||||
#ifdef GPS_PRESENT
|
||||
|
|
@ -125,12 +125,19 @@ enum settingsGPSItems
|
|||
G_TIMEZONE
|
||||
};
|
||||
#endif
|
||||
|
||||
enum settingsVoicePromptItems
|
||||
{
|
||||
VP_LEVEL = 0,
|
||||
VP_PHONETIC,
|
||||
};
|
||||
|
||||
enum settingsM17Items
|
||||
{
|
||||
M17_CALLSIGN = 0,
|
||||
M17_CAN
|
||||
};
|
||||
|
||||
/**
|
||||
* Struct containing a set of positions and sizes that get
|
||||
* calculated for the selected display size.
|
||||
|
|
@ -205,6 +212,7 @@ 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_m17_items[];
|
||||
extern const char * settings_voice_items[];
|
||||
|
||||
extern const char *backup_restore_items[];
|
||||
|
|
@ -214,6 +222,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_m17_num;
|
||||
extern const uint8_t settings_voice_num;
|
||||
extern const uint8_t backup_restore_num;
|
||||
extern const uint8_t info_num;
|
||||
|
|
|
|||
|
|
@ -166,6 +166,13 @@ const char *settings_gps_items[] =
|
|||
"UTC Timezone"
|
||||
};
|
||||
#endif
|
||||
|
||||
const char * settings_m17_items[] =
|
||||
{
|
||||
"Callsign",
|
||||
"CAN"
|
||||
};
|
||||
|
||||
const char * settings_voice_items[] =
|
||||
{
|
||||
"Voice",
|
||||
|
|
@ -238,6 +245,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_m17_num = sizeof(settings_m17_items)/sizeof(settings_m17_items[0]);
|
||||
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]);
|
||||
|
|
@ -748,6 +756,12 @@ static void _ui_changeTimer(int variation)
|
|||
state.settings.display_timer += variation;
|
||||
}
|
||||
|
||||
static inline void _ui_changeM17Can(int variation)
|
||||
{
|
||||
uint8_t can = state.settings.m17_can;
|
||||
state.settings.m17_can = (can + variation) % 16;
|
||||
}
|
||||
|
||||
static void _ui_changeVoiceLevel(int variation)
|
||||
{
|
||||
if ((state.settings.vpLevel == vpNone && variation < 0) ||
|
||||
|
|
@ -1919,48 +1933,81 @@ void ui_updateFSM(bool *sync_rtx)
|
|||
case SETTINGS_M17:
|
||||
if(ui_state.edit_mode)
|
||||
{
|
||||
if(msg.keys & KEY_ENTER)
|
||||
if(ui_state.menu_selected == M17_CALLSIGN)
|
||||
{
|
||||
_ui_textInputConfirm(ui_state.new_callsign);
|
||||
// Save selected callsign and disable input mode
|
||||
strncpy(state.settings.callsign, ui_state.new_callsign, 10);
|
||||
ui_state.edit_mode = false;
|
||||
*sync_rtx = true;
|
||||
vp_announceBuffer(¤tLanguage->callsign,
|
||||
false, true, state.settings.callsign);
|
||||
// Handle text input for M17 callsign
|
||||
if(msg.keys & KEY_ENTER)
|
||||
{
|
||||
_ui_textInputConfirm(ui_state.new_callsign);
|
||||
// Save selected callsign and disable input mode
|
||||
strncpy(state.settings.callsign, ui_state.new_callsign, 10);
|
||||
ui_state.edit_mode = false;
|
||||
vp_announceBuffer(¤tLanguage->callsign,
|
||||
false, true, state.settings.callsign);
|
||||
}
|
||||
else if(msg.keys & KEY_ESC)
|
||||
{
|
||||
// Discard selected callsign and disable input mode
|
||||
ui_state.edit_mode = false;
|
||||
vp_announceBuffer(¤tLanguage->callsign,
|
||||
false, true, state.settings.callsign);
|
||||
}
|
||||
else if(msg.keys & KEY_UP || msg.keys & KEY_DOWN ||
|
||||
msg.keys & KEY_LEFT || msg.keys & KEY_RIGHT)
|
||||
{
|
||||
_ui_textInputDel(ui_state.new_callsign);
|
||||
}
|
||||
else if(input_isNumberPressed(msg))
|
||||
{
|
||||
_ui_textInputKeypad(ui_state.new_callsign, 9, msg, true);
|
||||
}
|
||||
else if (msg.long_press && (msg.keys & KEY_F1) && (state.settings.vpLevel > vpBeep))
|
||||
{
|
||||
vp_announceBuffer(¤tLanguage->callsign,
|
||||
true, true, ui_state.new_callsign);
|
||||
f1Handled=true;
|
||||
}
|
||||
}
|
||||
else if(msg.keys & KEY_ESC)
|
||||
else
|
||||
{
|
||||
// Discard selected callsign and disable input mode
|
||||
ui_state.edit_mode = false;
|
||||
vp_announceBuffer(¤tLanguage->callsign,
|
||||
false, true, state.settings.callsign);
|
||||
}
|
||||
else if(msg.keys & KEY_UP || msg.keys & KEY_DOWN ||
|
||||
msg.keys & KEY_LEFT || msg.keys & KEY_RIGHT)
|
||||
_ui_textInputDel(ui_state.new_callsign);
|
||||
else if(input_isNumberPressed(msg))
|
||||
_ui_textInputKeypad(ui_state.new_callsign, 9, msg, true);
|
||||
else if (msg.long_press && (msg.keys & KEY_F1) && (state.settings.vpLevel > vpBeep))
|
||||
{
|
||||
vp_announceBuffer(¤tLanguage->callsign,
|
||||
true, true, ui_state.new_callsign);
|
||||
f1Handled=true;
|
||||
if(msg.keys & KEY_DOWN || msg.keys & KNOB_LEFT)
|
||||
_ui_changeM17Can(-1);
|
||||
else if(msg.keys & KEY_UP || msg.keys & KNOB_RIGHT)
|
||||
_ui_changeM17Can(+1);
|
||||
else if(msg.keys & KEY_ENTER)
|
||||
ui_state.edit_mode = !ui_state.edit_mode;
|
||||
else if(msg.keys & KEY_ESC)
|
||||
ui_state.edit_mode = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(msg.keys & KEY_ENTER)
|
||||
{
|
||||
// Enable callsign input
|
||||
// Enable edit mode
|
||||
ui_state.edit_mode = true;
|
||||
// Reset text input variables
|
||||
_ui_textInputReset(ui_state.new_callsign);
|
||||
vp_announceBuffer(¤tLanguage->callsign,
|
||||
true, true, ui_state.new_callsign);
|
||||
|
||||
// If callsign input, reset text input variables
|
||||
if(ui_state.menu_selected == M17_CALLSIGN)
|
||||
{
|
||||
_ui_textInputReset(ui_state.new_callsign);
|
||||
vp_announceBuffer(¤tLanguage->callsign,
|
||||
true, true, ui_state.new_callsign);
|
||||
}
|
||||
}
|
||||
else if(msg.keys & KEY_UP || msg.keys & KNOB_LEFT)
|
||||
_ui_menuUp(settings_m17_num);
|
||||
else if(msg.keys & KEY_DOWN || msg.keys & KNOB_RIGHT)
|
||||
_ui_menuDown(settings_m17_num);
|
||||
else if((msg.keys & KEY_RIGHT) && (ui_state.menu_selected == M17_CAN))
|
||||
_ui_changeM17Can(+1);
|
||||
else if((msg.keys & KEY_LEFT) && (ui_state.menu_selected == M17_CAN))
|
||||
_ui_changeM17Can(-1);
|
||||
else if(msg.keys & KEY_ESC)
|
||||
{
|
||||
*sync_rtx = true;
|
||||
_ui_menuBack(MENU_SETTINGS);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case SETTINGS_VOICE:
|
||||
|
|
|
|||
|
|
@ -330,6 +330,32 @@ int _ui_getSettingsGPSValueName(char *buf, uint8_t max_len, uint8_t index)
|
|||
}
|
||||
#endif
|
||||
|
||||
int _ui_getM17EntryName(char *buf, uint8_t max_len, uint8_t index)
|
||||
{
|
||||
if(index >= settings_m17_num) return -1;
|
||||
snprintf(buf, max_len, "%s", settings_m17_items[index]);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int _ui_getM17ValueName(char *buf, uint8_t max_len, uint8_t index)
|
||||
{
|
||||
if(index >= settings_m17_num)
|
||||
return -1;
|
||||
|
||||
switch(index)
|
||||
{
|
||||
case M17_CALLSIGN:
|
||||
snprintf(buf, max_len, "%s", last_state.settings.callsign);
|
||||
break;
|
||||
|
||||
case M17_CAN:
|
||||
snprintf(buf, max_len, "%d", last_state.settings.m17_can);
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int _ui_getVoiceEntryName(char *buf, uint8_t max_len, uint8_t index)
|
||||
{
|
||||
if(index >= settings_voice_num) return -1;
|
||||
|
|
@ -785,7 +811,7 @@ void _ui_drawSettingsM17(ui_state_t* ui_state)
|
|||
gfx_printLine(1, 4, layout.top_h, SCREEN_HEIGHT - layout.bottom_h,
|
||||
layout.horizontal_pad, layout.menu_font,
|
||||
TEXT_ALIGN_LEFT, color_white, currentLanguage->callsign);
|
||||
if(ui_state->edit_mode)
|
||||
if((ui_state->edit_mode) && (ui_state->menu_selected == M17_CALLSIGN))
|
||||
{
|
||||
uint16_t rect_width = SCREEN_WIDTH - (layout.horizontal_pad * 2);
|
||||
uint16_t rect_height = (SCREEN_HEIGHT - (layout.top_h + layout.bottom_h))/2;
|
||||
|
|
@ -799,10 +825,8 @@ void _ui_drawSettingsM17(ui_state_t* ui_state)
|
|||
}
|
||||
else
|
||||
{
|
||||
// Print M17 current callsign
|
||||
gfx_printLine(1, 1, layout.top_h, SCREEN_HEIGHT - layout.bottom_h,
|
||||
layout.horizontal_pad, layout.input_font,
|
||||
TEXT_ALIGN_CENTER, color_white, last_state.settings.callsign);
|
||||
_ui_drawMenuListValue(ui_state, ui_state->menu_selected, _ui_getM17EntryName,
|
||||
_ui_getM17ValueName);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue