aboutsummaryrefslogtreecommitdiff
path: root/quantum/matrix.c
diff options
context:
space:
mode:
authorAlex Ong <the.onga@gmail.com>2019-01-26 12:13:19 +1100
committerAlex Ong <the.onga@gmail.com>2019-01-26 12:13:19 +1100
commitc9ba618654417ec115809a031d315f8327c79ad4 (patch)
treecd5b907af5bebde7062897ff847e473232ed1214 /quantum/matrix.c
parent2bb2977c133646c4e056960e72029270d77cc1eb (diff)
parentd977daa8dc9136746425f9e1414e1f93cb161877 (diff)
downloadqmk_firmware-c9ba618654417ec115809a031d315f8327c79ad4.tar.gz
qmk_firmware-c9ba618654417ec115809a031d315f8327c79ad4.zip
DO NOT USE Merge branch 'master' into debounce_refactor
Merged, however now there are two debounce.h and debounce.c to mess around with and coalesce. # Conflicts: # quantum/matrix.c
Diffstat (limited to 'quantum/matrix.c')
-rw-r--r--quantum/matrix.c32
1 files changed, 19 insertions, 13 deletions
diff --git a/quantum/matrix.c b/quantum/matrix.c
index 292171490..71292db51 100644
--- a/quantum/matrix.c
+++ b/quantum/matrix.c
@@ -21,10 +21,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
21#include "debug.h" 21#include "debug.h"
22#include "util.h" 22#include "util.h"
23#include "matrix.h" 23#include "matrix.h"
24#include "timer.h" 24#include "debounce.h"
25#include "quantum.h" 25#include "quantum.h"
26 26
27
28#if (MATRIX_COLS <= 8) 27#if (MATRIX_COLS <= 8)
29# define print_matrix_header() print("\nr/c 01234567\n") 28# define print_matrix_header() print("\nr/c 01234567\n")
30# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) 29# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
@@ -52,8 +51,9 @@ static const pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
52#endif 51#endif
53 52
54/* matrix state(1:on, 0:off) */ 53/* matrix state(1:on, 0:off) */
55static matrix_row_t matrix[MATRIX_ROWS]; 54static matrix_row_t raw_matrix[MATRIX_ROWS];
56 55
56static matrix_row_t matrix[MATRIX_ROWS];
57 57
58#if (DIODE_DIRECTION == COL2ROW) 58#if (DIODE_DIRECTION == COL2ROW)
59 static void init_cols(void); 59 static void init_cols(void);
@@ -120,34 +120,40 @@ void matrix_init(void) {
120 120
121 // initialize matrix state: all keys off 121 // initialize matrix state: all keys off
122 for (uint8_t i=0; i < MATRIX_ROWS; i++) { 122 for (uint8_t i=0; i < MATRIX_ROWS; i++) {
123 raw_matrix[i] = 0;
123 matrix[i] = 0; 124 matrix[i] = 0;
124 } 125 }
126 debounce_init(MATRIX_ROWS);
125 127
126 matrix_init_quantum(); 128 matrix_init_quantum();
127} 129}
128 130
129uint8_t matrix_scan(void) 131uint8_t matrix_scan(void)
130{ 132{
133 bool changed = false;
131 134
132#if (DIODE_DIRECTION == COL2ROW) 135#if (DIODE_DIRECTION == COL2ROW)
133 // Set row, read cols 136 // Set row, read cols
134 for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) { 137 for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) {
135 read_cols_on_row(matrix, current_row); 138 changed |= read_cols_on_row(raw_matrix, current_row);
136 } 139 }
137#elif (DIODE_DIRECTION == ROW2COL) 140#elif (DIODE_DIRECTION == ROW2COL)
138 // Set col, read rows 141 // Set col, read rows
139 for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) { 142 for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) {
140 read_rows_on_col(matrix, current_col); 143 changed |= read_rows_on_col(raw_matrix, current_col);
141 } 144 }
142#endif 145#endif
143 146
144 matrix_scan_quantum(); 147 debounce(raw_matrix, matrix, MATRIX_ROWS, changed);
145 return 1; 148
149 matrix_scan_quantum();
150 return 1;
146} 151}
147 152
148//Deprecated. 153//Deprecated.
149bool matrix_is_modified(void) 154bool matrix_is_modified(void)
150{ 155{
156 if (debounce_active()) return false;
151 return true; 157 return true;
152} 158}
153 159