Add option to display the OSD logo on arming
Adds `osd_logo_on_arming` setting with values `OFF, ON, FIRST_ARMING` (defaults to `OFF`). Optionally displays the OSD splash logo durin the "ARMING" message.
This commit is contained in:
parent
cf86671997
commit
05c8538752
|
@ -487,6 +487,11 @@ static const char * const lookupTableOsdDisplayPortDevice[] = {
|
|||
"NONE", "AUTO", "MAX7456", "MSP",
|
||||
};
|
||||
|
||||
#ifdef USE_OSD
|
||||
static const char * const lookupTableOsdLogoOnArming[] = {
|
||||
"OFF", "ON", "FIRST_ARMING",
|
||||
};
|
||||
#endif
|
||||
|
||||
#define LOOKUP_TABLE_ENTRY(name) { name, ARRAYLEN(name) }
|
||||
|
||||
|
@ -606,6 +611,10 @@ const lookupTableEntry_t lookupTables[] = {
|
|||
LOOKUP_TABLE_ENTRY(lookupTableInterpolatedSetpoint),
|
||||
LOOKUP_TABLE_ENTRY(lookupTableDshotBitbangedTimer),
|
||||
LOOKUP_TABLE_ENTRY(lookupTableOsdDisplayPortDevice),
|
||||
|
||||
#ifdef USE_OSD
|
||||
LOOKUP_TABLE_ENTRY(lookupTableOsdLogoOnArming),
|
||||
#endif
|
||||
};
|
||||
|
||||
#undef LOOKUP_TABLE_ENTRY
|
||||
|
@ -1242,6 +1251,7 @@ const clivalue_t valueTable[] = {
|
|||
{ "osd_ah_max_pit", VAR_UINT8 | MASTER_VALUE, .config.minmaxUnsigned = { 0, 90 }, PG_OSD_CONFIG, offsetof(osdConfig_t, ahMaxPitch) },
|
||||
{ "osd_ah_max_rol", VAR_UINT8 | MASTER_VALUE, .config.minmaxUnsigned = { 0, 90 }, PG_OSD_CONFIG, offsetof(osdConfig_t, ahMaxRoll) },
|
||||
{ "osd_ah_invert", VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_OFF_ON }, PG_OSD_CONFIG, offsetof(osdConfig_t, ahInvert) },
|
||||
{ "osd_logo_on_arming", VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_OSD_LOGO_ON_ARMING }, PG_OSD_CONFIG, offsetof(osdConfig_t, logo_on_arming) },
|
||||
|
||||
{ "osd_tim1", VAR_UINT16 | MASTER_VALUE, .config.minmaxUnsigned = { 0, INT16_MAX }, PG_OSD_CONFIG, offsetof(osdConfig_t, timers[OSD_TIMER_1]) },
|
||||
{ "osd_tim2", VAR_UINT16 | MASTER_VALUE, .config.minmaxUnsigned = { 0, INT16_MAX }, PG_OSD_CONFIG, offsetof(osdConfig_t, timers[OSD_TIMER_2]) },
|
||||
|
|
|
@ -139,6 +139,9 @@ typedef enum {
|
|||
TABLE_INTERPOLATED_SP,
|
||||
TABLE_DSHOT_BITBANGED_TIMER,
|
||||
TABLE_OSD_DISPLAYPORT_DEVICE,
|
||||
#ifdef USE_OSD
|
||||
TABLE_OSD_LOGO_ON_ARMING,
|
||||
#endif
|
||||
|
||||
LOOKUP_TABLE_COUNT
|
||||
} lookupTableIndex_e;
|
||||
|
|
|
@ -91,6 +91,12 @@
|
|||
#include "hardware_revision.h"
|
||||
#endif
|
||||
|
||||
typedef enum {
|
||||
OSD_LOGO_ARMING_OFF,
|
||||
OSD_LOGO_ARMING_ON,
|
||||
OSD_LOGO_ARMING_FIRST
|
||||
} osd_logo_on_arming_e;
|
||||
|
||||
const char * const osdTimerSourceNames[] = {
|
||||
"ON TIME ",
|
||||
"TOTAL ARM",
|
||||
|
@ -332,6 +338,7 @@ void pgResetFn_osdConfig(osdConfig_t *osdConfig)
|
|||
osdConfig->displayPortDevice = OSD_DISPLAYPORT_DEVICE_AUTO;
|
||||
|
||||
osdConfig->distance_alarm = 0;
|
||||
osdConfig->logo_on_arming = OSD_LOGO_ARMING_OFF;
|
||||
}
|
||||
|
||||
static void osdDrawLogo(int x, int y)
|
||||
|
@ -808,8 +815,14 @@ static void osdRefreshStats(void)
|
|||
|
||||
static void osdShowArmed(void)
|
||||
{
|
||||
static bool everArmed = false;
|
||||
|
||||
displayClearScreen(osdDisplayPort);
|
||||
if ((osdConfig()->logo_on_arming == OSD_LOGO_ARMING_ON) || ((osdConfig()->logo_on_arming == OSD_LOGO_ARMING_FIRST) && !everArmed)) {
|
||||
osdDrawLogo(3, 1);
|
||||
}
|
||||
displayWrite(osdDisplayPort, 12, 7, DISPLAYPORT_ATTR_NONE, "ARMED");
|
||||
everArmed = true;
|
||||
}
|
||||
|
||||
STATIC_UNIT_TESTED void osdRefresh(timeUs_t currentTimeUs)
|
||||
|
|
|
@ -271,6 +271,7 @@ typedef struct osdConfig_s {
|
|||
int8_t rcChannels[OSD_RCCHANNELS_COUNT]; // RC channel values to display, -1 if none
|
||||
uint8_t displayPortDevice; // osdDisplayPortDevice_e
|
||||
uint16_t distance_alarm;
|
||||
uint8_t logo_on_arming; // show the logo on arming
|
||||
} osdConfig_t;
|
||||
|
||||
PG_DECLARE(osdConfig_t, osdConfig);
|
||||
|
|
Loading…
Reference in New Issue