aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar comaid <44457151+comaid@users.noreply.github.com>2018-11-13 05:19:29 +0900
committerGravatar Drashna Jaelre <drashna@live.com>2018-11-12 12:19:29 -0800
commitaa03049015855cdd5f61e6e8a7c6955abc5d3141 (patch)
treec63eb623ddb31e454dabef738ce6be16410b77cb
parentb1e74aee43596e2601248b0a78b2c54c897ce78b (diff)
downloadqmk_firmware-aa03049015855cdd5f61e6e8a7c6955abc5d3141.tar.gz
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 @@
#include "crkbd.h"
+#include "ssd1306.h"
+
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+ return process_record_gfx(keycode,record) && process_record_user(keycode, record);
+} \ 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;
//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) {
@@ -321,12 +326,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/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 @@
#include <stdbool.h>
#include <stdio.h>
#include "pincontrol.h"
+#include "action.h"
enum ssd1306_cmds {
DisplayOff = 0xAE,
@@ -86,3 +87,5 @@ void matrix_write(struct CharacterMatrix *matrix, const char *data);
void matrix_write_ln(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); \ No newline at end of file