diff --git a/openrtx/include/settings.h b/openrtx/include/settings.h index da34e56f..64e18a04 100644 --- a/openrtx/include/settings.h +++ b/openrtx/include/settings.h @@ -31,6 +31,7 @@ typedef struct int8_t utc_timezone; bool gps_enabled; bool gps_set_time; + char callsign[10]; // Plaintext callsign, used for M17 } __attribute__((packed)) settings_t; @@ -46,7 +47,8 @@ static const settings_t default_settings = #endif 0, // UTC Timezone false, // GPS enabled - true // GPS set time + true, // GPS set time + "" // Empty callsign }; #endif /* SETTINGS_H */ diff --git a/openrtx/include/ui.h b/openrtx/include/ui.h index d2605530..705908ac 100644 --- a/openrtx/include/ui.h +++ b/openrtx/include/ui.h @@ -54,6 +54,7 @@ enum uiScreen SETTINGS_TIMEDATE_SET, SETTINGS_DISPLAY, SETTINGS_GPS, + SETTINGS_M17, LOW_BAT }; @@ -87,6 +88,7 @@ enum settingsItems #ifdef HAS_GPS ,S_GPS #endif + ,S_M17 }; enum displayItems diff --git a/openrtx/src/ui/ui.c b/openrtx/src/ui/ui.c index a6ee04c0..a4e767b6 100644 --- a/openrtx/src/ui/ui.c +++ b/openrtx/src/ui/ui.c @@ -104,6 +104,7 @@ extern void _ui_drawSettingsTimeDate(); extern void _ui_drawSettingsTimeDateSet(ui_state_t* ui_state); #endif extern void _ui_drawSettingsDisplay(ui_state_t* ui_state); +extern void _ui_drawSettingsM17(); extern bool _ui_drawMacroMenu(); const char *menu_items[] = @@ -126,8 +127,9 @@ const char *settings_items[] = "Time & Date", #endif #ifdef HAS_GPS - "GPS" + "GPS", #endif + "M17" }; const char *display_items[] = @@ -1053,6 +1055,9 @@ void ui_updateFSM(event_t event, bool *sync_rtx) state.ui_screen = SETTINGS_GPS; break; #endif + case S_M17: + state.ui_screen = SETTINGS_M17; + break; default: state.ui_screen = MENU_SETTINGS; } @@ -1209,6 +1214,11 @@ void ui_updateFSM(event_t event, bool *sync_rtx) _ui_menuBack(MENU_SETTINGS); break; #endif + // M17 Settings + case SETTINGS_M17: + if(msg.keys & KEY_ESC) + _ui_menuBack(MENU_SETTINGS); + break; } } } @@ -1297,6 +1307,10 @@ void ui_updateGUI() _ui_drawSettingsGPS(&ui_state); break; #endif + // M17 settings screen + case SETTINGS_M17: + _ui_drawSettingsM17(); + break; // Low battery screen case LOW_BAT: _ui_drawLowBatteryScreen(); diff --git a/openrtx/src/ui/ui_menu.c b/openrtx/src/ui/ui_menu.c index 23b637b4..0baab518 100644 --- a/openrtx/src/ui/ui_menu.c +++ b/openrtx/src/ui/ui_menu.c @@ -513,6 +513,21 @@ void _ui_drawSettingsTimeDateSet(ui_state_t* ui_state) } #endif +void _ui_drawSettingsM17() +{ + gfx_clearScreen(); + // Print "M17 Settings" on top bar + gfx_print(layout.top_pos, layout.top_font, TEXT_ALIGN_CENTER, + color_white, "M17 Settings"); + gfx_printLine(1, 4, layout.top_h, SCREEN_HEIGHT - layout.bottom_h, + layout.horizontal_pad, layout.menu_font, + TEXT_ALIGN_LEFT, color_white, "Callsign:"); + // 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); +} + bool _ui_drawMacroMenu() { // Header gfx_print(layout.top_pos, layout.top_font, TEXT_ALIGN_CENTER,