1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-26 01:35:41 +03:00

OSD timers safety - code review changes

This commit is contained in:
Krzysztof Matula 2019-04-15 23:24:30 +02:00
parent 078e7fc0a5
commit b8b5b133dc
3 changed files with 13 additions and 11 deletions

View file

@ -471,16 +471,11 @@ static void validateAndFixConfig(void)
#if defined(USE_OSD) #if defined(USE_OSD)
for (int i = 0; i < OSD_TIMER_COUNT; i++) { for (int i = 0; i < OSD_TIMER_COUNT; i++) {
const uint16_t timer = osdConfig()->timers[i]; const uint16_t t = osdConfig()->timers[i];
int src = OSD_TIMER_SRC(timer); if (OSD_TIMER_SRC(t) >= OSD_TIMER_SRC_COUNT ||
int prc = OSD_TIMER_PRECISION(timer); OSD_TIMER_PRECISION(t) >= OSD_TIMER_PREC_COUNT) {
if (src >= OSD_TIMER_SRC_COUNT) { osdConfigMutable()->timers[i] = osdTimerDefault[i];
src = 0;
} }
if (prc >= OSD_TIMER_PREC_COUNT) {
prc = 0;
}
osdConfigMutable()->timers[i] = OSD_TIMER(src, prc, OSD_TIMER_ALARM(timer));
} }
#endif #endif
} }

View file

@ -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;

View file

@ -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];