overhaul oled code; set render function at startup; set OLED_UPDATE_INTERVAL to FRAME_TIMEOUT; use smaller data types; formatting
All checks were successful
Build / build-sporq (push) Successful in 2m0s
All checks were successful
Build / build-sporq (push) Successful in 2m0s
This commit is contained in:
parent
c31420083c
commit
dfcb569a13
@ -14,19 +14,12 @@ enum layers {
|
||||
};
|
||||
|
||||
static uint16_t animation_timer = 0;
|
||||
// 40 fps
|
||||
#define FRAME_TIMEOUT (1000/40)
|
||||
#define FRAME_TIMEOUT (1000/60)
|
||||
#undef OLED_UPDATE_INTERVAL
|
||||
#define OLED_UPDATE_INTERVAL FRAME_TIMEOUT
|
||||
// 30 sec
|
||||
#define SLEEP_TIMEOUT 30000
|
||||
|
||||
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
|
||||
if (!is_keyboard_master()) {
|
||||
return OLED_ROTATION_0;
|
||||
}
|
||||
return OLED_ROTATION_270;
|
||||
animation_timer = timer_read();
|
||||
}
|
||||
|
||||
|
||||
// Spaceship OLED starts here
|
||||
// code made by JBaguley and copied from crkbd/keymaps/retrograde/keymap.c
|
||||
@ -230,47 +223,49 @@ static const char PROGMEM mask_row_4[] = {
|
||||
};
|
||||
|
||||
static void render_space_animation(void) {
|
||||
const char wpm = get_current_wpm();
|
||||
const uint8_t wpm = get_current_wpm();
|
||||
const uint8_t wpm_div = wpm / 4;
|
||||
char render_row[128];
|
||||
int i;
|
||||
oled_set_cursor(0,0);
|
||||
for(i=0; i<wpm/4; i++) {
|
||||
render_row[i] = pgm_read_byte(space_row_1+i+state);
|
||||
};
|
||||
for(i=wpm/4; i<128; i++) {
|
||||
render_row[i] = (pgm_read_byte(space_row_1+i+state)&pgm_read_byte(mask_row_1+i-wpm/4)) | pgm_read_byte(ship_row_1+i-wpm/4);
|
||||
};
|
||||
uint8_t i;
|
||||
|
||||
oled_write_raw(render_row, 128);
|
||||
// oled_write_raw_P(space_row_1, 128);
|
||||
oled_set_cursor(0,1);
|
||||
for(i=0; i<wpm/4; i++) {
|
||||
render_row[i] = pgm_read_byte(space_row_2+i+state);
|
||||
oled_set_cursor(0, 0);
|
||||
for(i = 0; i < wpm_div; i++) {
|
||||
render_row[i] = pgm_read_byte(space_row_1 + i + state);
|
||||
};
|
||||
for(i=wpm/4; i<128; i++) {
|
||||
render_row[i] = (pgm_read_byte(space_row_2+i+state)&pgm_read_byte(mask_row_2+i-wpm/4)) | pgm_read_byte(ship_row_2+i-wpm/4);
|
||||
for(i = wpm_div; i < 128; i++) {
|
||||
render_row[i] = (pgm_read_byte(space_row_1 + i + state) & pgm_read_byte(mask_row_1 + i - wpm_div))
|
||||
| pgm_read_byte(ship_row_1 + i - wpm_div);
|
||||
};
|
||||
oled_write_raw(render_row, 128);
|
||||
oled_set_cursor(0,2);
|
||||
for(i=0; i<wpm/4; i++) {
|
||||
render_row[i] = pgm_read_byte(space_row_3+i+state);
|
||||
oled_set_cursor(0, 1);
|
||||
for(i = 0; i < wpm_div; i++) {
|
||||
render_row[i] = pgm_read_byte(space_row_2 + i + state);
|
||||
};
|
||||
for(i=wpm/4; i<128; i++) {
|
||||
render_row[i] = (pgm_read_byte(space_row_3+i+state)&pgm_read_byte(mask_row_3+i-wpm/4)) | pgm_read_byte(ship_row_3+i-wpm/4);
|
||||
for(i = wpm_div; i < 128; i++) {
|
||||
render_row[i] = (pgm_read_byte(space_row_2 + i + state) & pgm_read_byte(mask_row_2 + i - wpm_div))
|
||||
| pgm_read_byte(ship_row_2 + i - wpm_div);
|
||||
};
|
||||
|
||||
oled_write_raw(render_row, 128);
|
||||
oled_set_cursor(0,3);
|
||||
for(i=0; i<wpm/4; i++) {
|
||||
render_row[i] = pgm_read_byte(space_row_4+i+state);
|
||||
oled_set_cursor(0, 2);
|
||||
for(i = 0; i < wpm_div; i++) {
|
||||
render_row[i] = pgm_read_byte(space_row_3 + i + state);
|
||||
};
|
||||
for(i=wpm/4; i<128; i++) {
|
||||
render_row[i] = (pgm_read_byte(space_row_4+i+state)&pgm_read_byte(mask_row_4+i-wpm/4)) | pgm_read_byte(ship_row_4+i-wpm/4);
|
||||
for(i = wpm_div; i < 128; i++) {
|
||||
render_row[i] = (pgm_read_byte(space_row_3 + i + state) & pgm_read_byte(mask_row_3 + i - wpm_div))
|
||||
| pgm_read_byte(ship_row_3 + i - wpm_div);
|
||||
};
|
||||
oled_write_raw(render_row, 128);
|
||||
oled_set_cursor(0, 3);
|
||||
for(i = 0; i < wpm_div; i++) {
|
||||
render_row[i] = pgm_read_byte(space_row_4 + i + state);
|
||||
};
|
||||
for(i = wpm_div; i < 128; i++) {
|
||||
render_row[i] = (pgm_read_byte(space_row_4 + i + state) & pgm_read_byte(mask_row_4 + i - wpm_div))
|
||||
| pgm_read_byte(ship_row_4 + i - wpm_div);
|
||||
};
|
||||
|
||||
oled_write_raw(render_row, 128);
|
||||
|
||||
state = (state + 1 + (wpm/20)) % (128*2);
|
||||
state = (state + 1 + (wpm / 15)) % (128 * 2);
|
||||
}
|
||||
|
||||
// End of Spaceship OLED
|
||||
@ -473,12 +468,10 @@ static void render_layer_state(void) {
|
||||
|
||||
// End of aurora corne things
|
||||
|
||||
bool oled_task_user(void) {
|
||||
// time for the next frame?
|
||||
if (timer_elapsed(animation_timer) < FRAME_TIMEOUT) {
|
||||
return false;
|
||||
}
|
||||
if (is_keyboard_master()) {
|
||||
// point to render_left() or render_right() after olet_int_user() ran
|
||||
void (*render)(void);
|
||||
|
||||
void render_left(void) {
|
||||
// Renders the current keyboard state (layers and mods)
|
||||
render_logo();
|
||||
render_logo_text();
|
||||
@ -488,10 +481,37 @@ bool oled_task_user(void) {
|
||||
render_mod_status_gui_alt(get_mods()|get_oneshot_mods());
|
||||
render_mod_status_ctrl_shift(get_mods()|get_oneshot_mods());
|
||||
render_kb_LED_state();
|
||||
} else {
|
||||
}
|
||||
void render_right(void) {
|
||||
render_space_animation();
|
||||
}
|
||||
|
||||
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
|
||||
// define what's rendered on each half
|
||||
if (is_keyboard_master()) {
|
||||
render = render_left;
|
||||
rotation = OLED_ROTATION_270;
|
||||
} else {
|
||||
render = render_right;
|
||||
rotation = OLED_ROTATION_0;
|
||||
}
|
||||
// reset timer after drawing the frame.
|
||||
animation_timer = timer_read();
|
||||
return rotation;
|
||||
}
|
||||
|
||||
void keyboard_post_init_user(void) {
|
||||
// Customise these values to desired behaviour
|
||||
//debug_enable=true;
|
||||
//debug_matrix=true;
|
||||
//debug_keyboard=true;
|
||||
//debug_mouse=true;
|
||||
}
|
||||
|
||||
bool oled_task_user(void) {
|
||||
if (timer_elapsed(animation_timer) < FRAME_TIMEOUT) {
|
||||
return false;
|
||||
}
|
||||
(*render)(); // call render_left() or render_right()
|
||||
animation_timer = timer_read();
|
||||
return false;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user