Skip to content

Commit

Permalink
Added OLED Initialized checks (qmk#11129)
Browse files Browse the repository at this point in the history
  • Loading branch information
XScorpion2 authored Dec 6, 2020
1 parent 5cf70f3 commit cba7609
Showing 1 changed file with 28 additions and 0 deletions.
28 changes: 28 additions & 0 deletions drivers/oled/oled_driver.c
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down Expand Up @@ -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
Expand All @@ -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) {
Expand All @@ -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) {
Expand Down Expand Up @@ -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) {
Expand All @@ -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) {
Expand All @@ -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) {
Expand Down

0 comments on commit cba7609

Please sign in to comment.