Skip to content

Commit b65c80b

Browse files
committed
Debounce: Align matrix.c code to satisfy lint tests
1 parent 8e77625 commit b65c80b

File tree

14 files changed

+922
-1060
lines changed

14 files changed

+922
-1060
lines changed

keyboards/bpiphany/pegasushoof/2015/matrix.c

Lines changed: 111 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -31,119 +31,143 @@ static matrix_row_t matrix[MATRIX_ROWS];
3131
static matrix_row_t matrix_debouncing[MATRIX_ROWS];
3232

3333
static matrix_row_t read_cols(void);
34-
static void select_row(uint8_t col);
34+
static void select_row(uint8_t col);
3535

3636
// user-defined overridable functions
3737

38-
__attribute__((weak)) void matrix_init_kb(void) { matrix_init_user(); }
38+
__attribute__((weak)) void matrix_init_kb(void) {
39+
matrix_init_user();
40+
}
3941

40-
__attribute__((weak)) void matrix_scan_kb(void) { matrix_scan_user(); }
42+
__attribute__((weak)) void matrix_scan_kb(void) {
43+
matrix_scan_user();
44+
}
4145

4246
__attribute__((weak)) void matrix_init_user(void) {}
4347

4448
__attribute__((weak)) void matrix_scan_user(void) {}
4549

4650
// helper functions
4751

48-
inline uint8_t matrix_rows(void)
49-
{
50-
return MATRIX_ROWS;
52+
inline uint8_t matrix_rows(void) {
53+
return MATRIX_ROWS;
5154
}
5255

53-
inline uint8_t matrix_cols(void)
54-
{
55-
return MATRIX_COLS;
56+
inline uint8_t matrix_cols(void) {
57+
return MATRIX_COLS;
5658
}
5759

58-
void matrix_init(void)
59-
{
60-
/* Column output pins */
61-
DDRD |= 0b01111011;
62-
/* Row input pins */
63-
DDRC &= ~0b10000000;
64-
DDRB &= ~0b01111111;
65-
PORTC |= 0b10000000;
66-
PORTB |= 0b01111111;
67-
68-
for (uint8_t i=0; i < matrix_rows(); i++) {
69-
matrix[i] = 0;
70-
matrix_debouncing[i] = 0;
71-
}
72-
73-
matrix_init_kb();
60+
void matrix_init(void) {
61+
/* Column output pins */
62+
DDRD |= 0b01111011;
63+
/* Row input pins */
64+
DDRC &= ~0b10000000;
65+
DDRB &= ~0b01111111;
66+
PORTC |= 0b10000000;
67+
PORTB |= 0b01111111;
68+
69+
for (uint8_t i = 0; i < matrix_rows(); i++) {
70+
matrix[i] = 0;
71+
matrix_debouncing[i] = 0;
72+
}
73+
74+
matrix_init_kb();
7475
}
7576

76-
uint8_t matrix_scan(void)
77-
{
78-
bool changed = false;
79-
for (uint8_t col = 0; col < MATRIX_COLS; col++) {
80-
select_row(col);
81-
wait_us(30);
82-
matrix_row_t rows = read_cols();
83-
for (uint8_t row = 0; row < matrix_rows(); row++) {
84-
bool prev_bit = matrix_debouncing[row] & ((matrix_row_t)1<<col);
85-
bool curr_bit = rows & (1<<row);
86-
if ((changed |= prev_bit != curr_bit)) {
87-
matrix_debouncing[row] ^= (matrix_row_t) 1 << col;
88-
}
77+
uint8_t matrix_scan(void) {
78+
bool changed = false;
79+
for (uint8_t col = 0; col < MATRIX_COLS; col++) {
80+
select_row(col);
81+
wait_us(30);
82+
matrix_row_t rows = read_cols();
83+
for (uint8_t row = 0; row < matrix_rows(); row++) {
84+
bool prev_bit = matrix_debouncing[row] & ((matrix_row_t)1 << col);
85+
bool curr_bit = rows & (1 << row);
86+
if ((changed |= prev_bit != curr_bit)) {
87+
matrix_debouncing[row] ^= (matrix_row_t)1 << col;
88+
}
89+
}
8990
}
90-
}
9191

92-
debounce(matrix_debouncing, matrix, changed);
93-
matrix_scan_kb();
92+
debounce(matrix_debouncing, matrix, changed);
93+
matrix_scan_kb();
9494

95-
return (uint8_t)changed;
95+
return (uint8_t)changed;
9696
}
9797

98-
inline
99-
matrix_row_t matrix_get_row(uint8_t row)
100-
{
101-
return matrix[row];
98+
inline matrix_row_t matrix_get_row(uint8_t row) {
99+
return matrix[row];
102100
}
103101

104-
void matrix_print(void)
105-
{
106-
print("\nr/c 0123456789ABCDEF\n");
107-
for (uint8_t row = 0; row < matrix_rows(); row++) {
108-
print_hex8(row); print(": ");
109-
print_bin_reverse16(matrix_get_row(row));
110-
print("\n");
111-
}
102+
void matrix_print(void) {
103+
print("\nr/c 0123456789ABCDEF\n");
104+
for (uint8_t row = 0; row < matrix_rows(); row++) {
105+
print_hex8(row);
106+
print(": ");
107+
print_bin_reverse16(matrix_get_row(row));
108+
print("\n");
109+
}
112110
}
113111

114-
static matrix_row_t read_cols(void)
115-
{
116-
return
117-
(PINB&(1<<5) ? 0 : ((matrix_row_t)1<<0)) |
118-
(PINC&(1<<7) ? 0 : ((matrix_row_t)1<<1)) |
119-
(PINB&(1<<4) ? 0 : ((matrix_row_t)1<<2)) |
120-
(PINB&(1<<6) ? 0 : ((matrix_row_t)1<<3)) |
121-
(PINB&(1<<1) ? 0 : ((matrix_row_t)1<<4)) |
122-
(PINB&(1<<2) ? 0 : ((matrix_row_t)1<<5)) |
123-
(PINB&(1<<3) ? 0 : ((matrix_row_t)1<<6)) |
124-
(PINB&(1<<0) ? 0 : ((matrix_row_t)1<<7));
112+
static matrix_row_t read_cols(void) {
113+
return (PINB & (1 << 5) ? 0 : ((matrix_row_t)1 << 0)) | (PINC & (1 << 7) ? 0 : ((matrix_row_t)1 << 1)) | (PINB & (1 << 4) ? 0 : ((matrix_row_t)1 << 2)) | (PINB & (1 << 6) ? 0 : ((matrix_row_t)1 << 3)) | (PINB & (1 << 1) ? 0 : ((matrix_row_t)1 << 4)) | (PINB & (1 << 2) ? 0 : ((matrix_row_t)1 << 5)) | (PINB & (1 << 3) ? 0 : ((matrix_row_t)1 << 6)) | (PINB & (1 << 0) ? 0 : ((matrix_row_t)1 << 7));
125114
}
126115

127-
static void select_row(uint8_t col)
128-
{
129-
switch (col) {
130-
case 0: PORTD = (PORTD & ~0b01111011) | 0b00011011; break;
131-
case 1: PORTD = (PORTD & ~0b01111011) | 0b01000011; break;
132-
case 2: PORTD = (PORTD & ~0b01111011) | 0b01100000; break;
133-
case 3: PORTD = (PORTD & ~0b01111011) | 0b01111001; break;
134-
case 4: PORTD = (PORTD & ~0b01111011) | 0b01100010; break;
135-
case 5: PORTD = (PORTD & ~0b01111011) | 0b01101010; break;
136-
case 6: PORTD = (PORTD & ~0b01111011) | 0b01110001; break;
137-
case 7: PORTD = (PORTD & ~0b01111011) | 0b01101001; break;
138-
case 8: PORTD = (PORTD & ~0b01111011) | 0b01100001; break;
139-
case 9: PORTD = (PORTD & ~0b01111011) | 0b01111000; break;
140-
case 10: PORTD = (PORTD & ~0b01111011) | 0b00100011; break;
141-
case 11: PORTD = (PORTD & ~0b01111011) | 0b00101011; break;
142-
case 12: PORTD = (PORTD & ~0b01111011) | 0b00110011; break;
143-
case 13: PORTD = (PORTD & ~0b01111011) | 0b01110000; break;
144-
case 14: PORTD = (PORTD & ~0b01111011) | 0b00010011; break;
145-
case 15: PORTD = (PORTD & ~0b01111011) | 0b01101000; break;
146-
case 16: PORTD = (PORTD & ~0b01111011) | 0b00001011; break;
147-
case 17: PORTD = (PORTD & ~0b01111011) | 0b00111011; break;
148-
}
116+
static void select_row(uint8_t col) {
117+
switch (col) {
118+
case 0:
119+
PORTD = (PORTD & ~0b01111011) | 0b00011011;
120+
break;
121+
case 1:
122+
PORTD = (PORTD & ~0b01111011) | 0b01000011;
123+
break;
124+
case 2:
125+
PORTD = (PORTD & ~0b01111011) | 0b01100000;
126+
break;
127+
case 3:
128+
PORTD = (PORTD & ~0b01111011) | 0b01111001;
129+
break;
130+
case 4:
131+
PORTD = (PORTD & ~0b01111011) | 0b01100010;
132+
break;
133+
case 5:
134+
PORTD = (PORTD & ~0b01111011) | 0b01101010;
135+
break;
136+
case 6:
137+
PORTD = (PORTD & ~0b01111011) | 0b01110001;
138+
break;
139+
case 7:
140+
PORTD = (PORTD & ~0b01111011) | 0b01101001;
141+
break;
142+
case 8:
143+
PORTD = (PORTD & ~0b01111011) | 0b01100001;
144+
break;
145+
case 9:
146+
PORTD = (PORTD & ~0b01111011) | 0b01111000;
147+
break;
148+
case 10:
149+
PORTD = (PORTD & ~0b01111011) | 0b00100011;
150+
break;
151+
case 11:
152+
PORTD = (PORTD & ~0b01111011) | 0b00101011;
153+
break;
154+
case 12:
155+
PORTD = (PORTD & ~0b01111011) | 0b00110011;
156+
break;
157+
case 13:
158+
PORTD = (PORTD & ~0b01111011) | 0b01110000;
159+
break;
160+
case 14:
161+
PORTD = (PORTD & ~0b01111011) | 0b00010011;
162+
break;
163+
case 15:
164+
PORTD = (PORTD & ~0b01111011) | 0b01101000;
165+
break;
166+
case 16:
167+
PORTD = (PORTD & ~0b01111011) | 0b00001011;
168+
break;
169+
case 17:
170+
PORTD = (PORTD & ~0b01111011) | 0b00111011;
171+
break;
172+
}
149173
}

0 commit comments

Comments
 (0)