~ruther/qmk_firmware

cba76092ebab65b1b6ec964b2723b795dc6c0b08 — XScorpion2 4 years ago 5cf70f3
Added OLED Initialized checks (#11129)

1 files changed, 28 insertions(+), 0 deletions(-)

M drivers/oled/oled_driver.c
M drivers/oled/oled_driver.c => drivers/oled/oled_driver.c +28 -0
@@ 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) {