void handlePageChange(void) { // Some OLED displays do not respond on the first initialisation so refresh the display // when the page changes in the hopes the hardware responds. This also allows the // user to power off/on the display or connect it while powered. resetDisplay(); i2c_OLED_clear_display_quick(); showTitle(); }
void handlePageChange(void) { i2c_OLED_clear_display_quick(); showTitle(); }
void dashboardUpdate(timeUs_t currentTimeUs) { static uint8_t previousArmedState = 0; bool pageChanging; #ifdef CMS static bool wasGrabbed = false; if (displayIsGrabbed(displayPort)) { wasGrabbed = true; return; } else if (wasGrabbed) { pageChanging = true; wasGrabbed = false; } else { pageChanging = false; } #else pageChanging = false; #endif bool updateNow = (int32_t)(currentTimeUs - nextDisplayUpdateAt) >= 0L; if (!updateNow) { return; } nextDisplayUpdateAt = currentTimeUs + DASHBOARD_UPDATE_FREQUENCY; bool armedState = ARMING_FLAG(ARMED) ? true : false; bool armedStateChanged = armedState != previousArmedState; previousArmedState = armedState; if (armedState) { if (!armedStateChanged) { return; } currentPageId = PAGE_ARMED; pageChanging = true; } else { if (armedStateChanged) { currentPageId = PAGE_STATUS; pageChanging = true; } if ((currentPageId == PAGE_WELCOME) && ((int32_t)(currentTimeUs - nextPageAt) >= 0L)) { currentPageId = PAGE_STATUS; pageChanging = true; } if (forcePageChange) { pageChanging = true; forcePageChange = false; } } if (pageChanging) { // Some OLED displays do not respond on the first initialisation so refresh the display // when the page changes in the hopes the hardware responds. This also allows the // user to power off/on the display or connect it while powered. if (!displayPresent) { resetDisplay(); } if (!displayPresent) { return; } i2c_OLED_clear_display_quick(); showTitle(); } if (!displayPresent) { return; } switch(currentPageId) { case PAGE_WELCOME: showWelcomePage(); break; case PAGE_ARMED: showArmedPage(); break; case PAGE_STATUS: showStatusPage(); break; } if (!armedState) { updateFailsafeStatus(); updateRxStatus(); updateTicker(); } }