Migrate ROW_SHIFTER to core MATRIX_ROW_SHIFTER (#25977)

This commit is contained in:
Joel Challis 2026-02-10 16:47:41 +00:00 committed by GitHub
parent 9aec0e2c9f
commit db4d8823d6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
27 changed files with 68 additions and 151 deletions

View File

@ -27,8 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) #define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
#define print_matrix_header() print("\nr/c 01234567\n") #define print_matrix_header() print("\nr/c 01234567\n")
#define ROW_SHIFTER ((uint8_t)1)
static void matrix_make(uint8_t code); static void matrix_make(uint8_t code);
static void matrix_break(uint8_t code); static void matrix_break(uint8_t code);

View File

@ -48,15 +48,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#if (MATRIX_COLS <= 8) #if (MATRIX_COLS <= 8)
# define print_matrix_header() print("\nr/c 01234567\n") # define print_matrix_header() print("\nr/c 01234567\n")
# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
# define ROW_SHIFTER ((uint8_t)1)
#elif (MATRIX_COLS <= 16) #elif (MATRIX_COLS <= 16)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n") # define print_matrix_header() print("\nr/c 0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row))
# define ROW_SHIFTER ((uint16_t)1)
#elif (MATRIX_COLS <= 32) #elif (MATRIX_COLS <= 32)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n") # define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row))
# define ROW_SHIFTER ((uint32_t)1)
#endif #endif
#ifdef MATRIX_MASKED #ifdef MATRIX_MASKED
@ -252,7 +249,7 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
uint8_t pin_state = (_SFR_IO8(pin >> 4) & _BV(pin & 0xF)); uint8_t pin_state = (_SFR_IO8(pin >> 4) & _BV(pin & 0xF));
// Populate the matrix row with the state of the col pin // Populate the matrix row with the state of the col pin
current_matrix[current_row] |= pin_state ? 0 : (ROW_SHIFTER << col_index); current_matrix[current_row] |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << col_index);
} }
// Unselect row // Unselect row
@ -314,12 +311,12 @@ static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
if ((_SFR_IO8(row_pins[row_index] >> 4) & _BV(row_pins[row_index] & 0xF)) == 0) if ((_SFR_IO8(row_pins[row_index] >> 4) & _BV(row_pins[row_index] & 0xF)) == 0)
{ {
// Pin LO, set col bit // Pin LO, set col bit
current_matrix[row_index] |= (ROW_SHIFTER << current_col); current_matrix[row_index] |= (MATRIX_ROW_SHIFTER << current_col);
} }
else else
{ {
// Pin HI, clear col bit // Pin HI, clear col bit
current_matrix[row_index] &= ~(ROW_SHIFTER << current_col); current_matrix[row_index] &= ~(MATRIX_ROW_SHIFTER << current_col);
} }
// Determine if the matrix changed state // Determine if the matrix changed state

View File

@ -52,15 +52,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#if (MATRIX_COLS <= 8) #if (MATRIX_COLS <= 8)
# define print_matrix_header() print("\nr/c 01234567\n") # define print_matrix_header() print("\nr/c 01234567\n")
# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
# define ROW_SHIFTER ((uint8_t)1)
#elif (MATRIX_COLS <= 16) #elif (MATRIX_COLS <= 16)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n") # define print_matrix_header() print("\nr/c 0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row))
# define ROW_SHIFTER ((uint16_t)1)
#elif (MATRIX_COLS <= 32) #elif (MATRIX_COLS <= 32)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n") # define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row))
# define ROW_SHIFTER ((uint32_t)1)
#endif #endif
#ifdef MATRIX_MASKED #ifdef MATRIX_MASKED
@ -277,7 +274,7 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
uint8_t pin_state = (_SFR_IO8(pin >> 4) & _BV(pin & 0xF)); uint8_t pin_state = (_SFR_IO8(pin >> 4) & _BV(pin & 0xF));
// Populate the matrix row with the state of the col pin // Populate the matrix row with the state of the col pin
current_matrix[current_row] |= pin_state ? 0 : (ROW_SHIFTER << col_index); current_matrix[current_row] |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << col_index);
} }
// Unselect row // Unselect row
@ -339,12 +336,12 @@ static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
if ((_SFR_IO8(row_pins[row_index] >> 4) & _BV(row_pins[row_index] & 0xF)) == 0) if ((_SFR_IO8(row_pins[row_index] >> 4) & _BV(row_pins[row_index] & 0xF)) == 0)
{ {
// Pin LO, set col bit // Pin LO, set col bit
current_matrix[row_index] |= (ROW_SHIFTER << current_col); current_matrix[row_index] |= (MATRIX_ROW_SHIFTER << current_col);
} }
else else
{ {
// Pin HI, clear col bit // Pin HI, clear col bit
current_matrix[row_index] &= ~(ROW_SHIFTER << current_col); current_matrix[row_index] &= ~(MATRIX_ROW_SHIFTER << current_col);
} }
// Determine if the matrix changed state // Determine if the matrix changed state

View File

@ -48,15 +48,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#if (MATRIX_COLS <= 8) #if (MATRIX_COLS <= 8)
# define print_matrix_header() print("\nr/c 01234567\n") # define print_matrix_header() print("\nr/c 01234567\n")
# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
# define ROW_SHIFTER ((uint8_t)1)
#elif (MATRIX_COLS <= 16) #elif (MATRIX_COLS <= 16)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n") # define print_matrix_header() print("\nr/c 0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row))
# define ROW_SHIFTER ((uint16_t)1)
#elif (MATRIX_COLS <= 32) #elif (MATRIX_COLS <= 32)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n") # define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row))
# define ROW_SHIFTER ((uint32_t)1)
#endif #endif
#ifdef MATRIX_MASKED #ifdef MATRIX_MASKED
@ -252,7 +249,7 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
uint8_t pin_state = (_SFR_IO8(pin >> 4) & _BV(pin & 0xF)); uint8_t pin_state = (_SFR_IO8(pin >> 4) & _BV(pin & 0xF));
// Populate the matrix row with the state of the col pin // Populate the matrix row with the state of the col pin
current_matrix[current_row] |= pin_state ? 0 : (ROW_SHIFTER << col_index); current_matrix[current_row] |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << col_index);
} }
// Unselect row // Unselect row
@ -314,12 +311,12 @@ static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
if ((_SFR_IO8(row_pins[row_index] >> 4) & _BV(row_pins[row_index] & 0xF)) == 0) if ((_SFR_IO8(row_pins[row_index] >> 4) & _BV(row_pins[row_index] & 0xF)) == 0)
{ {
// Pin LO, set col bit // Pin LO, set col bit
current_matrix[row_index] |= (ROW_SHIFTER << current_col); current_matrix[row_index] |= (MATRIX_ROW_SHIFTER << current_col);
} }
else else
{ {
// Pin HI, clear col bit // Pin HI, clear col bit
current_matrix[row_index] &= ~(ROW_SHIFTER << current_col); current_matrix[row_index] &= ~(MATRIX_ROW_SHIFTER << current_col);
} }
// Determine if the matrix changed state // Determine if the matrix changed state

View File

@ -46,15 +46,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#if (MATRIX_COLS <= 8) #if (MATRIX_COLS <= 8)
# define print_matrix_header() print("\nr/c 01234567\n") # define print_matrix_header() print("\nr/c 01234567\n")
# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
# define ROW_SHIFTER ((uint8_t)1)
#elif (MATRIX_COLS <= 16) #elif (MATRIX_COLS <= 16)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n") # define print_matrix_header() print("\nr/c 0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row))
# define ROW_SHIFTER ((uint16_t)1)
#elif (MATRIX_COLS <= 32) #elif (MATRIX_COLS <= 32)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n") # define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row))
# define ROW_SHIFTER ((uint32_t)1)
#endif #endif
#ifdef MATRIX_MASKED #ifdef MATRIX_MASKED
@ -250,7 +247,7 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
uint8_t pin_state = (_SFR_IO8(pin >> 4) & _BV(pin & 0xF)); uint8_t pin_state = (_SFR_IO8(pin >> 4) & _BV(pin & 0xF));
// Populate the matrix row with the state of the col pin // Populate the matrix row with the state of the col pin
current_matrix[current_row] |= pin_state ? 0 : (ROW_SHIFTER << col_index); current_matrix[current_row] |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << col_index);
} }
// Unselect row // Unselect row
@ -312,12 +309,12 @@ static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
if ((_SFR_IO8(row_pins[row_index] >> 4) & _BV(row_pins[row_index] & 0xF)) == 0) if ((_SFR_IO8(row_pins[row_index] >> 4) & _BV(row_pins[row_index] & 0xF)) == 0)
{ {
// Pin LO, set col bit // Pin LO, set col bit
current_matrix[row_index] |= (ROW_SHIFTER << current_col); current_matrix[row_index] |= (MATRIX_ROW_SHIFTER << current_col);
} }
else else
{ {
// Pin HI, clear col bit // Pin HI, clear col bit
current_matrix[row_index] &= ~(ROW_SHIFTER << current_col); current_matrix[row_index] &= ~(MATRIX_ROW_SHIFTER << current_col);
} }
// Determine if the matrix changed state // Determine if the matrix changed state

View File

@ -34,15 +34,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#if (MATRIX_COLS <= 8) #if (MATRIX_COLS <= 8)
# define print_matrix_header() print("\nr/c 01234567\n") # define print_matrix_header() print("\nr/c 01234567\n")
# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
# define ROW_SHIFTER ((uint8_t)1)
#elif (MATRIX_COLS <= 16) #elif (MATRIX_COLS <= 16)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n") # define print_matrix_header() print("\nr/c 0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row))
# define ROW_SHIFTER ((uint16_t)1)
#elif (MATRIX_COLS <= 32) #elif (MATRIX_COLS <= 32)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n") # define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row))
# define ROW_SHIFTER ((uint32_t)1)
#endif #endif
#define MAIN_ROWMASK 0xFFF0; #define MAIN_ROWMASK 0xFFF0;

View File

@ -20,7 +20,6 @@
#include "timer.h" #include "timer.h"
#define MATRIX_ROWS_PER_SIDE (MATRIX_ROWS / 2) #define MATRIX_ROWS_PER_SIDE (MATRIX_ROWS / 2)
#define ROW_SHIFTER ((matrix_row_t)1)
static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col); static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col);
@ -100,10 +99,10 @@ static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
if (col_state & (1 << current_row)) { if (col_state & (1 << current_row)) {
// key closed; set state bit in matrix // key closed; set state bit in matrix
current_matrix[current_row] |= (ROW_SHIFTER << current_col); current_matrix[current_row] |= (MATRIX_ROW_SHIFTER << current_col);
} else { } else {
// key open; clear state bit in matrix // key open; clear state bit in matrix
current_matrix[current_row] &= ~(ROW_SHIFTER << current_col); current_matrix[current_row] &= ~(MATRIX_ROW_SHIFTER << current_col);
} }
// Determine whether the matrix changed state // Determine whether the matrix changed state

View File

@ -76,8 +76,6 @@ uint8_t expander_status;
uint8_t expander_input_pin_mask; uint8_t expander_input_pin_mask;
bool i2c_initialized = false; bool i2c_initialized = false;
#define ROW_SHIFTER ((matrix_row_t)1)
__attribute__ ((weak)) __attribute__ ((weak))
void matrix_init_user(void) {} void matrix_init_user(void) {}
@ -284,7 +282,7 @@ uint8_t matrix_scan(void)
inline inline
bool matrix_is_on(uint8_t row, uint8_t col) bool matrix_is_on(uint8_t row, uint8_t col)
{ {
return (matrix[row] & (ROW_SHIFTER << col)); return (matrix[row] & (MATRIX_ROW_SHIFTER << col));
} }
inline inline
@ -344,7 +342,7 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
if (! col_expanded[col_index]) { if (! col_expanded[col_index]) {
uint8_t pin = onboard_col_pins[col_index]; uint8_t pin = onboard_col_pins[col_index];
uint8_t pin_state = (_SFR_IO8(pin >> 4) & _BV(pin & 0xF)); uint8_t pin_state = (_SFR_IO8(pin >> 4) & _BV(pin & 0xF));
current_matrix[current_row] |= pin_state ? 0 : (ROW_SHIFTER << col_index); current_matrix[current_row] |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << col_index);
} }
} }
@ -432,10 +430,10 @@ static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
if (column_state & (1 << current_row)) { if (column_state & (1 << current_row)) {
// key closed; set state bit in matrix // key closed; set state bit in matrix
current_matrix[current_row] |= (ROW_SHIFTER << current_col); current_matrix[current_row] |= (MATRIX_ROW_SHIFTER << current_col);
} else { } else {
// key open; clear state bit in matrix // key open; clear state bit in matrix
current_matrix[current_row] &= ~(ROW_SHIFTER << current_col); current_matrix[current_row] &= ~(MATRIX_ROW_SHIFTER << current_col);
} }
// Determine whether the matrix changed state // Determine whether the matrix changed state

View File

@ -31,15 +31,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#if (MATRIX_COLS <= 8) #if (MATRIX_COLS <= 8)
# define print_matrix_header() print("\nr/c 01234567\n") # define print_matrix_header() print("\nr/c 01234567\n")
# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
# define ROW_SHIFTER ((uint8_t)1)
#elif (MATRIX_COLS <= 16) #elif (MATRIX_COLS <= 16)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n") # define print_matrix_header() print("\nr/c 0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row))
# define ROW_SHIFTER ((uint16_t)1)
#elif (MATRIX_COLS <= 32) #elif (MATRIX_COLS <= 32)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n") # define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row))
# define ROW_SHIFTER ((uint32_t)1)
#endif #endif
static const uint8_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS; static const uint8_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
@ -150,7 +147,7 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
uint8_t pin_state = gpio_read_pin(dat_pin); uint8_t pin_state = gpio_read_pin(dat_pin);
// Populate the matrix row with the state of the col pin // Populate the matrix row with the state of the col pin
current_matrix[current_row] |= pin_state ? 0 : (ROW_SHIFTER << col_index); current_matrix[current_row] |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << col_index);
} }
// Unselect row // Unselect row

View File

@ -43,15 +43,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#if (MATRIX_COLS <= 8) #if (MATRIX_COLS <= 8)
# define print_matrix_header() print("\nr/c 01234567\n") # define print_matrix_header() print("\nr/c 01234567\n")
# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
# define ROW_SHIFTER ((uint8_t)1)
#elif (MATRIX_COLS <= 16) #elif (MATRIX_COLS <= 16)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n") # define print_matrix_header() print("\nr/c 0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row))
# define ROW_SHIFTER ((uint16_t)1)
#elif (MATRIX_COLS <= 32) #elif (MATRIX_COLS <= 32)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n") # define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row))
# define ROW_SHIFTER ((uint32_t)1)
#endif #endif
#ifdef MATRIX_MASKED #ifdef MATRIX_MASKED
@ -227,7 +224,7 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
uint8_t pin_state = (_SFR_IO8(pin >> 4) & _BV(pin & 0xF)); uint8_t pin_state = (_SFR_IO8(pin >> 4) & _BV(pin & 0xF));
// Populate the matrix row with the state of the col pin // Populate the matrix row with the state of the col pin
current_matrix[current_row] |= pin_state ? 0 : (ROW_SHIFTER << tp_index); current_matrix[current_row] |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << tp_index);
} }
return (last_row_value != current_matrix[current_row]); return (last_row_value != current_matrix[current_row]);
} }
@ -245,7 +242,7 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
uint8_t pin_state = (_SFR_IO8(pin >> 4) & _BV(pin & 0xF)); uint8_t pin_state = (_SFR_IO8(pin >> 4) & _BV(pin & 0xF));
// Populate the matrix row with the state of the col pin // Populate the matrix row with the state of the col pin
current_matrix[current_row] |= pin_state ? 0 : (ROW_SHIFTER << col_index); current_matrix[current_row] |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << col_index);
} }
// Unselect row // Unselect row

View File

@ -86,8 +86,6 @@ uint8_t expander_status;
uint8_t expander_input_pin_mask; uint8_t expander_input_pin_mask;
bool i2c_initialized = false; bool i2c_initialized = false;
#define ROW_SHIFTER ((matrix_row_t)1)
__attribute__ ((weak)) __attribute__ ((weak))
void matrix_init_user(void) {} void matrix_init_user(void) {}
@ -256,7 +254,7 @@ uint8_t matrix_scan(void)
inline inline
bool matrix_is_on(uint8_t row, uint8_t col) bool matrix_is_on(uint8_t row, uint8_t col)
{ {
return (matrix[row] & (ROW_SHIFTER << col)); return (matrix[row] & (MATRIX_ROW_SHIFTER << col));
} }
inline inline
@ -314,7 +312,7 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
if (! col_expanded[col_index]) { if (! col_expanded[col_index]) {
uint8_t pin = onboard_col_pins[col_index]; uint8_t pin = onboard_col_pins[col_index];
uint8_t pin_state = (_SFR_IO8(pin >> 4) & _BV(pin & 0xF)); uint8_t pin_state = (_SFR_IO8(pin >> 4) & _BV(pin & 0xF));
current_matrix[current_row] |= pin_state ? 0 : (ROW_SHIFTER << col_index); current_matrix[current_row] |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << col_index);
} }
} }
@ -401,10 +399,10 @@ static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
if (column_state & (1 << current_row)) { if (column_state & (1 << current_row)) {
// key closed; set state bit in matrix // key closed; set state bit in matrix
current_matrix[current_row] |= (ROW_SHIFTER << current_col); current_matrix[current_row] |= (MATRIX_ROW_SHIFTER << current_col);
} else { } else {
// key open; clear state bit in matrix // key open; clear state bit in matrix
current_matrix[current_row] &= ~(ROW_SHIFTER << current_col); current_matrix[current_row] &= ~(MATRIX_ROW_SHIFTER << current_col);
} }
// Determine whether the matrix changed state // Determine whether the matrix changed state

View File

@ -16,8 +16,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#include "matrix.h" #include "matrix.h"
#define ROW_SHIFTER ((uint16_t)1)
static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS; static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
static const pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; static const pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
@ -62,10 +60,10 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
// Check col pin pin_state // Check col pin pin_state
if (gpio_read_pin(col_pins[col_index]) == 0) { if (gpio_read_pin(col_pins[col_index]) == 0) {
// Pin LO, set col bit // Pin LO, set col bit
current_matrix[current_row] |= (ROW_SHIFTER << col_index); current_matrix[current_row] |= (MATRIX_ROW_SHIFTER << col_index);
} else { } else {
// Pin HI, clear col bit // Pin HI, clear col bit
current_matrix[current_row] &= ~(ROW_SHIFTER << col_index); current_matrix[current_row] &= ~(MATRIX_ROW_SHIFTER << col_index);
} }
} }
} }

View File

@ -16,8 +16,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#include "matrix.h" #include "matrix.h"
#define ROW_SHIFTER ((uint16_t)1)
static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS; static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
static const pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; static const pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
@ -62,10 +60,10 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
// Check col pin pin_state // Check col pin pin_state
if (gpio_read_pin(col_pins[col_index]) == 0) { if (gpio_read_pin(col_pins[col_index]) == 0) {
// Pin LO, set col bit // Pin LO, set col bit
current_matrix[current_row] |= (ROW_SHIFTER << col_index); current_matrix[current_row] |= (MATRIX_ROW_SHIFTER << col_index);
} else { } else {
// Pin HI, clear col bit // Pin HI, clear col bit
current_matrix[current_row] &= ~(ROW_SHIFTER << col_index); current_matrix[current_row] &= ~(MATRIX_ROW_SHIFTER << col_index);
} }
} }
} }

View File

@ -24,15 +24,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#if (MATRIX_COLS <= 8) #if (MATRIX_COLS <= 8)
# define print_matrix_header() print("\nr/c 01234567\n") # define print_matrix_header() print("\nr/c 01234567\n")
# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
# define ROW_SHIFTER ((uint8_t)1)
#elif (MATRIX_COLS <= 16) #elif (MATRIX_COLS <= 16)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n") # define print_matrix_header() print("\nr/c 0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row))
# define ROW_SHIFTER ((uint16_t)1)
#elif (MATRIX_COLS <= 32) #elif (MATRIX_COLS <= 32)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n") # define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row))
# define ROW_SHIFTER ((uint32_t)1)
#endif #endif
#ifdef MATRIX_MASKED #ifdef MATRIX_MASKED
@ -149,7 +146,7 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
uint8_t pin_state = gpio_read_pin(col_pins[col_index]); uint8_t pin_state = gpio_read_pin(col_pins[col_index]);
// Populate the matrix row with the state of the col pin // Populate the matrix row with the state of the col pin
current_matrix[current_row] |= pin_state ? 0 : (ROW_SHIFTER << col_index); current_matrix[current_row] |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << col_index);
} }
// Unselect row // Unselect row
@ -174,10 +171,10 @@ static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
// Check row pin state // Check row pin state
if (gpio_read_pin(row_pins[row_index]) == 0) { if (gpio_read_pin(row_pins[row_index]) == 0) {
// Pin LO, set col bit // Pin LO, set col bit
current_matrix[tmp] |= (ROW_SHIFTER << current_col); current_matrix[tmp] |= (MATRIX_ROW_SHIFTER << current_col);
} else { } else {
// Pin HI, clear col bit // Pin HI, clear col bit
current_matrix[tmp] &= ~(ROW_SHIFTER << current_col); current_matrix[tmp] &= ~(MATRIX_ROW_SHIFTER << current_col);
} }
// Determine if the matrix changed state // Determine if the matrix changed state

View File

@ -24,15 +24,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#if (MATRIX_COLS <= 8) #if (MATRIX_COLS <= 8)
# define print_matrix_header() print("\nr/c 01234567\n") # define print_matrix_header() print("\nr/c 01234567\n")
# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
# define ROW_SHIFTER ((uint8_t)1)
#elif (MATRIX_COLS <= 16) #elif (MATRIX_COLS <= 16)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n") # define print_matrix_header() print("\nr/c 0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row))
# define ROW_SHIFTER ((uint16_t)1)
#elif (MATRIX_COLS <= 32) #elif (MATRIX_COLS <= 32)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n") # define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row))
# define ROW_SHIFTER ((uint32_t)1)
#endif #endif
#ifdef MATRIX_MASKED #ifdef MATRIX_MASKED
@ -149,7 +146,7 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
uint8_t pin_state = gpio_read_pin(col_pins[col_index]); uint8_t pin_state = gpio_read_pin(col_pins[col_index]);
// Populate the matrix row with the state of the col pin // Populate the matrix row with the state of the col pin
current_matrix[current_row] |= pin_state ? 0 : (ROW_SHIFTER << col_index); current_matrix[current_row] |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << col_index);
} }
// Unselect row // Unselect row
@ -174,10 +171,10 @@ static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
// Check row pin state // Check row pin state
if (gpio_read_pin(row_pins[row_index]) == 0) { if (gpio_read_pin(row_pins[row_index]) == 0) {
// Pin LO, set col bit // Pin LO, set col bit
current_matrix[tmp] |= (ROW_SHIFTER << current_col); current_matrix[tmp] |= (MATRIX_ROW_SHIFTER << current_col);
} else { } else {
// Pin HI, clear col bit // Pin HI, clear col bit
current_matrix[tmp] &= ~(ROW_SHIFTER << current_col); current_matrix[tmp] &= ~(MATRIX_ROW_SHIFTER << current_col);
} }
// Determine if the matrix changed state // Determine if the matrix changed state

View File

@ -16,14 +16,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#include "matrix.h" #include "matrix.h"
#if (MATRIX_COLS <= 8)
# define ROW_SHIFTER ((uint8_t)1)
#elif (MATRIX_COLS <= 16)
# define ROW_SHIFTER ((uint16_t)1)
#elif (MATRIX_COLS <= 32)
# define ROW_SHIFTER ((uint32_t)1)
#endif
static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS; static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
static const pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; static const pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
@ -88,7 +80,7 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
uint8_t pin_state = gpio_read_pin(col_pins[col_index]); uint8_t pin_state = gpio_read_pin(col_pins[col_index]);
// Populate the matrix row with the state of the col pin // Populate the matrix row with the state of the col pin
current_matrix[current_row] |= pin_state ? 0 : (ROW_SHIFTER << col_index); current_matrix[current_row] |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << col_index);
} }
// Unselect row // Unselect row
@ -113,10 +105,10 @@ static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
// Check row pin state // Check row pin state
if (gpio_read_pin(row_pins[row_index]) == 0) { if (gpio_read_pin(row_pins[row_index]) == 0) {
// Pin LO, set col bit // Pin LO, set col bit
current_matrix[tmp] |= (ROW_SHIFTER << current_col); current_matrix[tmp] |= (MATRIX_ROW_SHIFTER << current_col);
} else { } else {
// Pin HI, clear col bit // Pin HI, clear col bit
current_matrix[tmp] &= ~(ROW_SHIFTER << current_col); current_matrix[tmp] &= ~(MATRIX_ROW_SHIFTER << current_col);
} }
// Determine if the matrix changed state // Determine if the matrix changed state

View File

@ -24,15 +24,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#if (MATRIX_COLS <= 8) #if (MATRIX_COLS <= 8)
# define print_matrix_header() print("\nr/c 01234567\n") # define print_matrix_header() print("\nr/c 01234567\n")
# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
# define ROW_SHIFTER ((uint8_t)1)
#elif (MATRIX_COLS <= 16) #elif (MATRIX_COLS <= 16)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n") # define print_matrix_header() print("\nr/c 0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row))
# define ROW_SHIFTER ((uint16_t)1)
#elif (MATRIX_COLS <= 32) #elif (MATRIX_COLS <= 32)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n") # define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row))
# define ROW_SHIFTER ((uint32_t)1)
#endif #endif
#ifdef MATRIX_MASKED #ifdef MATRIX_MASKED
@ -149,7 +146,7 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
uint8_t pin_state = gpio_read_pin(col_pins[col_index]); uint8_t pin_state = gpio_read_pin(col_pins[col_index]);
// Populate the matrix row with the state of the col pin // Populate the matrix row with the state of the col pin
current_matrix[current_row] |= pin_state ? 0 : (ROW_SHIFTER << col_index); current_matrix[current_row] |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << col_index);
} }
// Unselect row // Unselect row
@ -174,10 +171,10 @@ static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
// Check row pin state // Check row pin state
if (gpio_read_pin(row_pins[row_index]) == 0) { if (gpio_read_pin(row_pins[row_index]) == 0) {
// Pin LO, set col bit // Pin LO, set col bit
current_matrix[tmp] |= (ROW_SHIFTER << current_col); current_matrix[tmp] |= (MATRIX_ROW_SHIFTER << current_col);
} else { } else {
// Pin HI, clear col bit // Pin HI, clear col bit
current_matrix[tmp] &= ~(ROW_SHIFTER << current_col); current_matrix[tmp] &= ~(MATRIX_ROW_SHIFTER << current_col);
} }
// Determine if the matrix changed state // Determine if the matrix changed state

View File

@ -24,15 +24,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#if (MATRIX_COLS <= 8) #if (MATRIX_COLS <= 8)
# define print_matrix_header() print("\nr/c 01234567\n") # define print_matrix_header() print("\nr/c 01234567\n")
# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
# define ROW_SHIFTER ((uint8_t)1)
#elif (MATRIX_COLS <= 16) #elif (MATRIX_COLS <= 16)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n") # define print_matrix_header() print("\nr/c 0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row))
# define ROW_SHIFTER ((uint16_t)1)
#elif (MATRIX_COLS <= 32) #elif (MATRIX_COLS <= 32)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n") # define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row))
# define ROW_SHIFTER ((uint32_t)1)
#endif #endif
static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS; static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
@ -157,18 +154,18 @@ static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
if (row_index == 3 && current_col == 0) { if (row_index == 3 && current_col == 0) {
if (gpio_read_pin(E2) == 0) { if (gpio_read_pin(E2) == 0) {
// Pin LO, set col bit // Pin LO, set col bit
current_matrix[row_index] |= (ROW_SHIFTER << current_col); current_matrix[row_index] |= (MATRIX_ROW_SHIFTER << current_col);
} else { } else {
// Pin HI, clear col bit // Pin HI, clear col bit
current_matrix[row_index] &= ~(ROW_SHIFTER << current_col); current_matrix[row_index] &= ~(MATRIX_ROW_SHIFTER << current_col);
} }
} else { } else {
if (gpio_read_pin(row_pins[row_index]) == 0) { if (gpio_read_pin(row_pins[row_index]) == 0) {
// Pin HI, clear col bit // Pin HI, clear col bit
current_matrix[row_index] &= ~(ROW_SHIFTER << current_col); current_matrix[row_index] &= ~(MATRIX_ROW_SHIFTER << current_col);
} else { } else {
// Pin LO, set col bit // Pin LO, set col bit
current_matrix[row_index] |= (ROW_SHIFTER << current_col); current_matrix[row_index] |= (MATRIX_ROW_SHIFTER << current_col);
} }
} }

View File

@ -35,15 +35,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#if (MATRIX_COLS <= 8) #if (MATRIX_COLS <= 8)
# define print_matrix_header() print("\nr/c 01234567\n") # define print_matrix_header() print("\nr/c 01234567\n")
# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
# define ROW_SHIFTER ((uint8_t)1)
#elif (MATRIX_COLS <= 16) #elif (MATRIX_COLS <= 16)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n") # define print_matrix_header() print("\nr/c 0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row))
# define ROW_SHIFTER ((uint16_t)1)
#elif (MATRIX_COLS <= 32) #elif (MATRIX_COLS <= 32)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n") # define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row))
# define ROW_SHIFTER ((uint32_t)1)
#endif #endif
#define UART_MATRIX_RESPONSE_TIMEOUT 10000 #define UART_MATRIX_RESPONSE_TIMEOUT 10000

View File

@ -24,8 +24,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "matrix.h" #include "matrix.h"
#include "quantum.h" #include "quantum.h"
#define ROW_SHIFTER ((uint16_t)1)
static const pin_t row_pins[] = MATRIX_ROW_PINS; static const pin_t row_pins[] = MATRIX_ROW_PINS;
static const pin_t col_pins[] = MATRIX_COL_PINS; static const pin_t col_pins[] = MATRIX_COL_PINS;
@ -74,7 +72,7 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
// For each col... // For each col...
for (uint8_t col_index = 0; col_index < MATRIX_COLS / 2; col_index++) { for (uint8_t col_index = 0; col_index < MATRIX_COLS / 2; col_index++) {
uint16_t column_index_bitmask = ROW_SHIFTER << ((col_index * 2) + 1); uint16_t column_index_bitmask = MATRIX_ROW_SHIFTER << ((col_index * 2) + 1);
// Check row pin state // Check row pin state
if (gpio_read_pin(col_pins[col_index*2])) { if (gpio_read_pin(col_pins[col_index*2])) {
// Pin HI, clear col bit // Pin HI, clear col bit
@ -103,7 +101,7 @@ static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
// Store last value of row prior to reading // Store last value of row prior to reading
matrix_row_t last_row_value = current_matrix[row_index]; matrix_row_t last_row_value = current_matrix[row_index];
uint16_t column_index_bitmask = ROW_SHIFTER << (current_col * 2); uint16_t column_index_bitmask = MATRIX_ROW_SHIFTER << (current_col * 2);
// Check row pin state // Check row pin state
if (gpio_read_pin(row_pins[row_index])) { if (gpio_read_pin(row_pins[row_index])) {
// Pin HI, clear col bit // Pin HI, clear col bit

View File

@ -50,15 +50,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#if (MATRIX_COLS <= 8) #if (MATRIX_COLS <= 8)
# define print_matrix_header() print("\nr/c 01234567\n") # define print_matrix_header() print("\nr/c 01234567\n")
# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
# define ROW_SHIFTER ((uint8_t)1)
#elif (MATRIX_COLS <= 16) #elif (MATRIX_COLS <= 16)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n") # define print_matrix_header() print("\nr/c 0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row))
# define ROW_SHIFTER ((uint16_t)1)
#elif (MATRIX_COLS <= 32) #elif (MATRIX_COLS <= 32)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n") # define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row))
# define ROW_SHIFTER ((uint32_t)1)
#endif #endif
#ifdef MATRIX_MASKED #ifdef MATRIX_MASKED
@ -251,7 +248,7 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
uint8_t pin_state = (_SFR_IO8(pin >> 4) & _BV(pin & 0xF)); uint8_t pin_state = (_SFR_IO8(pin >> 4) & _BV(pin & 0xF));
// Populate the matrix row with the state of the col pin // Populate the matrix row with the state of the col pin
current_matrix[current_row] |= pin_state ? 0 : (ROW_SHIFTER << col_index); current_matrix[current_row] |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << col_index);
} }
// Unselect row // Unselect row
@ -312,12 +309,12 @@ static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
if ((_SFR_IO8(row_pins[row_index] >> 4) & _BV(row_pins[row_index] & 0xF)) == 0) if ((_SFR_IO8(row_pins[row_index] >> 4) & _BV(row_pins[row_index] & 0xF)) == 0)
{ {
// Pin LO, set col bit // Pin LO, set col bit
current_matrix[row_index] |= (ROW_SHIFTER << current_col); current_matrix[row_index] |= (MATRIX_ROW_SHIFTER << current_col);
} }
else else
{ {
// Pin HI, clear col bit // Pin HI, clear col bit
current_matrix[row_index] &= ~(ROW_SHIFTER << current_col); current_matrix[row_index] &= ~(MATRIX_ROW_SHIFTER << current_col);
} }
// Determine if the matrix changed state // Determine if the matrix changed state

View File

@ -18,14 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "matrix.h" #include "matrix.h"
#include "wait.h" #include "wait.h"
#if (MATRIX_COLS <= 8)
# define ROW_SHIFTER ((uint8_t)1)
#elif (MATRIX_COLS <= 16)
# define ROW_SHIFTER ((uint16_t)1)
#elif (MATRIX_COLS <= 32)
# define ROW_SHIFTER ((uint32_t)1)
#endif
static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS; static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
static const pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; static const pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
@ -95,7 +87,7 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
uint8_t pin_state = gpio_read_pin(col_pins[col_index]); uint8_t pin_state = gpio_read_pin(col_pins[col_index]);
// Populate the matrix row with the state of the col pin // Populate the matrix row with the state of the col pin
current_matrix[current_row] |= pin_state ? 0 : (ROW_SHIFTER << col_index); current_matrix[current_row] |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << col_index);
} }
// Unselect row // Unselect row
@ -123,12 +115,12 @@ static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
if (gpio_read_pin(row_pins[row_index]) == 0) if (gpio_read_pin(row_pins[row_index]) == 0)
{ {
// Pin LO, set col bit // Pin LO, set col bit
current_matrix[tmp] |= (ROW_SHIFTER << current_col); current_matrix[tmp] |= (MATRIX_ROW_SHIFTER << current_col);
} }
else else
{ {
// Pin HI, clear col bit // Pin HI, clear col bit
current_matrix[tmp] &= ~(ROW_SHIFTER << current_col); current_matrix[tmp] &= ~(MATRIX_ROW_SHIFTER << current_col);
} }
// Determine if the matrix changed state // Determine if the matrix changed state

View File

@ -24,15 +24,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#if (MATRIX_COLS <= 8) #if (MATRIX_COLS <= 8)
# define print_matrix_header() print("\nr/c 01234567\n") # define print_matrix_header() print("\nr/c 01234567\n")
# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
# define ROW_SHIFTER ((uint8_t)1)
#elif (MATRIX_COLS <= 16) #elif (MATRIX_COLS <= 16)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n") # define print_matrix_header() print("\nr/c 0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row))
# define ROW_SHIFTER ((uint16_t)1)
#elif (MATRIX_COLS <= 32) #elif (MATRIX_COLS <= 32)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n") # define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row))
# define ROW_SHIFTER ((uint32_t)1)
#endif #endif
#ifdef MATRIX_MASKED #ifdef MATRIX_MASKED
@ -115,7 +112,7 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
for (uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) { for (uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) {
pin_t pin = direct_pins[current_row][col_index]; pin_t pin = direct_pins[current_row][col_index];
if (pin != NO_PIN) { if (pin != NO_PIN) {
current_matrix[current_row] |= gpio_read_pin(pin) ? 0 : (ROW_SHIFTER << col_index); current_matrix[current_row] |= gpio_read_pin(pin) ? 0 : (MATRIX_ROW_SHIFTER << col_index);
} }
} }
@ -224,7 +221,7 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
uint8_t pin_state = gpio_read_pin(col_pins[col_index]); uint8_t pin_state = gpio_read_pin(col_pins[col_index]);
// Populate the matrix row with the state of the col pin // Populate the matrix row with the state of the col pin
current_matrix[current_row] |= pin_state ? 0 : (ROW_SHIFTER << col_index); current_matrix[current_row] |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << col_index);
} }
// Unselect row // Unselect row
@ -272,10 +269,10 @@ static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
// Check row pin state // Check row pin state
if (gpio_read_pin(row_pins[row_index]) == 0) { if (gpio_read_pin(row_pins[row_index]) == 0) {
// Pin LO, set col bit // Pin LO, set col bit
current_matrix[row_index] |= (ROW_SHIFTER << current_col); current_matrix[row_index] |= (MATRIX_ROW_SHIFTER << current_col);
} else { } else {
// Pin HI, clear col bit // Pin HI, clear col bit
current_matrix[row_index] &= ~(ROW_SHIFTER << current_col); current_matrix[row_index] &= ~(MATRIX_ROW_SHIFTER << current_col);
} }
// Determine if the matrix changed state // Determine if the matrix changed state

View File

@ -24,15 +24,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#if (MATRIX_COLS <= 8) #if (MATRIX_COLS <= 8)
# define print_matrix_header() print("\nr/c 01234567\n") # define print_matrix_header() print("\nr/c 01234567\n")
# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
# define ROW_SHIFTER ((uint8_t)1)
#elif (MATRIX_COLS <= 16) #elif (MATRIX_COLS <= 16)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n") # define print_matrix_header() print("\nr/c 0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row))
# define ROW_SHIFTER ((uint16_t)1)
#elif (MATRIX_COLS <= 32) #elif (MATRIX_COLS <= 32)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n") # define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row))
# define ROW_SHIFTER ((uint32_t)1)
#endif #endif
#ifdef MATRIX_MASKED #ifdef MATRIX_MASKED
@ -115,7 +112,7 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
for (uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) { for (uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) {
pin_t pin = direct_pins[current_row][col_index]; pin_t pin = direct_pins[current_row][col_index];
if (pin != NO_PIN) { if (pin != NO_PIN) {
current_matrix[current_row] |= gpio_read_pin(pin) ? 0 : (ROW_SHIFTER << col_index); current_matrix[current_row] |= gpio_read_pin(pin) ? 0 : (MATRIX_ROW_SHIFTER << col_index);
} }
} }
@ -224,7 +221,7 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
uint8_t pin_state = gpio_read_pin(col_pins[col_index]); uint8_t pin_state = gpio_read_pin(col_pins[col_index]);
// Populate the matrix row with the state of the col pin // Populate the matrix row with the state of the col pin
current_matrix[current_row] |= pin_state ? 0 : (ROW_SHIFTER << col_index); current_matrix[current_row] |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << col_index);
} }
// Unselect row // Unselect row
@ -272,10 +269,10 @@ static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
// Check row pin state // Check row pin state
if (gpio_read_pin(row_pins[row_index]) == 0) { if (gpio_read_pin(row_pins[row_index]) == 0) {
// Pin LO, set col bit // Pin LO, set col bit
current_matrix[row_index] |= (ROW_SHIFTER << current_col); current_matrix[row_index] |= (MATRIX_ROW_SHIFTER << current_col);
} else { } else {
// Pin HI, clear col bit // Pin HI, clear col bit
current_matrix[row_index] &= ~(ROW_SHIFTER << current_col); current_matrix[row_index] &= ~(MATRIX_ROW_SHIFTER << current_col);
} }
// Determine if the matrix changed state // Determine if the matrix changed state

View File

@ -24,15 +24,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#if (MATRIX_COLS <= 8) #if (MATRIX_COLS <= 8)
# define print_matrix_header() print("\nr/c 01234567\n") # define print_matrix_header() print("\nr/c 01234567\n")
# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
# define ROW_SHIFTER ((uint8_t)1)
#elif (MATRIX_COLS <= 16) #elif (MATRIX_COLS <= 16)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n") # define print_matrix_header() print("\nr/c 0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row))
# define ROW_SHIFTER ((uint16_t)1)
#elif (MATRIX_COLS <= 32) #elif (MATRIX_COLS <= 32)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n") # define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row))
# define ROW_SHIFTER ((uint32_t)1)
#endif #endif
#ifdef MATRIX_MASKED #ifdef MATRIX_MASKED
@ -115,7 +112,7 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
for (uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) { for (uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) {
pin_t pin = direct_pins[current_row][col_index]; pin_t pin = direct_pins[current_row][col_index];
if (pin != NO_PIN) { if (pin != NO_PIN) {
current_matrix[current_row] |= gpio_read_pin(pin) ? 0 : (ROW_SHIFTER << col_index); current_matrix[current_row] |= gpio_read_pin(pin) ? 0 : (MATRIX_ROW_SHIFTER << col_index);
} }
} }
@ -224,7 +221,7 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
uint8_t pin_state = gpio_read_pin(col_pins[col_index]); uint8_t pin_state = gpio_read_pin(col_pins[col_index]);
// Populate the matrix row with the state of the col pin // Populate the matrix row with the state of the col pin
current_matrix[current_row] |= pin_state ? 0 : (ROW_SHIFTER << col_index); current_matrix[current_row] |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << col_index);
} }
// Unselect row // Unselect row
@ -272,10 +269,10 @@ static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
// Check row pin state // Check row pin state
if (gpio_read_pin(row_pins[row_index]) == 0) { if (gpio_read_pin(row_pins[row_index]) == 0) {
// Pin LO, set col bit // Pin LO, set col bit
current_matrix[row_index] |= (ROW_SHIFTER << current_col); current_matrix[row_index] |= (MATRIX_ROW_SHIFTER << current_col);
} else { } else {
// Pin HI, clear col bit // Pin HI, clear col bit
current_matrix[row_index] &= ~(ROW_SHIFTER << current_col); current_matrix[row_index] &= ~(MATRIX_ROW_SHIFTER << current_col);
} }
// Determine if the matrix changed state // Determine if the matrix changed state

View File

@ -42,15 +42,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#if (MATRIX_COLS <= 8) #if (MATRIX_COLS <= 8)
# define print_matrix_header() print("\nr/c 01234567\n") # define print_matrix_header() print("\nr/c 01234567\n")
# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
# define ROW_SHIFTER ((uint8_t)1)
#elif (MATRIX_COLS <= 16) #elif (MATRIX_COLS <= 16)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n") # define print_matrix_header() print("\nr/c 0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row))
# define ROW_SHIFTER ((uint16_t)1)
#elif (MATRIX_COLS <= 32) #elif (MATRIX_COLS <= 32)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n") # define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row))
# define ROW_SHIFTER ((uint32_t)1)
#endif #endif
#ifdef MATRIX_MASKED #ifdef MATRIX_MASKED
@ -227,7 +224,7 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
uint8_t pin_state = (_SFR_IO8(pin >> 4) & _BV(pin & 0xF)); uint8_t pin_state = (_SFR_IO8(pin >> 4) & _BV(pin & 0xF));
/* Populate the matrix row with the state of the col pin */ /* Populate the matrix row with the state of the col pin */
current_matrix[current_row] |= pin_state ? 0 : (ROW_SHIFTER << col_index); current_matrix[current_row] |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << col_index);
} }
/* Unselect row */ /* Unselect row */

View File

@ -38,15 +38,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#if (MATRIX_COLS <= 8) #if (MATRIX_COLS <= 8)
# define print_matrix_header() print("\nr/c 01234567\n") # define print_matrix_header() print("\nr/c 01234567\n")
# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
# define ROW_SHIFTER ((uint8_t)1)
#elif (MATRIX_COLS <= 16) #elif (MATRIX_COLS <= 16)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n") # define print_matrix_header() print("\nr/c 0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row))
# define ROW_SHIFTER ((uint16_t)1)
#elif (MATRIX_COLS <= 32) #elif (MATRIX_COLS <= 32)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n") # define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row))
# define ROW_SHIFTER ((uint32_t)1)
#endif #endif
static matrix_row_t matrix_debouncing[MATRIX_ROWS]; static matrix_row_t matrix_debouncing[MATRIX_ROWS];
@ -202,12 +199,12 @@ static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
if ((_SFR_IO8(row_pins[row_index] >> 4) & _BV(row_pins[row_index] & 0xF)) == 0) if ((_SFR_IO8(row_pins[row_index] >> 4) & _BV(row_pins[row_index] & 0xF)) == 0)
{ {
// Pin LO, set col bit // Pin LO, set col bit
current_matrix[row_index] |= (ROW_SHIFTER << current_col); current_matrix[row_index] |= (MATRIX_ROW_SHIFTER << current_col);
} }
else else
{ {
// Pin HI, clear col bit // Pin HI, clear col bit
current_matrix[row_index] &= ~(ROW_SHIFTER << current_col); current_matrix[row_index] &= ~(MATRIX_ROW_SHIFTER << current_col);
} }
// Determine if the matrix changed state // Determine if the matrix changed state