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
pull/4346/head
comaid 6 years ago
parent dd6aecba7a
commit f0efb82443

@ -1 +1,9 @@
#include "helix.h" #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

@ -1,3 +1,4 @@
#ifdef SSD1306OLED #ifdef SSD1306OLED
#include "ssd1306.h" #include "ssd1306.h"
@ -27,12 +28,17 @@
//static uint16_t last_battery_update; //static uint16_t last_battery_update;
//static uint32_t vbat; //static uint32_t vbat;
//#define BatteryUpdateInterval 10000 /* milliseconds */ //#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 #if DEBUG_TO_SCREEN
static uint8_t displaying; static uint8_t displaying;
#endif #endif
static uint16_t last_flush; static uint16_t last_flush;
static bool force_dirty = true;
// Write command sequence. // Write command sequence.
// Returns true on success. // Returns true on success.
static inline bool _send_cmd1(uint8_t cmd) { static inline bool _send_cmd1(uint8_t cmd) {
@ -318,12 +324,19 @@ void iota_gfx_task_user(void) {
void iota_gfx_task(void) { void iota_gfx_task(void) {
iota_gfx_task_user(); iota_gfx_task_user();
if (display.dirty) { if (display.dirty|| force_dirty) {
iota_gfx_flush(); iota_gfx_flush();
force_dirty = false;
} }
if (timer_elapsed(last_flush) > ScreenOffInterval) { if (timer_elapsed(last_flush) > ScreenOffInterval) {
iota_gfx_off(); iota_gfx_off();
} }
} }
bool process_record_gfx(uint16_t keycode, keyrecord_t *record) {
force_dirty = true;
return true;
}
#endif #endif

@ -4,6 +4,7 @@
#include <stdbool.h> #include <stdbool.h>
#include <stdio.h> #include <stdio.h>
#include "pincontrol.h" #include "pincontrol.h"
#include "action.h"
enum ssd1306_cmds { enum ssd1306_cmds {
DisplayOff = 0xAE, 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_write_P(struct CharacterMatrix *matrix, const char *data);
void matrix_render(struct CharacterMatrix *matrix); void matrix_render(struct CharacterMatrix *matrix);
bool process_record_gfx(uint16_t keycode, keyrecord_t *record);
#endif #endif

Loading…
Cancel
Save