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
27 changed files with 68 additions and 151 deletions
@@ -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_header() print("\nr/c 01234567\n")
#define ROW_SHIFTER ((uint8_t)1)
static void matrix_make(uint8_t code);
static void matrix_break(uint8_t code);
+3 -6
View File
@@ -48,15 +48,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#if (MATRIX_COLS <= 8)
# define print_matrix_header() print("\nr/c 01234567\n")
# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
# define ROW_SHIFTER ((uint8_t)1)
#elif (MATRIX_COLS <= 16)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row))
# define ROW_SHIFTER ((uint16_t)1)
#elif (MATRIX_COLS <= 32)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row))
# define ROW_SHIFTER ((uint32_t)1)
#endif
#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));
// 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
@@ -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)
{
// Pin LO, set col bit
current_matrix[row_index] |= (ROW_SHIFTER << current_col);
current_matrix[row_index] |= (MATRIX_ROW_SHIFTER << current_col);
}
else
{
// 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
+3 -6
View File
@@ -52,15 +52,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#if (MATRIX_COLS <= 8)
# define print_matrix_header() print("\nr/c 01234567\n")
# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
# define ROW_SHIFTER ((uint8_t)1)
#elif (MATRIX_COLS <= 16)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row))
# define ROW_SHIFTER ((uint16_t)1)
#elif (MATRIX_COLS <= 32)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row))
# define ROW_SHIFTER ((uint32_t)1)
#endif
#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));
// 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
@@ -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)
{
// Pin LO, set col bit
current_matrix[row_index] |= (ROW_SHIFTER << current_col);
current_matrix[row_index] |= (MATRIX_ROW_SHIFTER << current_col);
}
else
{
// 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
+3 -6
View File
@@ -48,15 +48,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#if (MATRIX_COLS <= 8)
# define print_matrix_header() print("\nr/c 01234567\n")
# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
# define ROW_SHIFTER ((uint8_t)1)
#elif (MATRIX_COLS <= 16)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row))
# define ROW_SHIFTER ((uint16_t)1)
#elif (MATRIX_COLS <= 32)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row))
# define ROW_SHIFTER ((uint32_t)1)
#endif
#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));
// 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
@@ -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)
{
// Pin LO, set col bit
current_matrix[row_index] |= (ROW_SHIFTER << current_col);
current_matrix[row_index] |= (MATRIX_ROW_SHIFTER << current_col);
}
else
{
// 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
+3 -6
View File
@@ -46,15 +46,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#if (MATRIX_COLS <= 8)
# define print_matrix_header() print("\nr/c 01234567\n")
# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
# define ROW_SHIFTER ((uint8_t)1)
#elif (MATRIX_COLS <= 16)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row))
# define ROW_SHIFTER ((uint16_t)1)
#elif (MATRIX_COLS <= 32)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row))
# define ROW_SHIFTER ((uint32_t)1)
#endif
#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));
// 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
@@ -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)
{
// Pin LO, set col bit
current_matrix[row_index] |= (ROW_SHIFTER << current_col);
current_matrix[row_index] |= (MATRIX_ROW_SHIFTER << current_col);
}
else
{
// 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
-3
View File
@@ -34,15 +34,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#if (MATRIX_COLS <= 8)
# define print_matrix_header() print("\nr/c 01234567\n")
# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
# define ROW_SHIFTER ((uint8_t)1)
#elif (MATRIX_COLS <= 16)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row))
# define ROW_SHIFTER ((uint16_t)1)
#elif (MATRIX_COLS <= 32)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row))
# define ROW_SHIFTER ((uint32_t)1)
#endif
#define MAIN_ROWMASK 0xFFF0;
+2 -3
View File
@@ -20,7 +20,6 @@
#include "timer.h"
#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);
@@ -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)) {
// 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 {
// 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
+4 -6
View File
@@ -76,8 +76,6 @@ uint8_t expander_status;
uint8_t expander_input_pin_mask;
bool i2c_initialized = false;
#define ROW_SHIFTER ((matrix_row_t)1)
__attribute__ ((weak))
void matrix_init_user(void) {}
@@ -284,7 +282,7 @@ uint8_t matrix_scan(void)
inline
bool matrix_is_on(uint8_t row, uint8_t col)
{
return (matrix[row] & (ROW_SHIFTER << col));
return (matrix[row] & (MATRIX_ROW_SHIFTER << col));
}
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]) {
uint8_t pin = onboard_col_pins[col_index];
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)) {
// 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 {
// 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
+1 -4
View File
@@ -31,15 +31,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#if (MATRIX_COLS <= 8)
# define print_matrix_header() print("\nr/c 01234567\n")
# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
# define ROW_SHIFTER ((uint8_t)1)
#elif (MATRIX_COLS <= 16)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row))
# define ROW_SHIFTER ((uint16_t)1)
#elif (MATRIX_COLS <= 32)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row))
# define ROW_SHIFTER ((uint32_t)1)
#endif
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);
// 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
+2 -5
View File
@@ -43,15 +43,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#if (MATRIX_COLS <= 8)
# define print_matrix_header() print("\nr/c 01234567\n")
# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
# define ROW_SHIFTER ((uint8_t)1)
#elif (MATRIX_COLS <= 16)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row))
# define ROW_SHIFTER ((uint16_t)1)
#elif (MATRIX_COLS <= 32)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row))
# define ROW_SHIFTER ((uint32_t)1)
#endif
#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));
// 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]);
}
@@ -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));
// 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
+4 -6
View File
@@ -86,8 +86,6 @@ uint8_t expander_status;
uint8_t expander_input_pin_mask;
bool i2c_initialized = false;
#define ROW_SHIFTER ((matrix_row_t)1)
__attribute__ ((weak))
void matrix_init_user(void) {}
@@ -256,7 +254,7 @@ uint8_t matrix_scan(void)
inline
bool matrix_is_on(uint8_t row, uint8_t col)
{
return (matrix[row] & (ROW_SHIFTER << col));
return (matrix[row] & (MATRIX_ROW_SHIFTER << col));
}
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]) {
uint8_t pin = onboard_col_pins[col_index];
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)) {
// 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 {
// 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
+2 -4
View File
@@ -16,8 +16,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "matrix.h"
#define ROW_SHIFTER ((uint16_t)1)
static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_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
if (gpio_read_pin(col_pins[col_index]) == 0) {
// Pin LO, set col bit
current_matrix[current_row] |= (ROW_SHIFTER << col_index);
current_matrix[current_row] |= (MATRIX_ROW_SHIFTER << col_index);
} else {
// Pin HI, clear col bit
current_matrix[current_row] &= ~(ROW_SHIFTER << col_index);
current_matrix[current_row] &= ~(MATRIX_ROW_SHIFTER << col_index);
}
}
}
+2 -4
View File
@@ -16,8 +16,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "matrix.h"
#define ROW_SHIFTER ((uint16_t)1)
static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_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
if (gpio_read_pin(col_pins[col_index]) == 0) {
// Pin LO, set col bit
current_matrix[current_row] |= (ROW_SHIFTER << col_index);
current_matrix[current_row] |= (MATRIX_ROW_SHIFTER << col_index);
} else {
// Pin HI, clear col bit
current_matrix[current_row] &= ~(ROW_SHIFTER << col_index);
current_matrix[current_row] &= ~(MATRIX_ROW_SHIFTER << col_index);
}
}
}
+3 -6
View File
@@ -24,15 +24,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#if (MATRIX_COLS <= 8)
# define print_matrix_header() print("\nr/c 01234567\n")
# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
# define ROW_SHIFTER ((uint8_t)1)
#elif (MATRIX_COLS <= 16)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row))
# define ROW_SHIFTER ((uint16_t)1)
#elif (MATRIX_COLS <= 32)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row))
# define ROW_SHIFTER ((uint32_t)1)
#endif
#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]);
// 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
@@ -174,10 +171,10 @@ static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
// Check row pin state
if (gpio_read_pin(row_pins[row_index]) == 0) {
// Pin LO, set col bit
current_matrix[tmp] |= (ROW_SHIFTER << current_col);
current_matrix[tmp] |= (MATRIX_ROW_SHIFTER << current_col);
} else {
// 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
+3 -6
View File
@@ -24,15 +24,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#if (MATRIX_COLS <= 8)
# define print_matrix_header() print("\nr/c 01234567\n")
# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
# define ROW_SHIFTER ((uint8_t)1)
#elif (MATRIX_COLS <= 16)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row))
# define ROW_SHIFTER ((uint16_t)1)
#elif (MATRIX_COLS <= 32)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row))
# define ROW_SHIFTER ((uint32_t)1)
#endif
#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]);
// 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
@@ -174,10 +171,10 @@ static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
// Check row pin state
if (gpio_read_pin(row_pins[row_index]) == 0) {
// Pin LO, set col bit
current_matrix[tmp] |= (ROW_SHIFTER << current_col);
current_matrix[tmp] |= (MATRIX_ROW_SHIFTER << current_col);
} else {
// 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
+3 -11
View File
@@ -16,14 +16,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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 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]);
// 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
@@ -113,10 +105,10 @@ static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
// Check row pin state
if (gpio_read_pin(row_pins[row_index]) == 0) {
// Pin LO, set col bit
current_matrix[tmp] |= (ROW_SHIFTER << current_col);
current_matrix[tmp] |= (MATRIX_ROW_SHIFTER << current_col);
} else {
// 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
+3 -6
View File
@@ -24,15 +24,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#if (MATRIX_COLS <= 8)
# define print_matrix_header() print("\nr/c 01234567\n")
# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
# define ROW_SHIFTER ((uint8_t)1)
#elif (MATRIX_COLS <= 16)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row))
# define ROW_SHIFTER ((uint16_t)1)
#elif (MATRIX_COLS <= 32)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row))
# define ROW_SHIFTER ((uint32_t)1)
#endif
#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]);
// 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
@@ -174,10 +171,10 @@ static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
// Check row pin state
if (gpio_read_pin(row_pins[row_index]) == 0) {
// Pin LO, set col bit
current_matrix[tmp] |= (ROW_SHIFTER << current_col);
current_matrix[tmp] |= (MATRIX_ROW_SHIFTER << current_col);
} else {
// 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
+4 -7
View File
@@ -24,15 +24,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#if (MATRIX_COLS <= 8)
# define print_matrix_header() print("\nr/c 01234567\n")
# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
# define ROW_SHIFTER ((uint8_t)1)
#elif (MATRIX_COLS <= 16)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row))
# define ROW_SHIFTER ((uint16_t)1)
#elif (MATRIX_COLS <= 32)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row))
# define ROW_SHIFTER ((uint32_t)1)
#endif
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 (gpio_read_pin(E2) == 0) {
// Pin LO, set col bit
current_matrix[row_index] |= (ROW_SHIFTER << current_col);
current_matrix[row_index] |= (MATRIX_ROW_SHIFTER << current_col);
} else {
// Pin HI, clear col bit
current_matrix[row_index] &= ~(ROW_SHIFTER << current_col);
current_matrix[row_index] &= ~(MATRIX_ROW_SHIFTER << current_col);
}
} else {
if (gpio_read_pin(row_pins[row_index]) == 0) {
// Pin HI, clear col bit
current_matrix[row_index] &= ~(ROW_SHIFTER << current_col);
current_matrix[row_index] &= ~(MATRIX_ROW_SHIFTER << current_col);
} else {
// Pin LO, set col bit
current_matrix[row_index] |= (ROW_SHIFTER << current_col);
current_matrix[row_index] |= (MATRIX_ROW_SHIFTER << current_col);
}
}
-3
View File
@@ -35,15 +35,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#if (MATRIX_COLS <= 8)
# define print_matrix_header() print("\nr/c 01234567\n")
# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
# define ROW_SHIFTER ((uint8_t)1)
#elif (MATRIX_COLS <= 16)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row))
# define ROW_SHIFTER ((uint16_t)1)
#elif (MATRIX_COLS <= 32)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row))
# define ROW_SHIFTER ((uint32_t)1)
#endif
#define UART_MATRIX_RESPONSE_TIMEOUT 10000
+2 -4
View File
@@ -24,8 +24,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "matrix.h"
#include "quantum.h"
#define ROW_SHIFTER ((uint16_t)1)
static const pin_t row_pins[] = MATRIX_ROW_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 (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
if (gpio_read_pin(col_pins[col_index*2])) {
// 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
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
if (gpio_read_pin(row_pins[row_index])) {
// Pin HI, clear col bit
+3 -6
View File
@@ -50,15 +50,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#if (MATRIX_COLS <= 8)
# define print_matrix_header() print("\nr/c 01234567\n")
# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
# define ROW_SHIFTER ((uint8_t)1)
#elif (MATRIX_COLS <= 16)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row))
# define ROW_SHIFTER ((uint16_t)1)
#elif (MATRIX_COLS <= 32)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row))
# define ROW_SHIFTER ((uint32_t)1)
#endif
#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));
// 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
@@ -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)
{
// Pin LO, set col bit
current_matrix[row_index] |= (ROW_SHIFTER << current_col);
current_matrix[row_index] |= (MATRIX_ROW_SHIFTER << current_col);
}
else
{
// 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
+3 -11
View File
@@ -18,14 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "matrix.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 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]);
// 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
@@ -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)
{
// Pin LO, set col bit
current_matrix[tmp] |= (ROW_SHIFTER << current_col);
current_matrix[tmp] |= (MATRIX_ROW_SHIFTER << current_col);
}
else
{
// 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
+4 -7
View File
@@ -24,15 +24,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#if (MATRIX_COLS <= 8)
# define print_matrix_header() print("\nr/c 01234567\n")
# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
# define ROW_SHIFTER ((uint8_t)1)
#elif (MATRIX_COLS <= 16)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row))
# define ROW_SHIFTER ((uint16_t)1)
#elif (MATRIX_COLS <= 32)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row))
# define ROW_SHIFTER ((uint32_t)1)
#endif
#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++) {
pin_t pin = direct_pins[current_row][col_index];
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]);
// 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
@@ -272,10 +269,10 @@ static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
// Check row pin state
if (gpio_read_pin(row_pins[row_index]) == 0) {
// Pin LO, set col bit
current_matrix[row_index] |= (ROW_SHIFTER << current_col);
current_matrix[row_index] |= (MATRIX_ROW_SHIFTER << current_col);
} else {
// 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
+4 -7
View File
@@ -24,15 +24,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#if (MATRIX_COLS <= 8)
# define print_matrix_header() print("\nr/c 01234567\n")
# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
# define ROW_SHIFTER ((uint8_t)1)
#elif (MATRIX_COLS <= 16)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row))
# define ROW_SHIFTER ((uint16_t)1)
#elif (MATRIX_COLS <= 32)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row))
# define ROW_SHIFTER ((uint32_t)1)
#endif
#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++) {
pin_t pin = direct_pins[current_row][col_index];
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]);
// 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
@@ -272,10 +269,10 @@ static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
// Check row pin state
if (gpio_read_pin(row_pins[row_index]) == 0) {
// Pin LO, set col bit
current_matrix[row_index] |= (ROW_SHIFTER << current_col);
current_matrix[row_index] |= (MATRIX_ROW_SHIFTER << current_col);
} else {
// 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
+4 -7
View File
@@ -24,15 +24,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#if (MATRIX_COLS <= 8)
# define print_matrix_header() print("\nr/c 01234567\n")
# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
# define ROW_SHIFTER ((uint8_t)1)
#elif (MATRIX_COLS <= 16)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row))
# define ROW_SHIFTER ((uint16_t)1)
#elif (MATRIX_COLS <= 32)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row))
# define ROW_SHIFTER ((uint32_t)1)
#endif
#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++) {
pin_t pin = direct_pins[current_row][col_index];
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]);
// 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
@@ -272,10 +269,10 @@ static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
// Check row pin state
if (gpio_read_pin(row_pins[row_index]) == 0) {
// Pin LO, set col bit
current_matrix[row_index] |= (ROW_SHIFTER << current_col);
current_matrix[row_index] |= (MATRIX_ROW_SHIFTER << current_col);
} else {
// 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
+1 -4
View File
@@ -42,15 +42,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#if (MATRIX_COLS <= 8)
# define print_matrix_header() print("\nr/c 01234567\n")
# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
# define ROW_SHIFTER ((uint8_t)1)
#elif (MATRIX_COLS <= 16)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row))
# define ROW_SHIFTER ((uint16_t)1)
#elif (MATRIX_COLS <= 32)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row))
# define ROW_SHIFTER ((uint32_t)1)
#endif
#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));
/* 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 */
+2 -5
View File
@@ -38,15 +38,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#if (MATRIX_COLS <= 8)
# define print_matrix_header() print("\nr/c 01234567\n")
# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
# define ROW_SHIFTER ((uint8_t)1)
#elif (MATRIX_COLS <= 16)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row))
# define ROW_SHIFTER ((uint16_t)1)
#elif (MATRIX_COLS <= 32)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row))
# define ROW_SHIFTER ((uint32_t)1)
#endif
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)
{
// Pin LO, set col bit
current_matrix[row_index] |= (ROW_SHIFTER << current_col);
current_matrix[row_index] |= (MATRIX_ROW_SHIFTER << current_col);
}
else
{
// 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