Fix up screen off timer of helix (#4347)
authorcomaid <44457151+comaid@users.noreply.github.com>
Mon, 12 Nov 2018 20:20:50 +0000 (05:20 +0900)
committerDrashna Jaelre <drashna@live.com>
Mon, 12 Nov 2018 20:20:50 +0000 (12:20 -0800)
* 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

* Changing referenIng incorrect constant name

* OLED_ENABLED => SSD1306OLED

* Improve internal processing of process_record_kb()

* Use the return value of process_record_gfx()

* Move a include statement into #ifdef block

Move   #include "ssd1306.h` statement into #ifdef block

* Move process_record_kbI()

Move process_record_kb() from helix.c to rev1.c/rev2.c/pico.c

* Move process_record_kb()

keyboards/helix/pico/pico.c
keyboards/helix/rev1/rev1.c
keyboards/helix/rev2/rev2.c
keyboards/helix/ssd1306.c
keyboards/helix/ssd1306.h

index 5e248cc..bb8ba9c 100644 (file)
@@ -2,6 +2,12 @@
 
 
 #ifdef SSD1306OLED
+#include "ssd1306.h"
+
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+       return process_record_gfx(keycode,record) && process_record_user(keycode, record);
+}
+
 void led_set_kb(uint8_t usb_led) {
     // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
     //led_set_user(usb_led);
index d7ea9b7..309cca0 100644 (file)
@@ -2,6 +2,12 @@
 
 
 #ifdef SSD1306OLED
+#include "ssd1306.h"
+
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+       return process_record_gfx(keycode,record) && process_record_user(keycode, record);
+}
+
 void led_set_kb(uint8_t usb_led) {
     // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
     led_set_user(usb_led);
index 75765f1..abaa02c 100644 (file)
@@ -2,6 +2,12 @@
 
 
 #ifdef SSD1306OLED
+#include "ssd1306.h"
+
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+       return process_record_gfx(keycode,record) && process_record_user(keycode, record);
+}
+
 void led_set_kb(uint8_t usb_led) {
     // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
     //led_set_user(usb_led);
index b3e55a6..dd3290b 100644 (file)
@@ -1,3 +1,4 @@
+
 #ifdef SSD1306OLED
 
 #include "ssd1306.h"
 //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
index 77ce7c2..9cf6983 100644 (file)
@@ -4,6 +4,7 @@
 #include <stdbool.h>
 #include <stdio.h>
 #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