Skip to content

Commit

Permalink
Add brightness level API to OLED driver (qmk#10772)
Browse files Browse the repository at this point in the history
* Add brightness level API to OLED driver

* Set default brightness to 255
  • Loading branch information
fauxpark authored and drashna committed Jan 13, 2021
1 parent 0928d03 commit 7812b1d
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 27 deletions.
17 changes: 16 additions & 1 deletion drivers/oled/oled_driver.c
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,7 @@ OLED_BLOCK_TYPE oled_dirty = 0;
bool oled_initialized = false;
bool oled_active = false;
bool oled_scrolling = false;
uint8_t oled_brightness = OLED_BRIGHTNESS;
uint8_t oled_rotation = 0;
uint8_t oled_rotation_width = 0;
uint8_t oled_scroll_speed = 0; // this holds the speed after being remapped to ssd1306 internal values
Expand Down Expand Up @@ -193,7 +194,7 @@ bool oled_init(uint8_t rotation) {
}
}

static const uint8_t PROGMEM display_setup2[] = {I2C_CMD, COM_PINS, OLED_COM_PINS, CONTRAST, 0x8F, PRE_CHARGE_PERIOD, 0xF1, VCOM_DETECT, 0x40, DISPLAY_ALL_ON_RESUME, NORMAL_DISPLAY, DEACTIVATE_SCROLL, DISPLAY_ON};
static const uint8_t PROGMEM display_setup2[] = {I2C_CMD, COM_PINS, OLED_COM_PINS, CONTRAST, OLED_BRIGHTNESS, PRE_CHARGE_PERIOD, 0xF1, VCOM_DETECT, 0x20, DISPLAY_ALL_ON_RESUME, NORMAL_DISPLAY, DEACTIVATE_SCROLL, DISPLAY_ON};
if (I2C_TRANSMIT_P(display_setup2) != I2C_STATUS_SUCCESS) {
print("display_setup2 failed\n");
return false;
Expand Down Expand Up @@ -550,6 +551,20 @@ bool oled_off(void) {

bool is_oled_on(void) { return oled_active; }

uint8_t oled_set_brightness(uint8_t level) {
uint8_t set_contrast[] = {I2C_CMD, CONTRAST, level};
if (oled_brightness != level) {
if (I2C_TRANSMIT(set_contrast) != I2C_STATUS_SUCCESS) {
print("set_brightness cmd failed\n");
return oled_brightness;
}
oled_brightness = level;
}
return oled_brightness;
}

uint8_t oled_get_brightness(void) { return oled_brightness; }

// Set the specific 8 lines rows of the screen to scroll.
// 0 is the default for start, and 7 for end, which is the entire
// height of the screen. For 128x32 screens, rows 4-7 are not used.
Expand Down
10 changes: 10 additions & 0 deletions drivers/oled/oled_driver.h
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#if !defined(OLED_FONT_HEIGHT)
# define OLED_FONT_HEIGHT 8
#endif
// Default brightness level
#if !defined(OLED_BRIGHTNESS)
# define OLED_BRIGHTNESS 255
#endif

#if !defined(OLED_TIMEOUT)
# if defined(OLED_DISABLE_TIMEOUT)
Expand Down Expand Up @@ -261,6 +265,12 @@ bool oled_off(void);
// not
bool is_oled_on(void);

// Sets the brightness of the display
uint8_t oled_set_brightness(uint8_t level);

// Gets the current brightness of the display
uint8_t oled_get_brightness(void);

// Basically it's oled_render, but with timeout management and oled_task_user calling!
void oled_task(void);

Expand Down
23 changes: 0 additions & 23 deletions keyboards/handwired/onekey/keymaps/pytest_nocpp/keymap.c

This file was deleted.

3 changes: 0 additions & 3 deletions keyboards/handwired/onekey/pytest/templates/keymap.json

This file was deleted.

0 comments on commit 7812b1d

Please sign in to comment.