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