X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=quantum%2Fmatrix.c;h=7ccac3533195d8898b211a29f727824681520816;hb=2121de919253b52e94e66e3eae6af01c3f56f463;hp=8fc4175bde38bd518ca6a11de8c28b2ba37552bc;hpb=d0b691df0ee74863ca54ca697aa4d4212cf401a7;p=qmk_firmware.git diff --git a/quantum/matrix.c b/quantum/matrix.c index 8fc4175bd..7ccac3533 100644 --- a/quantum/matrix.c +++ b/quantum/matrix.c @@ -45,7 +45,9 @@ along with this program. If not, see . extern const matrix_row_t matrix_mask[]; #endif -#if (DIODE_DIRECTION == ROW2COL) || (DIODE_DIRECTION == COL2ROW) +#ifdef DIRECT_PINS +static pin_t direct_pins[MATRIX_ROWS][MATRIX_COLS] = DIRECT_PINS; +#elif (DIODE_DIRECTION == ROW2COL) || (DIODE_DIRECTION == COL2ROW) static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS; static const pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; #endif @@ -54,20 +56,6 @@ static const pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; static matrix_row_t raw_matrix[MATRIX_ROWS]; //raw values static matrix_row_t matrix[MATRIX_ROWS]; //debounced values -#if (DIODE_DIRECTION == COL2ROW) - static void init_cols(void); - static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row); - static void unselect_rows(void); - static void select_row(uint8_t row); - static void unselect_row(uint8_t row); -#elif (DIODE_DIRECTION == ROW2COL) - static void init_rows(void); - static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col); - static void unselect_cols(void); - static void unselect_col(uint8_t col); - static void select_col(uint8_t col); -#endif - __attribute__ ((weak)) void matrix_init_quantum(void) { matrix_init_kb(); @@ -106,49 +94,6 @@ uint8_t matrix_cols(void) { return MATRIX_COLS; } -void matrix_init(void) { - - // initialize row and col -#if (DIODE_DIRECTION == COL2ROW) - unselect_rows(); - init_cols(); -#elif (DIODE_DIRECTION == ROW2COL) - unselect_cols(); - init_rows(); -#endif - - // initialize matrix state: all keys off - for (uint8_t i=0; i < MATRIX_ROWS; i++) { - raw_matrix[i] = 0; - matrix[i] = 0; - } - debounce_init(); - - matrix_init_quantum(); -} - -uint8_t matrix_scan(void) -{ - bool changed = false; - -#if (DIODE_DIRECTION == COL2ROW) - // Set row, read cols - for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) { - changed |= read_cols_on_row(raw_matrix, current_row); - } -#elif (DIODE_DIRECTION == ROW2COL) - // Set col, read rows - for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) { - changed |= read_rows_on_col(raw_matrix, current_col); - } -#endif - - debounce(raw_matrix, matrix, changed); - - matrix_scan_quantum(); - return 1; -} - //Deprecated. bool matrix_is_modified(void) { @@ -159,7 +104,7 @@ bool matrix_is_modified(void) inline bool matrix_is_on(uint8_t row, uint8_t col) { - return (matrix[row] & ((matrix_row_t)1