From f0efb82443a7dc34b75579359b0514e8bfa51100 Mon Sep 17 00:00:00 2001 From: comaid Date: Sun, 4 Nov 2018 20:08:43 +0900 Subject: [PATCH] Fix up screen off timer of helix * Fix Up ScreenOffInterval exceeded uint16_t * Fix Up never waking up once screen off if in case of matrix are not dirty --- keyboards/helix/helix.c | 8 ++++++++ keyboards/helix/ssd1306.c | 17 +++++++++++++++-- keyboards/helix/ssd1306.h | 3 ++- 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/keyboards/helix/helix.c b/keyboards/helix/helix.c index 539abd534952..9c27702a7947 100644 --- a/keyboards/helix/helix.c +++ b/keyboards/helix/helix.c @@ -1 +1,9 @@ #include "helix.h" +#include "ssd1306.h" + +#ifdef OLED_ENABLED +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + process_record_gfx(keycode,record); + return process_record_user(keycode, record); +} +#endif \ No newline at end of file diff --git a/keyboards/helix/ssd1306.c b/keyboards/helix/ssd1306.c index b3e55a67c201..dd3290ba0cc8 100644 --- a/keyboards/helix/ssd1306.c +++ b/keyboards/helix/ssd1306.c @@ -1,3 +1,4 @@ + #ifdef SSD1306OLED #include "ssd1306.h" @@ -27,12 +28,17 @@ //static uint16_t last_battery_update; //static uint32_t vbat; //#define BatteryUpdateInterval 10000 /* milliseconds */ -#define ScreenOffInterval 300000 /* milliseconds */ + +// 'last_flush' is declared as uint16_t, +// so this must be less than 65535 +#define ScreenOffInterval 60000 /* milliseconds */ #if DEBUG_TO_SCREEN static uint8_t displaying; #endif static uint16_t last_flush; +static bool force_dirty = true; + // Write command sequence. // Returns true on success. static inline bool _send_cmd1(uint8_t cmd) { @@ -318,12 +324,19 @@ void iota_gfx_task_user(void) { void iota_gfx_task(void) { iota_gfx_task_user(); - if (display.dirty) { + if (display.dirty|| force_dirty) { iota_gfx_flush(); + force_dirty = false; } if (timer_elapsed(last_flush) > ScreenOffInterval) { iota_gfx_off(); } } + +bool process_record_gfx(uint16_t keycode, keyrecord_t *record) { + force_dirty = true; + return true; +} + #endif diff --git a/keyboards/helix/ssd1306.h b/keyboards/helix/ssd1306.h index 77ce7c211a04..9cf6983b7e43 100644 --- a/keyboards/helix/ssd1306.h +++ b/keyboards/helix/ssd1306.h @@ -4,6 +4,7 @@ #include #include #include "pincontrol.h" +#include "action.h" enum ssd1306_cmds { DisplayOff = 0xAE, @@ -87,6 +88,6 @@ void matrix_write(struct CharacterMatrix *matrix, const char *data); void matrix_write_P(struct CharacterMatrix *matrix, const char *data); void matrix_render(struct CharacterMatrix *matrix); - +bool process_record_gfx(uint16_t keycode, keyrecord_t *record); #endif