|
@@ -43,7 +43,7 @@ static uint8_t error_count_arrow = 0;
|
|
|
/* Set 0 if debouncing isn't needed */
|
|
|
|
|
|
#ifndef DEBOUNCING_DELAY
|
|
|
-# define DEBOUNCING_DELAY 5
|
|
|
+# define DEBOUNCING_DELAY 5
|
|
|
#endif
|
|
|
|
|
|
#if (DEBOUNCING_DELAY > 0)
|
|
@@ -135,10 +135,7 @@ uint8_t matrix_cols(void) {
|
|
|
return MATRIX_COLS;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
i2c_status_t i2c_transaction(uint8_t address, uint32_t mask, uint8_t col_offset);
|
|
|
-//uint8_t i2c_transaction_numpad(void);
|
|
|
-//uint8_t i2c_transaction_arrow(void);
|
|
|
|
|
|
//this replases tmk code
|
|
|
void matrix_setup(void){
|
|
@@ -220,7 +217,7 @@ uint8_t matrix_scan(void)
|
|
|
matrix[i] &= 0x3F; //mask bits to keep
|
|
|
}
|
|
|
}
|
|
|
- }else{ //no error
|
|
|
+ }else{ //no error
|
|
|
error_count_right = 0;
|
|
|
}
|
|
|
|
|
@@ -440,40 +437,28 @@ static void unselect_cols(void)
|
|
|
// Complete rows from other modules over i2c
|
|
|
i2c_status_t i2c_transaction(uint8_t address, uint32_t mask, uint8_t col_offset) {
|
|
|
i2c_status_t err = i2c_start((address << 1) | I2C_WRITE, 10);
|
|
|
- if (err) return err;
|
|
|
- i2c_write(0x01, 10);
|
|
|
- if (err) return err;
|
|
|
+ i2c_write(0x01, 10); //request data in address 1
|
|
|
|
|
|
- i2c_start((address << 1) | I2C_READ, 10);
|
|
|
- if (err) return err;
|
|
|
+ i2c_start((address << 1) | I2C_READ, 5);
|
|
|
|
|
|
err = i2c_read_ack(10);
|
|
|
if (err == 0x55) { //synchronization byte
|
|
|
|
|
|
- for (uint8_t i = 0; i < MATRIX_ROWS-1 ; i++) { //assemble slave matrix in main matrix
|
|
|
- matrix[i] &= mask; //mask bits to keep
|
|
|
- err = i2c_read_ack(10);
|
|
|
- if (err >= 0) {
|
|
|
- matrix[i] |= ((uint32_t)err << (MATRIX_COLS_SCANNED + col_offset)); //add new bits at the end
|
|
|
- } else {
|
|
|
- return err;
|
|
|
- }
|
|
|
- }
|
|
|
- //last read request must be followed by a NACK
|
|
|
- matrix[MATRIX_ROWS - 1] &= mask; //mask bits to keep
|
|
|
- err = i2c_read_nack(10);
|
|
|
- if (err >= 0) {
|
|
|
+ for (uint8_t i = 0; i < MATRIX_ROWS-1 ; i++) { //assemble slave matrix in main matrix
|
|
|
+ matrix[i] &= mask; //mask bits to keep
|
|
|
+ err = i2c_read_ack(10);
|
|
|
+ matrix[i] |= ((uint32_t)err << (MATRIX_COLS_SCANNED + col_offset)); //add new bits at the end
|
|
|
+ }
|
|
|
+ //last read request must be followed by a NACK
|
|
|
+ matrix[MATRIX_ROWS - 1] &= mask; //mask bits to keep
|
|
|
+ err = i2c_read_nack(10);
|
|
|
matrix[MATRIX_ROWS - 1] |= ((uint32_t)err << (MATRIX_COLS_SCANNED + col_offset)); //add new bits at the end
|
|
|
- } else {
|
|
|
- return err;
|
|
|
- }
|
|
|
+
|
|
|
} else {
|
|
|
i2c_stop(10);
|
|
|
return 1;
|
|
|
}
|
|
|
|
|
|
i2c_stop(10);
|
|
|
- if (err) return err;
|
|
|
-
|
|
|
return 0;
|
|
|
}
|