Skip to content

Commit

Permalink
Merge pull request betaflight#11538 from klutvott123/osd-visual-beeper
Browse files Browse the repository at this point in the history
Fix OSD visual beeper
  • Loading branch information
haslinghuis committed Apr 20, 2022
2 parents 32cbfff + 7cc4c44 commit 987fba3
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 2 deletions.
12 changes: 12 additions & 0 deletions src/main/io/beeper.c
Expand Up @@ -47,6 +47,10 @@
#include "io/gps.h"
#endif

#ifdef USE_OSD
#include "osd/osd.h"
#endif

#include "pg/beeper.h"

#include "scheduler/scheduler.h"
Expand Down Expand Up @@ -435,6 +439,14 @@ void beeperUpdate(timeUs_t currentTimeUs)
}
}

#if defined(USE_OSD)
static bool beeperWasOn = false;
if (beeperIsOn && !beeperWasOn) {
osdSetVisualBeeperState(true);
}
beeperWasOn = beeperIsOn;
#endif

beeperProcessCommand(currentTimeUs);
}

Expand Down
7 changes: 5 additions & 2 deletions src/main/osd/osd.c
Expand Up @@ -1205,8 +1205,6 @@ void osdUpdate(timeUs_t currentTimeUs)
break;

case OSD_STATE_CHECK:
showVisualBeeper = isBeeperOn();

// don't touch buffers if DMA transaction is in progress
if (displayIsTransferInProgress(osdDisplayPort)) {
break;
Expand Down Expand Up @@ -1474,6 +1472,11 @@ bool osdGetVisualBeeperState(void)
return showVisualBeeper;
}

void osdSetVisualBeeperState(bool state)
{
showVisualBeeper = state;
}

statistic_t *osdGetStats(void)
{
return &stats;
Expand Down
1 change: 1 addition & 0 deletions src/main/osd/osd.h
Expand Up @@ -354,6 +354,7 @@ void osdWarnSetState(uint8_t warningIndex, bool enabled);
bool osdWarnGetState(uint8_t warningIndex);
bool osdElementVisible(uint16_t value);
bool osdGetVisualBeeperState(void);
void osdSetVisualBeeperState(bool state);
statistic_t *osdGetStats(void);
bool osdNeedsAccelerometer(void);
int osdPrintFloat(char *buffer, char leadingSymbol, float value, char *formatString, unsigned decimalPlaces, bool round, char trailingSymbol);
1 change: 1 addition & 0 deletions src/main/osd/osd_warnings.c
Expand Up @@ -331,6 +331,7 @@ void renderOsdWarning(char *warningText, bool *blinking, uint8_t *displayAttr)
if (osdWarnGetState(OSD_WARNING_VISUAL_BEEPER) && osdGetVisualBeeperState()) {
tfp_sprintf(warningText, " * * * *");
*displayAttr = DISPLAYPORT_ATTR_INFO;
osdSetVisualBeeperState(false);
return;
}

Expand Down

0 comments on commit 987fba3

Please sign in to comment.