aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXScorpion2 <rcalt2vt@gmail.com>2020-12-05 19:53:47 -0600
committerGitHub <noreply@github.com>2020-12-06 12:53:47 +1100
commitcba76092ebab65b1b6ec964b2723b795dc6c0b08 (patch)
tree6ab451e314f0c782fca37d8ded44ce196258cbf3
parent5cf70f3993ceecf24dc46c6791552f268d82ae91 (diff)
downloadqmk_firmware-cba76092ebab65b1b6ec964b2723b795dc6c0b08.tar.gz
qmk_firmware-cba76092ebab65b1b6ec964b2723b795dc6c0b08.zip
Added OLED Initialized checks (#11129)
-rw-r--r--drivers/oled/oled_driver.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/drivers/oled/oled_driver.c b/drivers/oled/oled_driver.c
index 53bb8ca3f..92c64399e 100644
--- a/drivers/oled/oled_driver.c
+++ b/drivers/oled/oled_driver.c
@@ -271,6 +271,10 @@ static void rotate_90(const uint8_t *src, uint8_t *dest) {
271} 271}
272 272
273void oled_render(void) { 273void oled_render(void) {
274 if (!oled_initialized) {
275 return;
276 }
277
274 // Do we have work to do? 278 // Do we have work to do?
275 oled_dirty &= OLED_ALL_BLOCKS_MASK; 279 oled_dirty &= OLED_ALL_BLOCKS_MASK;
276 if (!oled_dirty || oled_scrolling) { 280 if (!oled_dirty || oled_scrolling) {
@@ -527,6 +531,10 @@ void oled_write_raw_P(const char *data, uint16_t size) {
527#endif // defined(__AVR__) 531#endif // defined(__AVR__)
528 532
529bool oled_on(void) { 533bool oled_on(void) {
534 if (!oled_initialized) {
535 return oled_active;
536 }
537
530#if OLED_TIMEOUT > 0 538#if OLED_TIMEOUT > 0
531 oled_timeout = timer_read32() + OLED_TIMEOUT; 539 oled_timeout = timer_read32() + OLED_TIMEOUT;
532#endif 540#endif
@@ -543,6 +551,10 @@ bool oled_on(void) {
543} 551}
544 552
545bool oled_off(void) { 553bool oled_off(void) {
554 if (!oled_initialized) {
555 return !oled_active;
556 }
557
546 static const uint8_t PROGMEM display_off[] = {I2C_CMD, DISPLAY_OFF}; 558 static const uint8_t PROGMEM display_off[] = {I2C_CMD, DISPLAY_OFF};
547 if (oled_active) { 559 if (oled_active) {
548 if (I2C_TRANSMIT_P(display_off) != I2C_STATUS_SUCCESS) { 560 if (I2C_TRANSMIT_P(display_off) != I2C_STATUS_SUCCESS) {
@@ -557,6 +569,10 @@ bool oled_off(void) {
557bool is_oled_on(void) { return oled_active; } 569bool is_oled_on(void) { return oled_active; }
558 570
559uint8_t oled_set_brightness(uint8_t level) { 571uint8_t oled_set_brightness(uint8_t level) {
572 if (!oled_initialized) {
573 return oled_brightness;
574 }
575
560 uint8_t set_contrast[] = {I2C_CMD, CONTRAST, level}; 576 uint8_t set_contrast[] = {I2C_CMD, CONTRAST, level};
561 if (oled_brightness != level) { 577 if (oled_brightness != level) {
562 if (I2C_TRANSMIT(set_contrast) != I2C_STATUS_SUCCESS) { 578 if (I2C_TRANSMIT(set_contrast) != I2C_STATUS_SUCCESS) {
@@ -596,6 +612,10 @@ void oled_scroll_set_speed(uint8_t speed) {
596} 612}
597 613
598bool oled_scroll_right(void) { 614bool oled_scroll_right(void) {
615 if (!oled_initialized) {
616 return oled_scrolling;
617 }
618
599 // Dont enable scrolling if we need to update the display 619 // Dont enable scrolling if we need to update the display
600 // This prevents scrolling of bad data from starting the scroll too early after init 620 // This prevents scrolling of bad data from starting the scroll too early after init
601 if (!oled_dirty && !oled_scrolling) { 621 if (!oled_dirty && !oled_scrolling) {
@@ -610,6 +630,10 @@ bool oled_scroll_right(void) {
610} 630}
611 631
612bool oled_scroll_left(void) { 632bool oled_scroll_left(void) {
633 if (!oled_initialized) {
634 return oled_scrolling;
635 }
636
613 // Dont enable scrolling if we need to update the display 637 // Dont enable scrolling if we need to update the display
614 // This prevents scrolling of bad data from starting the scroll too early after init 638 // This prevents scrolling of bad data from starting the scroll too early after init
615 if (!oled_dirty && !oled_scrolling) { 639 if (!oled_dirty && !oled_scrolling) {
@@ -624,6 +648,10 @@ bool oled_scroll_left(void) {
624} 648}
625 649
626bool oled_scroll_off(void) { 650bool oled_scroll_off(void) {
651 if (!oled_initialized) {
652 return !oled_scrolling;
653 }
654
627 if (oled_scrolling) { 655 if (oled_scrolling) {
628 static const uint8_t PROGMEM display_scroll_off[] = {I2C_CMD, DEACTIVATE_SCROLL}; 656 static const uint8_t PROGMEM display_scroll_off[] = {I2C_CMD, DEACTIVATE_SCROLL};
629 if (I2C_TRANSMIT_P(display_scroll_off) != I2C_STATUS_SUCCESS) { 657 if (I2C_TRANSMIT_P(display_scroll_off) != I2C_STATUS_SUCCESS) {