summaryrefslogtreecommitdiffstats
path: root/keyboards/cannonkeys/satisfaction75/satisfaction75.c
diff options
context:
space:
mode:
authorSergey Vlasov <sigprof@gmail.com>2021-10-10 19:01:29 +0300
committerGitHub <noreply@github.com>2021-10-10 17:01:29 +0100
commit2d3bd7cfcfd3418507a932f3aca7b7c77df07caa (patch)
tree345d092f6d65b507c590d2d75099f3b93397a54a /keyboards/cannonkeys/satisfaction75/satisfaction75.c
parent0ea72af8b79c9084105f467f764161a7b53d9612 (diff)
Fix OLED timeout on satisfaction75 after migration from QWIIC (#14780)
The custom OLED_OFF mode implemented on satisfaction75 is incompatible with the OLED_TIMEOUT feature (the OLED_TIMEOUT code assumes that any key or encoder action should turn the OLED display on, and does not provide any way to disable that behavior). To keep the OLED_OFF mode functioning as before while still having a working OLED idle timeout, a custom implementation of the OLED idle timeout code is added.
Diffstat (limited to 'keyboards/cannonkeys/satisfaction75/satisfaction75.c')
-rw-r--r--keyboards/cannonkeys/satisfaction75/satisfaction75.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/keyboards/cannonkeys/satisfaction75/satisfaction75.c b/keyboards/cannonkeys/satisfaction75/satisfaction75.c
index 304df33258..8b5016437c 100644
--- a/keyboards/cannonkeys/satisfaction75/satisfaction75.c
+++ b/keyboards/cannonkeys/satisfaction75/satisfaction75.c
@@ -23,6 +23,9 @@ uint8_t layer;
bool clock_set_mode = false;
uint8_t oled_mode = OLED_DEFAULT;
+bool oled_repaint_requested = false;
+bool oled_wakeup_requested = false;
+uint32_t oled_sleep_timer;
uint8_t encoder_value = 32;
uint8_t encoder_mode = ENC_MODE_VOLUME;
@@ -158,6 +161,7 @@ void raw_hid_receive_kb( uint8_t *data, uint8_t length )
case id_oled_mode:
{
oled_mode = command_data[1];
+ oled_request_wakeup();
break;
}
case id_encoder_modes:
@@ -237,10 +241,12 @@ void read_host_led_state(void) {
layer_state_t layer_state_set_kb(layer_state_t state) {
state = layer_state_set_user(state);
layer = biton32(state);
+ oled_request_wakeup();
return state;
}
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+ oled_request_wakeup();
switch (keycode) {
case OLED_TOGG:
if(!clock_set_mode){
@@ -289,6 +295,7 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
bool encoder_update_kb(uint8_t index, bool clockwise) {
if (!encoder_update_user(index, clockwise)) return false;
+ oled_request_wakeup();
encoder_value = (encoder_value + (clockwise ? 1 : -1)) % 64;
if (index == 0) {
if (layer == 0){
@@ -364,6 +371,7 @@ void matrix_init_kb(void)
rtcGetTime(&RTCD1, &last_timespec);
backlight_init_ports();
matrix_init_user();
+ oled_request_wakeup();
}
@@ -373,13 +381,7 @@ void housekeeping_task_kb(void) {
if (minutes_since_midnight != last_minute){
last_minute = minutes_since_midnight;
- }
-
- if((oled_mode == OLED_OFF) && is_oled_on()){
- oled_off();
- }
- if((oled_mode != OLED_OFF) && !is_oled_on()){
- oled_on();
+ oled_request_repaint();
}
}