1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-19 06:15:16 +03:00

Refactored CMS VTX menu selection to not use 'checkRedirect'.

This commit is contained in:
mikeller 2019-11-25 02:50:57 +13:00
parent 818402ccc4
commit 95791fc293
3 changed files with 41 additions and 30 deletions

View file

@ -63,7 +63,7 @@ static const OSD_Entry menuFeaturesEntries[] =
#endif
#if defined(USE_VTX_CONTROL)
#if defined(USE_VTX_RTC6705) || defined(USE_VTX_SMARTAUDIO) || defined(USE_VTX_TRAMP)
{"VTX", OME_Submenu, cmsMenuChange, &cmsx_menuVtxRedirect, 0},
{"VTX", OME_Funcall, cmsSelectVtx, NULL, 0},
#endif
#endif // VTX_CONTROL
#ifdef USE_LED_STRIP

View file

@ -64,11 +64,34 @@ static long setStatusMessage(void)
return 0;
}
static const OSD_Entry vtxErrorMenuEntries[] =
{
{ "", OME_Label, NULL, statusLine1, DYNAMIC },
{ "", OME_Label, NULL, statusLine2, DYNAMIC },
{ "", OME_Label, NULL, NULL, 0 },
{ "BACK", OME_Back, NULL, NULL, 0 },
{ NULL, OME_END, NULL, NULL, 0 }
};
static CMS_Menu cmsx_menuVtxError = {
#ifdef CMS_MENU_DEBUG
.GUARD_text = "XVTXERROR",
.GUARD_type = OME_MENU,
#endif
.onEnter = setStatusMessage,
.onExit = NULL,
.checkRedirect = NULL,
.onDisplayUpdate = NULL,
.entries = vtxErrorMenuEntries,
};
// Redirect to the proper menu based on the vtx device type
// If device isn't valid or not a supported type then don't
// redirect and instead display a local informational menu.
static const void *vtxMenuRedirect(void)
long cmsSelectVtx(displayPort_t *pDisplay, const void *ptr)
{
UNUSED(ptr);
vtxDevice_t *device = vtxCommonDevice();
if (device) {
@ -78,44 +101,32 @@ static const void *vtxMenuRedirect(void)
#if defined(USE_VTX_RTC6705)
case VTXDEV_RTC6705:
return &cmsx_menuVtxRTC6705;
cmsMenuChange(pDisplay, &cmsx_menuVtxRTC6705);
break;
#endif
#if defined(USE_VTX_SMARTAUDIO)
case VTXDEV_SMARTAUDIO:
return &cmsx_menuVtxSmartAudio;
cmsMenuChange(pDisplay, &cmsx_menuVtxSmartAudio);
break;
#endif
#if defined(USE_VTX_TRAMP)
case VTXDEV_TRAMP:
return &cmsx_menuVtxTramp;
cmsMenuChange(pDisplay, &cmsx_menuVtxTramp);
break;
#endif
default:
return NULL;
cmsMenuChange(pDisplay, &cmsx_menuVtxError);
break;
}
} else {
cmsMenuChange(pDisplay, &cmsx_menuVtxError);
}
return NULL;
return 0;
}
static const OSD_Entry vtxRedirectMenuEntries[] =
{
{ "", OME_Label, NULL, statusLine1, DYNAMIC },
{ "", OME_Label, NULL, statusLine2, DYNAMIC },
{ "", OME_Label, NULL, NULL, 0 },
{ "BACK", OME_Back, NULL, NULL, 0 },
{ NULL, OME_END, NULL, NULL, 0 }
};
CMS_Menu cmsx_menuVtxRedirect = {
#ifdef CMS_MENU_DEBUG
.GUARD_text = "XVTXREDIRECT",
.GUARD_type = OME_MENU,
#endif
.onEnter = setStatusMessage,
.onExit = NULL,
.checkRedirect = vtxMenuRedirect,
.onDisplayUpdate = NULL,
.entries = vtxRedirectMenuEntries,
};
#endif

View file

@ -23,4 +23,4 @@
#include "cms/cms.h"
#include "cms/cms_types.h"
extern CMS_Menu cmsx_menuVtxRedirect;
long cmsSelectVtx(displayPort_t *pDisplay, const void *ptr);