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
This commit is contained in:
parent
d7881f3504
commit
d5def73f6e
2 changed files with 34 additions and 4 deletions
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
@ -49,8 +49,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
#ifdef BACKLIGHT_ENABLE
|
||||
#define BACKLIGHT_PIN B6
|
||||
#define BACKLIGHT_LEVELS 7
|
||||
#define BACKLIGHT_BREATHING
|
||||
#define BREATHING_PERIOD 4
|
||||
// #define BACKLIGHT_BREATHING
|
||||
// #define BREATHING_PERIOD 4
|
||||
#endif
|
||||
|
||||
/* Set 0 if debouncing isn't needed */
|
||||
|
|
Loading…
Reference in a new issue