aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcomaid <44457151+comaid@users.noreply.github.com>2018-11-13 05:19:29 +0900
committerDrashna Jaelre <drashna@live.com>2018-11-12 12:19:29 -0800
commitaa03049015855cdd5f61e6e8a7c6955abc5d3141 (patch)
treec63eb623ddb31e454dabef738ce6be16410b77cb
parentb1e74aee43596e2601248b0a78b2c54c897ce78b (diff)
downloadqmk_firmware-aa03049015855cdd5f61e6e8a7c6955abc5d3141.tar.gz
qmk_firmware-aa03049015855cdd5f61e6e8a7c6955abc5d3141.zip
Fix up screen off timer of crkbd (#4346)
* fix about screen off timer * Fix Up ScreenOffInterval exceeded uint16_t * Fix Up never waking up once screen off if in case of matrix are not dirty. * Revert "fix about screen off timer" This reverts commit 3d175f2340c14250a71af78afec5a1e890d9f4e7. * Fix up screen off timer of crkbd * Fix Up ScreenOffInterval exceeded uint16_t * Fix Up never waking up once screen off if in case of matrix are not dirty. * 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 * Revert "Fix up screen off timer of helix" This reverts commit f0efb82443a7dc34b75579359b0514e8bfa51100. * Improve internal processing of process_record_kb() * Use the return value of process_record_gfx() * Fix a indent Fix a indent
-rw-r--r--keyboards/crkbd/crkbd.c5
-rw-r--r--keyboards/crkbd/ssd1306.c16
-rw-r--r--keyboards/crkbd/ssd1306.h3
3 files changed, 22 insertions, 2 deletions
diff --git a/keyboards/crkbd/crkbd.c b/keyboards/crkbd/crkbd.c
index 5e8ba8bac..32f7af776 100644
--- a/keyboards/crkbd/crkbd.c
+++ b/keyboards/crkbd/crkbd.c
@@ -1 +1,6 @@
1#include "crkbd.h" 1#include "crkbd.h"
2#include "ssd1306.h"
3
4bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
5 return process_record_gfx(keycode,record) && process_record_user(keycode, record);
6} \ No newline at end of file
diff --git a/keyboards/crkbd/ssd1306.c b/keyboards/crkbd/ssd1306.c
index 205ce67a9..4330c8497 100644
--- a/keyboards/crkbd/ssd1306.c
+++ b/keyboards/crkbd/ssd1306.c
@@ -24,12 +24,17 @@ static const unsigned char font[] PROGMEM;
24//static uint16_t last_battery_update; 24//static uint16_t last_battery_update;
25//static uint32_t vbat; 25//static uint32_t vbat;
26//#define BatteryUpdateInterval 10000 /* milliseconds */ 26//#define BatteryUpdateInterval 10000 /* milliseconds */
27#define ScreenOffInterval 300000 /* milliseconds */ 27
28// 'last_flush' is declared as uint16_t,
29// so this must be less than 65535
30#define ScreenOffInterval 60000 /* milliseconds */
28#if DEBUG_TO_SCREEN 31#if DEBUG_TO_SCREEN
29static uint8_t displaying; 32static uint8_t displaying;
30#endif 33#endif
31static uint16_t last_flush; 34static uint16_t last_flush;
32 35
36static bool force_dirty = true;
37
33// Write command sequence. 38// Write command sequence.
34// Returns true on success. 39// Returns true on success.
35static inline bool _send_cmd1(uint8_t cmd) { 40static inline bool _send_cmd1(uint8_t cmd) {
@@ -321,12 +326,19 @@ void iota_gfx_task_user(void) {
321void iota_gfx_task(void) { 326void iota_gfx_task(void) {
322 iota_gfx_task_user(); 327 iota_gfx_task_user();
323 328
324 if (display.dirty) { 329 if (display.dirty|| force_dirty) {
325 iota_gfx_flush(); 330 iota_gfx_flush();
331 force_dirty = false;
326 } 332 }
327 333
328 if (timer_elapsed(last_flush) > ScreenOffInterval) { 334 if (timer_elapsed(last_flush) > ScreenOffInterval) {
329 iota_gfx_off(); 335 iota_gfx_off();
330 } 336 }
331} 337}
338
339bool process_record_gfx(uint16_t keycode, keyrecord_t *record) {
340 force_dirty = true;
341 return true;
342}
343
332#endif 344#endif
diff --git a/keyboards/crkbd/ssd1306.h b/keyboards/crkbd/ssd1306.h
index 76dd6a2a7..ea8c92328 100644
--- a/keyboards/crkbd/ssd1306.h
+++ b/keyboards/crkbd/ssd1306.h
@@ -3,6 +3,7 @@
3#include <stdbool.h> 3#include <stdbool.h>
4#include <stdio.h> 4#include <stdio.h>
5#include "pincontrol.h" 5#include "pincontrol.h"
6#include "action.h"
6 7
7enum ssd1306_cmds { 8enum ssd1306_cmds {
8 DisplayOff = 0xAE, 9 DisplayOff = 0xAE,
@@ -86,3 +87,5 @@ void matrix_write(struct CharacterMatrix *matrix, const char *data);
86void matrix_write_ln(struct CharacterMatrix *matrix, const char *data); 87void matrix_write_ln(struct CharacterMatrix *matrix, const char *data);
87void matrix_write_P(struct CharacterMatrix *matrix, const char *data); 88void matrix_write_P(struct CharacterMatrix *matrix, const char *data);
88void matrix_render(struct CharacterMatrix *matrix); 89void matrix_render(struct CharacterMatrix *matrix);
90
91bool process_record_gfx(uint16_t keycode, keyrecord_t *record); \ No newline at end of file