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",
|
"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) }
|
#define LOOKUP_TABLE_ENTRY(name) { name, ARRAYLEN(name) }
|
||||||
|
|
||||||
|
@ -606,6 +611,10 @@ const lookupTableEntry_t lookupTables[] = {
|
||||||
LOOKUP_TABLE_ENTRY(lookupTableInterpolatedSetpoint),
|
LOOKUP_TABLE_ENTRY(lookupTableInterpolatedSetpoint),
|
||||||
LOOKUP_TABLE_ENTRY(lookupTableDshotBitbangedTimer),
|
LOOKUP_TABLE_ENTRY(lookupTableDshotBitbangedTimer),
|
||||||
LOOKUP_TABLE_ENTRY(lookupTableOsdDisplayPortDevice),
|
LOOKUP_TABLE_ENTRY(lookupTableOsdDisplayPortDevice),
|
||||||
|
|
||||||
|
#ifdef USE_OSD
|
||||||
|
LOOKUP_TABLE_ENTRY(lookupTableOsdLogoOnArming),
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
#undef LOOKUP_TABLE_ENTRY
|
#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_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_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_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_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]) },
|
{ "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_INTERPOLATED_SP,
|
||||||
TABLE_DSHOT_BITBANGED_TIMER,
|
TABLE_DSHOT_BITBANGED_TIMER,
|
||||||
TABLE_OSD_DISPLAYPORT_DEVICE,
|
TABLE_OSD_DISPLAYPORT_DEVICE,
|
||||||
|
#ifdef USE_OSD
|
||||||
|
TABLE_OSD_LOGO_ON_ARMING,
|
||||||
|
#endif
|
||||||
|
|
||||||
LOOKUP_TABLE_COUNT
|
LOOKUP_TABLE_COUNT
|
||||||
} lookupTableIndex_e;
|
} lookupTableIndex_e;
|
||||||
|
|
|
@ -91,6 +91,12 @@
|
||||||
#include "hardware_revision.h"
|
#include "hardware_revision.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
OSD_LOGO_ARMING_OFF,
|
||||||
|
OSD_LOGO_ARMING_ON,
|
||||||
|
OSD_LOGO_ARMING_FIRST
|
||||||
|
} osd_logo_on_arming_e;
|
||||||
|
|
||||||
const char * const osdTimerSourceNames[] = {
|
const char * const osdTimerSourceNames[] = {
|
||||||
"ON TIME ",
|
"ON TIME ",
|
||||||
"TOTAL ARM",
|
"TOTAL ARM",
|
||||||
|
@ -332,6 +338,7 @@ void pgResetFn_osdConfig(osdConfig_t *osdConfig)
|
||||||
osdConfig->displayPortDevice = OSD_DISPLAYPORT_DEVICE_AUTO;
|
osdConfig->displayPortDevice = OSD_DISPLAYPORT_DEVICE_AUTO;
|
||||||
|
|
||||||
osdConfig->distance_alarm = 0;
|
osdConfig->distance_alarm = 0;
|
||||||
|
osdConfig->logo_on_arming = OSD_LOGO_ARMING_OFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void osdDrawLogo(int x, int y)
|
static void osdDrawLogo(int x, int y)
|
||||||
|
@ -808,8 +815,14 @@ static void osdRefreshStats(void)
|
||||||
|
|
||||||
static void osdShowArmed(void)
|
static void osdShowArmed(void)
|
||||||
{
|
{
|
||||||
|
static bool everArmed = false;
|
||||||
|
|
||||||
displayClearScreen(osdDisplayPort);
|
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");
|
displayWrite(osdDisplayPort, 12, 7, DISPLAYPORT_ATTR_NONE, "ARMED");
|
||||||
|
everArmed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
STATIC_UNIT_TESTED void osdRefresh(timeUs_t currentTimeUs)
|
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
|
int8_t rcChannels[OSD_RCCHANNELS_COUNT]; // RC channel values to display, -1 if none
|
||||||
uint8_t displayPortDevice; // osdDisplayPortDevice_e
|
uint8_t displayPortDevice; // osdDisplayPortDevice_e
|
||||||
uint16_t distance_alarm;
|
uint16_t distance_alarm;
|
||||||
|
uint8_t logo_on_arming; // show the logo on arming
|
||||||
} osdConfig_t;
|
} osdConfig_t;
|
||||||
|
|
||||||
PG_DECLARE(osdConfig_t, osdConfig);
|
PG_DECLARE(osdConfig_t, osdConfig);
|
||||||
|
|
Loading…
Reference in New Issue