Resend the keyboard state every ms

In case there's some errors on the link, and the packet gets lost
This commit is contained in:
Fred Sundvik 2016-03-12 20:08:08 +02:00
parent 32f0171d39
commit d835ad91a3

View File

@ -140,13 +140,6 @@ void init_serial_link(void) {
void matrix_set_remote(matrix_row_t* rows, uint8_t index); void matrix_set_remote(matrix_row_t* rows, uint8_t index);
void serial_link_update(void) { void serial_link_update(void) {
systime_t current_time = chVTGetSystemTimeX();
if (current_time - last_update > 1000) {
*begin_write_serial_link_connected() = true;
end_write_serial_link_connected();
last_update = current_time;
}
if (read_serial_link_connected()) { if (read_serial_link_connected()) {
serial_link_connected = true; serial_link_connected = true;
} }
@ -157,13 +150,19 @@ void serial_link_update(void) {
matrix.rows[i] = matrix_get_row(i); matrix.rows[i] = matrix_get_row(i);
changed |= matrix.rows[i] != last_matrix.rows[i]; changed |= matrix.rows[i] != last_matrix.rows[i];
} }
if (changed) {
systime_t current_time = chVTGetSystemTimeX();
systime_t delta = current_time - last_update;
if (changed || delta > US2ST(1000)) {
last_update = current_time;
last_matrix = matrix; last_matrix = matrix;
matrix_object_t* m = begin_write_keyboard_matrix(); matrix_object_t* m = begin_write_keyboard_matrix();
for(uint8_t i=0;i<MATRIX_ROWS;i++) { for(uint8_t i=0;i<MATRIX_ROWS;i++) {
m->rows[i] = matrix.rows[i]; m->rows[i] = matrix.rows[i];
} }
end_write_keyboard_matrix(); end_write_keyboard_matrix();
*begin_write_serial_link_connected() = true;
end_write_serial_link_connected();
} }
matrix_object_t* m = read_keyboard_matrix(0); matrix_object_t* m = read_keyboard_matrix(0);