Store backlight breathing state in EEPROM (#6105)
* Store backlight breathing state in EEPROM * Reduce backlight_config.level from 6 bits to 4 (max 15 "on" levels) * Error out if BACKLIGHT_LEVELS is > 15 * Remove mention of default backlight pin in rules.mk template * Remove pointless comment
This commit is contained in:
parent
e2dfb787da
commit
a32f7e1a25
5 changed files with 82 additions and 8 deletions
|
@ -708,7 +708,7 @@ bool process_record_quantum(keyrecord_t *record) {
|
||||||
#if defined(BACKLIGHT_ENABLE) && defined(BACKLIGHT_BREATHING)
|
#if defined(BACKLIGHT_ENABLE) && defined(BACKLIGHT_BREATHING)
|
||||||
case BL_BRTG: {
|
case BL_BRTG: {
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
breathing_toggle();
|
backlight_toggle_breathing();
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -1196,6 +1196,12 @@ void backlight_init_ports(void)
|
||||||
setPinOutput(backlight_pin);
|
setPinOutput(backlight_pin);
|
||||||
backlight_on(backlight_pin);
|
backlight_on(backlight_pin);
|
||||||
)
|
)
|
||||||
|
|
||||||
|
#ifdef BACKLIGHT_BREATHING
|
||||||
|
if (is_backlight_breathing()) {
|
||||||
|
breathing_enable();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
__attribute__ ((weak))
|
__attribute__ ((weak))
|
||||||
|
@ -1500,7 +1506,9 @@ void backlight_init_ports(void)
|
||||||
|
|
||||||
backlight_init();
|
backlight_init();
|
||||||
#ifdef BACKLIGHT_BREATHING
|
#ifdef BACKLIGHT_BREATHING
|
||||||
breathing_enable();
|
if (is_backlight_breathing()) {
|
||||||
|
breathing_enable();
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -91,8 +91,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
/* define if matrix has ghost (lacks anti-ghosting diodes) */
|
/* define if matrix has ghost (lacks anti-ghosting diodes) */
|
||||||
//#define MATRIX_HAS_GHOST
|
//#define MATRIX_HAS_GHOST
|
||||||
|
|
||||||
/* number of backlight levels */
|
|
||||||
|
|
||||||
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||||
#define LOCKING_SUPPORT_ENABLE
|
#define LOCKING_SUPPORT_ENABLE
|
||||||
/* Locking resynchronize hack */
|
/* Locking resynchronize hack */
|
||||||
|
|
|
@ -70,7 +70,7 @@ COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
NKRO_ENABLE = no # USB Nkey Rollover
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||||
MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
|
MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
|
||||||
UNICODE_ENABLE = no # Unicode
|
UNICODE_ENABLE = no # Unicode
|
||||||
|
|
|
@ -100,7 +100,7 @@ void backlight_enable(void)
|
||||||
backlight_set(backlight_config.level);
|
backlight_set(backlight_config.level);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** /brief Disable backlight
|
/** \brief Disable backlight
|
||||||
*
|
*
|
||||||
* FIXME: needs doc
|
* FIXME: needs doc
|
||||||
*/
|
*/
|
||||||
|
@ -162,3 +162,56 @@ uint8_t get_backlight_level(void)
|
||||||
{
|
{
|
||||||
return backlight_config.level;
|
return backlight_config.level;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef BACKLIGHT_BREATHING
|
||||||
|
/** \brief Backlight breathing toggle
|
||||||
|
*
|
||||||
|
* FIXME: needs doc
|
||||||
|
*/
|
||||||
|
void backlight_toggle_breathing(void)
|
||||||
|
{
|
||||||
|
bool breathing = backlight_config.breathing;
|
||||||
|
dprintf("backlight breathing toggle: %u\n", breathing);
|
||||||
|
if (breathing)
|
||||||
|
backlight_disable_breathing();
|
||||||
|
else
|
||||||
|
backlight_enable_breathing();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** \brief Enable backlight breathing
|
||||||
|
*
|
||||||
|
* FIXME: needs doc
|
||||||
|
*/
|
||||||
|
void backlight_enable_breathing(void)
|
||||||
|
{
|
||||||
|
if (backlight_config.breathing) return; // do nothing if breathing is already on
|
||||||
|
|
||||||
|
backlight_config.breathing = true;
|
||||||
|
eeconfig_update_backlight(backlight_config.raw);
|
||||||
|
dprintf("backlight breathing enable\n");
|
||||||
|
breathing_enable();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** \brief Disable backlight breathing
|
||||||
|
*
|
||||||
|
* FIXME: needs doc
|
||||||
|
*/
|
||||||
|
void backlight_disable_breathing(void)
|
||||||
|
{
|
||||||
|
if (!backlight_config.breathing) return; // do nothing if breathing is already off
|
||||||
|
|
||||||
|
backlight_config.breathing = false;
|
||||||
|
eeconfig_update_backlight(backlight_config.raw);
|
||||||
|
dprintf("backlight breathing disable\n");
|
||||||
|
breathing_disable();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** \brief Get the backlight breathing status
|
||||||
|
*
|
||||||
|
* FIXME: needs doc
|
||||||
|
*/
|
||||||
|
bool is_backlight_breathing(void)
|
||||||
|
{
|
||||||
|
return backlight_config.breathing;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
|
@ -20,11 +20,18 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
||||||
|
#ifndef BACKLIGHT_LEVELS
|
||||||
|
#define BACKLIGHT_LEVELS 3
|
||||||
|
#elif BACKLIGHT_LEVELS > 15
|
||||||
|
#error "Maximum value of BACKLIGHT_LEVELS is 15"
|
||||||
|
#endif
|
||||||
|
|
||||||
typedef union {
|
typedef union {
|
||||||
uint8_t raw;
|
uint8_t raw;
|
||||||
struct {
|
struct {
|
||||||
bool enable :1;
|
bool enable :1;
|
||||||
uint8_t level :7;
|
bool breathing :1;
|
||||||
|
uint8_t level :4;
|
||||||
};
|
};
|
||||||
} backlight_config_t;
|
} backlight_config_t;
|
||||||
|
|
||||||
|
@ -40,3 +47,11 @@ void backlight_set(uint8_t level);
|
||||||
void backlight_level(uint8_t level);
|
void backlight_level(uint8_t level);
|
||||||
uint8_t get_backlight_level(void);
|
uint8_t get_backlight_level(void);
|
||||||
|
|
||||||
|
#ifdef BACKLIGHT_BREATHING
|
||||||
|
void backlight_toggle_breathing(void);
|
||||||
|
void backlight_enable_breathing(void);
|
||||||
|
void backlight_disable_breathing(void);
|
||||||
|
bool is_backlight_breathing(void);
|
||||||
|
void breathing_enable(void);
|
||||||
|
void breathing_disable(void);
|
||||||
|
#endif
|
||||||
|
|
Loading…
Reference in a new issue