mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-26 01:35:41 +03:00
Merge pull request #3308 from mikeller/added_osd_visual_beeper
Added visual beeper to OSD.
This commit is contained in:
commit
72f5a7940b
4 changed files with 27 additions and 19 deletions
|
@ -58,6 +58,7 @@
|
|||
#include "drivers/vtx_common.h"
|
||||
|
||||
#include "io/asyncfatfs/asyncfatfs.h"
|
||||
#include "io/beeper.h"
|
||||
#include "io/flashfs.h"
|
||||
#include "io/gps.h"
|
||||
#include "io/osd.h"
|
||||
|
@ -96,7 +97,8 @@
|
|||
|
||||
// Blink control
|
||||
|
||||
bool blinkState = true;
|
||||
static bool blinkState = true;
|
||||
static bool showVisualBeeper = false;
|
||||
|
||||
static uint32_t blinkBits[(OSD_ITEM_COUNT + 31)/32];
|
||||
#define SET_BLINK(item) (blinkBits[(item) / 32] |= (1 << ((item) % 32)))
|
||||
|
@ -523,7 +525,7 @@ static void osdDrawSingleElement(uint8_t item)
|
|||
break;
|
||||
}
|
||||
|
||||
case OSD_MAIN_BATT_WARNING:
|
||||
case OSD_WARNINGS:
|
||||
switch(getBatteryState()) {
|
||||
case BATTERY_WARNING:
|
||||
tfp_sprintf(buff, "LOW BATTERY");
|
||||
|
@ -534,7 +536,13 @@ static void osdDrawSingleElement(uint8_t item)
|
|||
break;
|
||||
|
||||
default:
|
||||
return;
|
||||
if (showVisualBeeper) {
|
||||
tfp_sprintf(buff, " * * * *");
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -628,7 +636,7 @@ static void osdDrawSingleElement(uint8_t item)
|
|||
displayWrite(osdDisplayPort, elemPosX + elemOffsetX, elemPosY, buff);
|
||||
}
|
||||
|
||||
void osdDrawElements(void)
|
||||
static void osdDrawElements(void)
|
||||
{
|
||||
displayClearScreen(osdDisplayPort);
|
||||
|
||||
|
@ -636,13 +644,6 @@ void osdDrawElements(void)
|
|||
if (IS_RC_MODE_ACTIVE(BOXOSD))
|
||||
return;
|
||||
|
||||
#if 0
|
||||
if (currentElement)
|
||||
osdDrawElementPositioningHelp();
|
||||
#else
|
||||
if (false)
|
||||
;
|
||||
#endif
|
||||
#ifdef CMS
|
||||
else if (sensors(SENSOR_ACC) || displayIsGrabbed(osdDisplayPort))
|
||||
#else
|
||||
|
@ -669,7 +670,7 @@ void osdDrawElements(void)
|
|||
osdDrawSingleElement(OSD_YAW_PIDS);
|
||||
osdDrawSingleElement(OSD_POWER);
|
||||
osdDrawSingleElement(OSD_PIDRATE_PROFILE);
|
||||
osdDrawSingleElement(OSD_MAIN_BATT_WARNING);
|
||||
osdDrawSingleElement(OSD_WARNINGS);
|
||||
osdDrawSingleElement(OSD_AVG_CELL_VOLTAGE);
|
||||
osdDrawSingleElement(OSD_DEBUG);
|
||||
osdDrawSingleElement(OSD_PITCH_ANGLE);
|
||||
|
@ -728,7 +729,7 @@ void pgResetFn_osdConfig(osdConfig_t *osdConfig)
|
|||
osdConfig->item_pos[OSD_YAW_PIDS] = OSD_POS(7, 15) | VISIBLE_FLAG;
|
||||
osdConfig->item_pos[OSD_POWER] = OSD_POS(1, 10) | VISIBLE_FLAG;
|
||||
osdConfig->item_pos[OSD_PIDRATE_PROFILE] = OSD_POS(25, 10) | VISIBLE_FLAG;
|
||||
osdConfig->item_pos[OSD_MAIN_BATT_WARNING] = OSD_POS(9, 10) | VISIBLE_FLAG;
|
||||
osdConfig->item_pos[OSD_WARNINGS] = OSD_POS(9, 10) | VISIBLE_FLAG;
|
||||
osdConfig->item_pos[OSD_AVG_CELL_VOLTAGE] = OSD_POS(12, 2) | VISIBLE_FLAG;
|
||||
osdConfig->item_pos[OSD_DEBUG] = OSD_POS(1, 0) | VISIBLE_FLAG;
|
||||
osdConfig->item_pos[OSD_PITCH_ANGLE] = OSD_POS(1, 8) | VISIBLE_FLAG;
|
||||
|
@ -826,12 +827,12 @@ void osdUpdateAlarms(void)
|
|||
CLR_BLINK(OSD_RSSI_VALUE);
|
||||
|
||||
if (getBatteryState() == BATTERY_OK) {
|
||||
CLR_BLINK(OSD_WARNINGS);
|
||||
CLR_BLINK(OSD_MAIN_BATT_VOLTAGE);
|
||||
CLR_BLINK(OSD_MAIN_BATT_WARNING);
|
||||
CLR_BLINK(OSD_AVG_CELL_VOLTAGE);
|
||||
} else {
|
||||
SET_BLINK(OSD_WARNINGS);
|
||||
SET_BLINK(OSD_MAIN_BATT_VOLTAGE);
|
||||
SET_BLINK(OSD_MAIN_BATT_WARNING);
|
||||
SET_BLINK(OSD_AVG_CELL_VOLTAGE);
|
||||
}
|
||||
|
||||
|
@ -863,7 +864,7 @@ void osdResetAlarms(void)
|
|||
{
|
||||
CLR_BLINK(OSD_RSSI_VALUE);
|
||||
CLR_BLINK(OSD_MAIN_BATT_VOLTAGE);
|
||||
CLR_BLINK(OSD_MAIN_BATT_WARNING);
|
||||
CLR_BLINK(OSD_WARNINGS);
|
||||
CLR_BLINK(OSD_GPS_SATS);
|
||||
CLR_BLINK(OSD_FLYTIME);
|
||||
CLR_BLINK(OSD_MAH_DRAWN);
|
||||
|
@ -1113,6 +1114,11 @@ static void osdRefresh(timeUs_t currentTimeUs)
|
|||
void osdUpdate(timeUs_t currentTimeUs)
|
||||
{
|
||||
static uint32_t counter = 0;
|
||||
|
||||
if (isBeeperOn()) {
|
||||
showVisualBeeper = true;
|
||||
}
|
||||
|
||||
#ifdef MAX7456_DMA_CHANNEL_TX
|
||||
// don't touch buffers if DMA transaction is in progress
|
||||
if (displayIsTransferInProgress(osdDisplayPort)) {
|
||||
|
@ -1138,6 +1144,8 @@ void osdUpdate(timeUs_t currentTimeUs)
|
|||
|
||||
if (counter++ % DRAW_FREQ_DENOM == 0) {
|
||||
osdRefresh(currentTimeUs);
|
||||
|
||||
showVisualBeeper = false;
|
||||
} else { // rest of time redraw screen 10 chars per idle so it doesn't lock the main idle
|
||||
displayDrawScreen(osdDisplayPort);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue