mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-23 16:25:31 +03:00
Merge pull request #8016 from krzysztofmatula/km-timer-safety-checks
OSD timers safety checks
This commit is contained in:
parent
600ea30f9f
commit
e15523bfe5
3 changed files with 21 additions and 2 deletions
|
@ -52,6 +52,8 @@
|
||||||
#include "io/serial.h"
|
#include "io/serial.h"
|
||||||
#include "io/gps.h"
|
#include "io/gps.h"
|
||||||
|
|
||||||
|
#include "osd/osd.h"
|
||||||
|
|
||||||
#include "pg/beeper.h"
|
#include "pg/beeper.h"
|
||||||
#include "pg/beeper_dev.h"
|
#include "pg/beeper_dev.h"
|
||||||
#include "pg/rx.h"
|
#include "pg/rx.h"
|
||||||
|
@ -461,6 +463,16 @@ static void validateAndFixConfig(void)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(USE_OSD)
|
||||||
|
for (int i = 0; i < OSD_TIMER_COUNT; i++) {
|
||||||
|
const uint16_t t = osdConfig()->timers[i];
|
||||||
|
if (OSD_TIMER_SRC(t) >= OSD_TIMER_SRC_COUNT ||
|
||||||
|
OSD_TIMER_PRECISION(t) >= OSD_TIMER_PREC_COUNT) {
|
||||||
|
osdConfigMutable()->timers[i] = osdTimerDefault[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(TARGET_VALIDATECONFIG)
|
#if defined(TARGET_VALIDATECONFIG)
|
||||||
targetValidateConfiguration();
|
targetValidateConfiguration();
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -197,6 +197,11 @@ static void osdDrawElements(timeUs_t currentTimeUs)
|
||||||
osdDrawActiveElements(osdDisplayPort, currentTimeUs);
|
osdDrawActiveElements(osdDisplayPort, currentTimeUs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const uint16_t osdTimerDefault[OSD_TIMER_COUNT] = {
|
||||||
|
OSD_TIMER(OSD_TIMER_SRC_ON, OSD_TIMER_PREC_SECOND, 10),
|
||||||
|
OSD_TIMER(OSD_TIMER_SRC_TOTAL_ARMED, OSD_TIMER_PREC_SECOND, 10)
|
||||||
|
};
|
||||||
|
|
||||||
void pgResetFn_osdConfig(osdConfig_t *osdConfig)
|
void pgResetFn_osdConfig(osdConfig_t *osdConfig)
|
||||||
{
|
{
|
||||||
// Position elements near centre of screen and disabled by default
|
// Position elements near centre of screen and disabled by default
|
||||||
|
@ -234,8 +239,8 @@ void pgResetFn_osdConfig(osdConfig_t *osdConfig)
|
||||||
osdWarnSetState(i, true);
|
osdWarnSetState(i, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
osdConfig->timers[OSD_TIMER_1] = OSD_TIMER(OSD_TIMER_SRC_ON, OSD_TIMER_PREC_SECOND, 10);
|
osdConfig->timers[OSD_TIMER_1] = osdTimerDefault[OSD_TIMER_1];
|
||||||
osdConfig->timers[OSD_TIMER_2] = OSD_TIMER(OSD_TIMER_SRC_TOTAL_ARMED, OSD_TIMER_PREC_SECOND, 10);
|
osdConfig->timers[OSD_TIMER_2] = osdTimerDefault[OSD_TIMER_2];
|
||||||
|
|
||||||
osdConfig->overlay_radio_mode = 2;
|
osdConfig->overlay_radio_mode = 2;
|
||||||
|
|
||||||
|
|
|
@ -215,6 +215,8 @@ STATIC_ASSERT(OSD_WARNING_COUNT <= 32, osdwarnings_overflow);
|
||||||
|
|
||||||
#define OSD_GPS_RESCUE_DISABLED_WARNING_DURATION_US 3000000 // 3 seconds
|
#define OSD_GPS_RESCUE_DISABLED_WARNING_DURATION_US 3000000 // 3 seconds
|
||||||
|
|
||||||
|
extern const uint16_t osdTimerDefault[OSD_TIMER_COUNT];
|
||||||
|
|
||||||
typedef struct osdConfig_s {
|
typedef struct osdConfig_s {
|
||||||
uint16_t item_pos[OSD_ITEM_COUNT];
|
uint16_t item_pos[OSD_ITEM_COUNT];
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue