diff --git a/Makefile b/Makefile
index 7479252aa4..62a455084c 100644
--- a/Makefile
+++ b/Makefile
@@ -556,6 +556,7 @@ HIGHEND_SRC = \
cms/cms_menu_builtin.c \
cms/cms_menu_imu.c \
cms/cms_menu_ledstrip.c \
+ cms/cms_menu_osd.c \
cms/cms_menu_vtx.c \
common/colorconversion.c \
drivers/display_ug2864hsweg01.c \
diff --git a/src/main/cms/cms_menu_osd.c b/src/main/cms/cms_menu_osd.c
new file mode 100644
index 0000000000..e85a9f173e
--- /dev/null
+++ b/src/main/cms/cms_menu_osd.c
@@ -0,0 +1,113 @@
+/*
+ * This file is part of Cleanflight.
+ *
+ * Cleanflight is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Cleanflight is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Cleanflight. If not, see .
+ */
+
+#include
+#include
+#include
+
+#include "platform.h"
+
+#include "build/version.h"
+
+#include "cms/cms.h"
+#include "cms/cms_types.h"
+#include "cms/cms_menu_osd.h"
+
+#include "config/config_profile.h"
+#include "config/config_master.h"
+#include "config/feature.h"
+
+#ifdef CMS
+
+OSD_UINT8_t entryAlarmRssi = {&masterConfig.osdProfile.rssi_alarm, 5, 90, 5};
+OSD_UINT16_t entryAlarmCapacity = {&masterConfig.osdProfile.cap_alarm, 50, 30000, 50};
+OSD_UINT16_t enryAlarmFlyTime = {&masterConfig.osdProfile.time_alarm, 1, 200, 1};
+OSD_UINT16_t entryAlarmAltitude = {&masterConfig.osdProfile.alt_alarm, 1, 200, 1};
+
+OSD_Entry cmsx_menuAlarmsEntries[] =
+{
+ {"--- ALARMS ---", OME_Label, NULL, NULL, 0},
+ {"RSSI", OME_UINT8, NULL, &entryAlarmRssi, 0},
+ {"MAIN BAT", OME_UINT16, NULL, &entryAlarmCapacity, 0},
+ {"FLY TIME", OME_UINT16, NULL, &enryAlarmFlyTime, 0},
+ {"MAX ALT", OME_UINT16, NULL, &entryAlarmAltitude, 0},
+ {"BACK", OME_Back, NULL, NULL, 0},
+ {NULL, OME_END, NULL, NULL, 0}
+};
+
+CMS_Menu cmsx_menuAlarms = {
+ "MENUALARMS",
+ OME_MENU,
+ NULL,
+ NULL,
+ NULL,
+ cmsx_menuAlarmsEntries,
+};
+
+OSD_Entry menuOsdActiveElemsEntries[] =
+{
+ {"--- ACTIV ELEM ---", OME_Label, NULL, NULL, 0},
+ {"RSSI", OME_VISIBLE, NULL, &masterConfig.osdProfile.item_pos[OSD_RSSI_VALUE], 0},
+ {"MAIN BATTERY", OME_VISIBLE, NULL, &masterConfig.osdProfile.item_pos[OSD_MAIN_BATT_VOLTAGE], 0},
+ {"HORIZON", OME_VISIBLE, NULL, &masterConfig.osdProfile.item_pos[OSD_ARTIFICIAL_HORIZON], 0},
+ {"HORIZON SIDEBARS", OME_VISIBLE, NULL, &masterConfig.osdProfile.item_pos[OSD_HORIZON_SIDEBARS], 0},
+ {"UPTIME", OME_VISIBLE, NULL, &masterConfig.osdProfile.item_pos[OSD_ONTIME], 0},
+ {"FLY TIME", OME_VISIBLE, NULL, &masterConfig.osdProfile.item_pos[OSD_FLYTIME], 0},
+ {"FLY MODE", OME_VISIBLE, NULL, &masterConfig.osdProfile.item_pos[OSD_FLYMODE], 0},
+ {"NAME", OME_VISIBLE, NULL, &masterConfig.osdProfile.item_pos[OSD_CRAFT_NAME], 0},
+ {"THROTTLE", OME_VISIBLE, NULL, &masterConfig.osdProfile.item_pos[OSD_THROTTLE_POS], 0},
+#ifdef VTX
+ {"VTX CHAN", OME_VISIBLE, NULL, &masterConfig.osdProfile.item_pos[OSD_VTX_CHANNEL]},
+#endif // VTX
+ {"CURRENT (A)", OME_VISIBLE, NULL, &masterConfig.osdProfile.item_pos[OSD_CURRENT_DRAW], 0},
+ {"USED MAH", OME_VISIBLE, NULL, &masterConfig.osdProfile.item_pos[OSD_MAH_DRAWN], 0},
+#ifdef GPS
+ {"GPS SPEED", OME_VISIBLE, NULL, &masterConfig.osdProfile.item_pos[OSD_GPS_SPEED], 0},
+ {"GPS SATS.", OME_VISIBLE, NULL, &masterConfig.osdProfile.item_pos[OSD_GPS_SATS], 0},
+#endif // GPS
+ {"ALTITUDE", OME_VISIBLE, NULL, &masterConfig.osdProfile.item_pos[OSD_ALTITUDE], 0},
+ {"BACK", OME_Back, NULL, NULL, 0},
+ {NULL, OME_END, NULL, NULL, 0}
+};
+
+CMS_Menu menuOsdActiveElems = {
+ "MENUOSDACT",
+ OME_MENU,
+ NULL,
+ NULL,
+ NULL,
+ menuOsdActiveElemsEntries,
+};
+
+OSD_Entry cmsx_menuOsdLayoutEntries[] =
+{
+ {"---SCREEN LAYOUT---", OME_Label, NULL, NULL, 0},
+ {"ACTIVE ELEM", OME_Submenu, cmsMenuChange, &menuOsdActiveElems, 0},
+ {"BACK", OME_Back, NULL, NULL, 0},
+ {NULL, OME_END, NULL, NULL, 0}
+};
+
+CMS_Menu cmsx_menuOsdLayout = {
+ "MENULAYOUT",
+ OME_MENU,
+ NULL,
+ NULL,
+ NULL,
+ cmsx_menuOsdLayoutEntries,
+};
+
+#endif // CMS
diff --git a/src/main/io/osd.c b/src/main/io/osd.c
index ae96d31782..ce01260dc9 100755
--- a/src/main/io/osd.c
+++ b/src/main/io/osd.c
@@ -657,107 +657,4 @@ void osdUpdate(uint32_t currentTime)
#endif
}
-#ifdef EDIT_ELEMENT_SUPPORT
-void osdEditElement(void *ptr)
-{
- uint32_t address = (uint32_t)ptr;
-
- // zsave position on menu stack
- menuStack[menuStackIdx] = currentMenu;
- menuStackHistory[menuStackIdx] = currentMenuPos;
- menuStackIdx++;
-
- currentElement = (uint16_t *)address;
-
- *currentElement |= BLINK_FLAG;
- max7456ClearScreen();
-}
-
-void osdDrawElementPositioningHelp(void)
-{
- max7456Write(OSD_X(masterConfig.osdProfile.item_pos[OSD_ARTIFICIAL_HORIZON]), OSD_Y(masterConfig.osdProfile.item_pos[OSD_ARTIFICIAL_HORIZON]), "--- HELP --- ");
- max7456Write(OSD_X(masterConfig.osdProfile.item_pos[OSD_ARTIFICIAL_HORIZON]), OSD_Y(masterConfig.osdProfile.item_pos[OSD_ARTIFICIAL_HORIZON]) + 1, "USE ROLL/PITCH");
- max7456Write(OSD_X(masterConfig.osdProfile.item_pos[OSD_ARTIFICIAL_HORIZON]), OSD_Y(masterConfig.osdProfile.item_pos[OSD_ARTIFICIAL_HORIZON]) + 2, "TO MOVE ELEM. ");
- max7456Write(OSD_X(masterConfig.osdProfile.item_pos[OSD_ARTIFICIAL_HORIZON]), OSD_Y(masterConfig.osdProfile.item_pos[OSD_ARTIFICIAL_HORIZON]) + 3, " ");
- max7456Write(OSD_X(masterConfig.osdProfile.item_pos[OSD_ARTIFICIAL_HORIZON]), OSD_Y(masterConfig.osdProfile.item_pos[OSD_ARTIFICIAL_HORIZON]) + 4, "YAW - EXIT ");
-}
-#endif
-
-OSD_UINT8_t entryAlarmRssi = {&masterConfig.osdProfile.rssi_alarm, 5, 90, 5};
-OSD_UINT16_t entryAlarmCapacity = {&masterConfig.osdProfile.cap_alarm, 50, 30000, 50};
-OSD_UINT16_t enryAlarmFlyTime = {&masterConfig.osdProfile.time_alarm, 1, 200, 1};
-OSD_UINT16_t entryAlarmAltitude = {&masterConfig.osdProfile.alt_alarm, 1, 200, 1};
-
-OSD_Entry cmsx_menuAlarmsEntries[] =
-{
- {"--- ALARMS ---", OME_Label, NULL, NULL, 0},
- {"RSSI", OME_UINT8, NULL, &entryAlarmRssi, 0},
- {"MAIN BAT", OME_UINT16, NULL, &entryAlarmCapacity, 0},
- {"FLY TIME", OME_UINT16, NULL, &enryAlarmFlyTime, 0},
- {"MAX ALT", OME_UINT16, NULL, &entryAlarmAltitude, 0},
- {"BACK", OME_Back, NULL, NULL, 0},
- {NULL, OME_END, NULL, NULL, 0}
-};
-
-CMS_Menu cmsx_menuAlarms = {
- "MENUALARMS",
- OME_MENU,
- NULL,
- NULL,
- NULL,
- cmsx_menuAlarmsEntries,
-};
-
-OSD_Entry menuOsdActiveElemsEntries[] =
-{
- {"--- ACTIV ELEM ---", OME_Label, NULL, NULL, 0},
- {"RSSI", OME_VISIBLE, NULL, &masterConfig.osdProfile.item_pos[OSD_RSSI_VALUE], 0},
- {"MAIN BATTERY", OME_VISIBLE, NULL, &masterConfig.osdProfile.item_pos[OSD_MAIN_BATT_VOLTAGE], 0},
- {"HORIZON", OME_VISIBLE, NULL, &masterConfig.osdProfile.item_pos[OSD_ARTIFICIAL_HORIZON], 0},
- {"HORIZON SIDEBARS", OME_VISIBLE, NULL, &masterConfig.osdProfile.item_pos[OSD_HORIZON_SIDEBARS], 0},
- {"UPTIME", OME_VISIBLE, NULL, &masterConfig.osdProfile.item_pos[OSD_ONTIME], 0},
- {"FLY TIME", OME_VISIBLE, NULL, &masterConfig.osdProfile.item_pos[OSD_FLYTIME], 0},
- {"FLY MODE", OME_VISIBLE, NULL, &masterConfig.osdProfile.item_pos[OSD_FLYMODE], 0},
- {"NAME", OME_VISIBLE, NULL, &masterConfig.osdProfile.item_pos[OSD_CRAFT_NAME], 0},
- {"THROTTLE", OME_VISIBLE, NULL, &masterConfig.osdProfile.item_pos[OSD_THROTTLE_POS], 0},
-#ifdef VTX
- {"VTX CHAN", OME_VISIBLE, NULL, &masterConfig.osdProfile.item_pos[OSD_VTX_CHANNEL]},
-#endif // VTX
- {"CURRENT (A)", OME_VISIBLE, NULL, &masterConfig.osdProfile.item_pos[OSD_CURRENT_DRAW], 0},
- {"USED MAH", OME_VISIBLE, NULL, &masterConfig.osdProfile.item_pos[OSD_MAH_DRAWN], 0},
-#ifdef GPS
- {"GPS SPEED", OME_VISIBLE, NULL, &masterConfig.osdProfile.item_pos[OSD_GPS_SPEED], 0},
- {"GPS SATS.", OME_VISIBLE, NULL, &masterConfig.osdProfile.item_pos[OSD_GPS_SATS], 0},
-#endif // GPS
- {"ALTITUDE", OME_VISIBLE, NULL, &masterConfig.osdProfile.item_pos[OSD_ALTITUDE], 0},
- {"BACK", OME_Back, NULL, NULL, 0},
- {NULL, OME_END, NULL, NULL, 0}
-};
-
-CMS_Menu menuOsdActiveElems = {
- "MENUOSDACT",
- OME_MENU,
- NULL,
- NULL,
- NULL,
- menuOsdActiveElemsEntries,
-};
-
-OSD_Entry cmsx_menuOsdLayoutEntries[] =
-{
- {"---SCREEN LAYOUT---", OME_Label, NULL, NULL, 0},
- {"ACTIVE ELEM", OME_Submenu, cmsMenuChange, &menuOsdActiveElems, 0},
- {"BACK", OME_Back, NULL, NULL, 0},
- {NULL, OME_END, NULL, NULL, 0}
-};
-
-CMS_Menu cmsx_menuOsdLayout = {
- "MENULAYOUT",
- OME_MENU,
- NULL,
- NULL,
- NULL,
- cmsx_menuOsdLayoutEntries,
-};
-
#endif // OSD