diff options
author | XScorpion2 <rcalt2vt@gmail.com> | 2020-12-05 19:53:47 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-06 12:53:47 +1100 |
commit | cba76092ebab65b1b6ec964b2723b795dc6c0b08 (patch) | |
tree | 6ab451e314f0c782fca37d8ded44ce196258cbf3 /drivers/oled | |
parent | 5cf70f3993ceecf24dc46c6791552f268d82ae91 (diff) | |
download | qmk_firmware-cba76092ebab65b1b6ec964b2723b795dc6c0b08.tar.gz qmk_firmware-cba76092ebab65b1b6ec964b2723b795dc6c0b08.zip |
Added OLED Initialized checks (#11129)
Diffstat (limited to 'drivers/oled')
-rw-r--r-- | drivers/oled/oled_driver.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/drivers/oled/oled_driver.c b/drivers/oled/oled_driver.c index 53bb8ca3fa..92c64399e2 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) { } 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) { |