Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added OLED Initialized checks #11129

Merged
merged 1 commit into from
Dec 6, 2020
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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