diff options
author | omkbd <takuya.electronics@gmail.com> | 2018-07-04 08:19:35 +0900 |
---|---|---|
committer | Drashna Jaelre <drashna@live.com> | 2018-07-03 16:19:35 -0700 |
commit | d5def73f6eccc3727d7aa192b9204322af2933ba (patch) | |
tree | fb0362164149d24e666490f7fd42d53c9fa99df1 /keyboards/ergodash/matrix.c | |
parent | d7881f3504beaf23e1c01ca0d7e4d9c3549194b6 (diff) | |
download | qmk_firmware-d5def73f6eccc3727d7aa192b9204322af2933ba.tar.gz qmk_firmware-d5def73f6eccc3727d7aa192b9204322af2933ba.zip |
sync the left and right backlight led control on ErgoDash (#3298)
* Hardware update
Backlight enable
Change pin
Add 2keys (68→70)
* change readme
* support rev1
change keymap path
* move ergodash.h
* sync the left and right backlight led
matrix.c is same as iris keyboad
backlight breathing is unstable, so it comment out
Diffstat (limited to 'keyboards/ergodash/matrix.c')
-rw-r--r-- | keyboards/ergodash/matrix.c | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/keyboards/ergodash/matrix.c b/keyboards/ergodash/matrix.c index 80d4ce46a8..bdf265a874 100644 --- a/keyboards/ergodash/matrix.c +++ b/keyboards/ergodash/matrix.c @@ -1,5 +1,5 @@ /* -Copyright 2012 Jun Wako <wakojun@gmail.com> +Copyright 2017 Danny Nguyen <danny@keeb.io> This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -31,6 +31,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #include "config.h" #include "timer.h" +#ifdef BACKLIGHT_ENABLE + #include "backlight.h" + extern backlight_config_t backlight_config; +#endif + #ifdef USE_I2C # include "i2c.h" #else // USE_SERIAL @@ -58,6 +63,8 @@ static matrix_row_t matrix_debouncing[MATRIX_ROWS]; #define ERROR_DISCONNECT_COUNT 5 +#define SERIAL_LED_ADDR 0x00 + #define ROWS_PER_HAND (MATRIX_ROWS/2) static uint8_t error_count = 0; @@ -201,6 +208,15 @@ int i2c_transaction(void) { err = i2c_master_write(0x00); if (err) goto i2c_error; +#ifdef BACKLIGHT_ENABLE + // Write backlight level for slave to read + err = i2c_master_write(backlight_config.enable ? backlight_config.level : 0); +#else + // Write zero, so our byte index is the same + err = i2c_master_write(0x00); +#endif + if (err) goto i2c_error; + // Start read err = i2c_master_start(SLAVE_I2C_ADDRESS + I2C_READ); if (err) goto i2c_error; @@ -233,6 +249,11 @@ int serial_transaction(void) { for (int i = 0; i < ROWS_PER_HAND; ++i) { matrix[slaveOffset+i] = serial_slave_buffer[i]; } + +#ifdef BACKLIGHT_ENABLE + // Write backlight level for slave to read + serial_master_buffer[SERIAL_LED_ADDR] = backlight_config.enable ? backlight_config.level : 0; +#endif return 0; } #endif @@ -273,13 +294,22 @@ void matrix_slave_scan(void) { int offset = (isLeftHand) ? 0 : ROWS_PER_HAND; #ifdef USE_I2C +#ifdef BACKLIGHT_ENABLE + // Read backlight level sent from master and update level on slave + backlight_set(i2c_slave_buffer[0]); +#endif for (int i = 0; i < ROWS_PER_HAND; ++i) { - i2c_slave_buffer[i] = matrix[offset+i]; + i2c_slave_buffer[i+1] = matrix[offset+i]; } #else // USE_SERIAL for (int i = 0; i < ROWS_PER_HAND; ++i) { serial_slave_buffer[i] = matrix[offset+i]; } + +#ifdef BACKLIGHT_ENABLE + // Read backlight level sent from master and update level on slave + backlight_set(serial_master_buffer[SERIAL_LED_ADDR]); +#endif #endif } |