diff options
author | Alex Ong <the.onga@gmail.com> | 2019-01-26 12:13:19 +1100 |
---|---|---|
committer | Alex Ong <the.onga@gmail.com> | 2019-01-26 12:13:19 +1100 |
commit | c9ba618654417ec115809a031d315f8327c79ad4 (patch) | |
tree | cd5b907af5bebde7062897ff847e473232ed1214 /quantum/matrix.c | |
parent | 2bb2977c133646c4e056960e72029270d77cc1eb (diff) | |
parent | d977daa8dc9136746425f9e1414e1f93cb161877 (diff) | |
download | qmk_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.c | 32 |
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) */ |
55 | static matrix_row_t matrix[MATRIX_ROWS]; | 54 | static matrix_row_t raw_matrix[MATRIX_ROWS]; |
56 | 55 | ||
56 | static 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 | ||
129 | uint8_t matrix_scan(void) | 131 | uint8_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. |
149 | bool matrix_is_modified(void) | 154 | bool matrix_is_modified(void) |
150 | { | 155 | { |
156 | if (debounce_active()) return false; | ||
151 | return true; | 157 | return true; |
152 | } | 158 | } |
153 | 159 | ||