瀏覽代碼

Added OLED Initialized checks (#11129)

XScorpion2 4 年之前
父節點
當前提交
cba76092eb
共有 1 個文件被更改,包括 28 次插入0 次删除
  1. 28 0
      drivers/oled/oled_driver.c

+ 28 - 0
drivers/oled/oled_driver.c

@@ -271,6 +271,10 @@ static void rotate_90(const uint8_t *src, uint8_t *dest) {
 }
 
 void oled_render(void) {
+    if (!oled_initialized) {
+        return;
+    }
+
     // Do we have work to do?
     oled_dirty &= OLED_ALL_BLOCKS_MASK;
     if (!oled_dirty || oled_scrolling) {
@@ -527,6 +531,10 @@ void oled_write_raw_P(const char *data, uint16_t size) {
 #endif  // defined(__AVR__)
 
 bool oled_on(void) {
+    if (!oled_initialized) {
+        return oled_active;
+    }
+
 #if OLED_TIMEOUT > 0
     oled_timeout = timer_read32() + OLED_TIMEOUT;
 #endif
@@ -543,6 +551,10 @@ bool oled_on(void) {
 }
 
 bool oled_off(void) {
+    if (!oled_initialized) {
+        return !oled_active;
+    }
+
     static const uint8_t PROGMEM display_off[] = {I2C_CMD, DISPLAY_OFF};
     if (oled_active) {
         if (I2C_TRANSMIT_P(display_off) != I2C_STATUS_SUCCESS) {
@@ -557,6 +569,10 @@ bool oled_off(void) {
 bool is_oled_on(void) { return oled_active; }
 
 uint8_t oled_set_brightness(uint8_t level) {
+    if (!oled_initialized) {
+        return oled_brightness;
+    }
+
     uint8_t set_contrast[] = {I2C_CMD, CONTRAST, level};
     if (oled_brightness != level) {
         if (I2C_TRANSMIT(set_contrast) != I2C_STATUS_SUCCESS) {
@@ -596,6 +612,10 @@ void oled_scroll_set_speed(uint8_t speed) {
 }
 
 bool oled_scroll_right(void) {
+    if (!oled_initialized) {
+        return oled_scrolling;
+    }
+
     // Dont enable scrolling if we need to update the display
     // This prevents scrolling of bad data from starting the scroll too early after init
     if (!oled_dirty && !oled_scrolling) {
@@ -610,6 +630,10 @@ bool oled_scroll_right(void) {
 }
 
 bool oled_scroll_left(void) {
+    if (!oled_initialized) {
+        return oled_scrolling;
+    }
+
     // Dont enable scrolling if we need to update the display
     // This prevents scrolling of bad data from starting the scroll too early after init
     if (!oled_dirty && !oled_scrolling) {
@@ -624,6 +648,10 @@ bool oled_scroll_left(void) {
 }
 
 bool oled_scroll_off(void) {
+    if (!oled_initialized) {
+        return !oled_scrolling;
+    }
+
     if (oled_scrolling) {
         static const uint8_t PROGMEM display_scroll_off[] = {I2C_CMD, DEACTIVATE_SCROLL};
         if (I2C_TRANSMIT_P(display_scroll_off) != I2C_STATUS_SUCCESS) {