skip display pages with no content (issue #523)

This commit is contained in:
Verkehrsrot 2020-01-19 22:21:45 +01:00
parent 3be62fa21d
commit e8abe8567b
2 changed files with 32 additions and 27 deletions

View File

@ -6,10 +6,10 @@
extern uint8_t DisplayIsOn, displaybuf[];
void refreshTheDisplay(bool nextPage = false);
void refreshTheDisplay(bool nextPage = false, bool toggle_screencycle = false);
void init_display(bool verbose = false);
void shutdown_display(void);
void draw_page(time_t t, uint8_t page);
void draw_page(time_t t, bool nextpage, bool cyclescreen);
void dp_printf(uint16_t x, uint16_t y, uint8_t font, uint8_t inv,
const char *format, ...);
void dp_printqr(uint16_t offset_x, uint16_t offset_y, const char *Message);

View File

@ -149,11 +149,14 @@ void init_display(bool verbose) {
} // mutex
} // init_display
void refreshTheDisplay(bool nextPage) {
void refreshTheDisplay(bool nextPage, bool toggle_screencycle) {
static uint8_t DisplayPage = 0;
static bool screencycle = false;
// update histogram if we have a display
if (toggle_screencycle)
screencycle = !screencycle;
// update histogram
oledPlotCurve(macs.size(), false);
// if display is switched off we don't refresh it to relax cpu
@ -173,12 +176,7 @@ void refreshTheDisplay(bool nextPage) {
oledPower(cfg.screenon);
}
if (nextPage) {
DisplayPage = (DisplayPage >= DISPLAY_PAGES - 1) ? 0 : (DisplayPage + 1);
oledFill(0, 1);
}
draw_page(t, DisplayPage);
draw_page(t, nextPage, screencycle);
oledDumpBuffer(displaybuf);
I2C_MUTEX_UNLOCK(); // release i2c bus access
@ -198,18 +196,24 @@ void shutdown_display(void) {
}
}
void draw_page(time_t t, uint8_t page) {
void draw_page(time_t t, bool nextpage, bool cyclescreen) {
static uint8_t DisplayPage = 0;
char timeState;
#if (HAS_GPS)
static bool wasnofix = true;
#endif
if (nextpage) {
DisplayPage = (DisplayPage >= DISPLAY_PAGES - 1) ? 0 : (DisplayPage + 1);
oledFill(0, 1);
}
// line 1/2: pax counter
dp_printf(0, 0, FONT_STRETCHED, 0, "PAX:%-4d",
macs.size()); // display number of unique macs total Wifi + BLE
switch (page % DISPLAY_PAGES) {
switch (DisplayPage) {
// page 0: parameters overview
// page 1: pax graph
@ -323,12 +327,10 @@ void draw_page(time_t t, uint8_t page) {
dp_printf(16, 5, FONT_STRETCHED, 1, "No fix");
wasnofix = true;
}
#else
dp_printf(16, 5, FONT_STRETCHED, 1, "No GPS");
#endif
break; // page2
#else
DisplayPage++; // next page
#endif
// page 3: BME280/680
case 3:
@ -343,16 +345,14 @@ void draw_page(time_t t, uint8_t page) {
#ifdef HAS_BME680
// line 6-7: IAQ
dp_printf(0, 6, FONT_STRETCHED, 0, "IAQ:%-3.0f", bme_status.iaq);
#else // is BME280 or BMP180
#else // is BME280 or BMP180
// line 6-7: Pre
dp_printf(0, 6, FONT_STRETCHED, 0, "PRE:%-2.1f", bme_status.pressure);
#endif // HAS_BME
#endif // HAS_BME680
break; // page 3
#else
dp_printf(16, 5, FONT_STRETCHED, 1, "No BME");
#endif
break; // page3
DisplayPage++; // next page
#endif // HAS_BME
// page 4: time
case 4:
@ -364,8 +364,13 @@ void draw_page(time_t t, uint8_t page) {
// page 5: blank screen
case 5:
oledFill(0, 1);
break;
if (cyclescreen)
DisplayPage++;
else // show blank page only if we are not in screencycle mode
{
oledFill(0, 1);
break;
}
default:
break; // default