Refactor rgblight_reconfig.h (#7773)

* Moved contents of rgblight_reconfig.h to rgblight_post_config.h.

In #3582, rgblight_reconfig.h had to be newly created. Now, the build system of qmk_firmware has a post_cofig feature, so that what was done in rgblight_reconfig.h can now be realized in rgblight_post_config.h.

**This commit does not change the build result.**

Testing script
```shell
  # build on master
  git checkout master
  echo master > /tmp/master_md5.txt

  # RGBLIGHT_ENABLE = no
  make HELIX=verbose helix/rev2:default:clean
  make HELIX=verbose helix/rev2:default
  md5 helix_rev2_default.hex >> /tmp/master_md5.txt

  # RGBLIGHT_ENABLE = yes, with animations
  make HELIX=verbose helix/rev2/back:default:clean
  make HELIX=verbose helix/rev2/back:default
  md5 helix_rev2_back_default.hex >> /tmp/master_md5.txt

  # RGBLIGHT_ENABLE = yes, without animations
  make HELIX=verbose,no_ani helix/rev2/back:default:clean
  make HELIX=verbose,no_ani helix/rev2/back:default
  md5 helix_rev2_back_default.hex >> /tmp/master_md5.txt

  # build on refactor_rgblight_reconfig.h
  git checkout refactor_rgblight_reconfig.h
  echo refactor_rgblight_reconfig.h > /tmp/branch_md5.txt

  # RGBLIGHT_ENABLE = no
  make HELIX=verbose helix/rev2:default:clean
  make HELIX=verbose helix/rev2:default
  md5 helix_rev2_default.hex >> /tmp/branch_md5.txt

  # RGBLIGHT_ENABLE = yes, with animations
  make HELIX=verbose helix/rev2/back:default:clean
  make HELIX=verbose helix/rev2/back:default
  md5 helix_rev2_back_default.hex >> /tmp/branch_md5.txt

  # RGBLIGHT_ENABLE = yes, without animations
  make HELIX=verbose,no_ani helix/rev2/back:default:clean
  make HELIX=verbose,no_ani helix/rev2/back:default
  md5 helix_rev2_back_default.hex >> /tmp/branch_md5.txt

  diff -u /tmp/master_md5.txt /tmp/branch_md5.txt
```

Test result:
```
--- /tmp/master_md5.txt 2020-01-03 15:42:22.000000000 +0900
+++ /tmp/branch_md5.txt 2020-01-03 15:42:42.000000000 +0900
@@ -1,4 +1,4 @@
-master
+refactor_rgblight_reconfig.h
 MD5 (helix_rev2_default.hex) = f360032edd522448366d471d8f4f8181
 MD5 (helix_rev2_back_default.hex) = 0c663acc6cccc44476b3b969ad22a48f
 MD5 (helix_rev2_back_default.hex) = e66b1195ff6d38e6e22c975b8ae42fd3
```

* Expressions that are too long are difficult to read, so wrap them.

* Edit the expression again

* remove `defined(RGBLIGHT_ANIMATIONS)` in `tmk_core/common/*/suspend.c`, `tmk_core/protocol/*/main.c`

move contents of rgblight_reconfig.h to rgblight.h.

The following changes were made to rgblight.h.

```diff
+#ifdef RGBLIGHT_USE_TIMER
 void rgblight_task(void);

 void rgblight_timer_init(void);
 void rgblight_timer_enable(void);
 void rgblight_timer_disable(void);
 void rgblight_timer_toggle(void);
+#else
+#define rgblight_task()
+#define rgblight_timer_init()
+#define rgblight_timer_enable()
+#define rgblight_timer_disable()
+#define rgblight_timer_toggle()
+#endif
```

The following changes were made to tmk_core/common/avr/suspend.c, tmk_core/common/chibios/suspend.c, tmk_core/protocol/chibios/main.c, tmk_core/protocol/lufa/lufa.c, tmk_core/protocol/vusb/main.c.

```diff
-#    ifdef RGBLIGHT_ANIMATIONS
     rgblight_timer_enable();
-#    endif
```
```diff
-#if defined(RGBLIGHT_ANIMATIONS) && defined(RGBLIGHT_ENABLE)
+#if defined(RGBLIGHT_ENABLE)
         rgblight_task();
 #endif
```

* remove 'defined(RGBLIGHT_ANIMATIONS)' in tmk_core/common/keyboard.c

Co-authored-by: Joel Challis <git@zvecr.com>
This commit is contained in:
Takeshi ISHII 2020-03-10 17:46:03 +09:00 committed by GitHub
parent 20a0fa9209
commit dbbab40981
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 62 additions and 93 deletions

View file

@ -211,9 +211,7 @@ void rgblight_init(void) {
eeconfig_debug_rgblight(); // display current eeprom values eeconfig_debug_rgblight(); // display current eeprom values
#ifdef RGBLIGHT_USE_TIMER
rgblight_timer_init(); // setup the timer rgblight_timer_init(); // setup the timer
#endif
if (rgblight_config.enable) { if (rgblight_config.enable) {
rgblight_mode_noeeprom(rgblight_config.mode); rgblight_mode_noeeprom(rgblight_config.mode);
@ -230,9 +228,7 @@ void rgblight_update_dword(uint32_t dword) {
if (rgblight_config.enable) if (rgblight_config.enable)
rgblight_mode_noeeprom(rgblight_config.mode); rgblight_mode_noeeprom(rgblight_config.mode);
else { else {
#ifdef RGBLIGHT_USE_TIMER
rgblight_timer_disable(); rgblight_timer_disable();
#endif
rgblight_set(); rgblight_set();
} }
} }
@ -300,13 +296,9 @@ void rgblight_mode_eeprom_helper(uint8_t mode, bool write_to_eeprom) {
dprintf("rgblight mode [NOEEPROM]: %u\n", rgblight_config.mode); dprintf("rgblight mode [NOEEPROM]: %u\n", rgblight_config.mode);
} }
if (is_static_effect(rgblight_config.mode)) { if (is_static_effect(rgblight_config.mode)) {
#ifdef RGBLIGHT_USE_TIMER
rgblight_timer_disable(); rgblight_timer_disable();
#endif
} else { } else {
#ifdef RGBLIGHT_USE_TIMER
rgblight_timer_enable(); rgblight_timer_enable();
#endif
} }
#ifdef RGBLIGHT_USE_TIMER #ifdef RGBLIGHT_USE_TIMER
animation_status.restart = true; animation_status.restart = true;
@ -354,9 +346,7 @@ void rgblight_disable(void) {
rgblight_config.enable = 0; rgblight_config.enable = 0;
eeconfig_update_rgblight(rgblight_config.raw); eeconfig_update_rgblight(rgblight_config.raw);
dprintf("rgblight disable [EEPROM]: rgblight_config.enable = %u\n", rgblight_config.enable); dprintf("rgblight disable [EEPROM]: rgblight_config.enable = %u\n", rgblight_config.enable);
#ifdef RGBLIGHT_USE_TIMER
rgblight_timer_disable(); rgblight_timer_disable();
#endif
RGBLIGHT_SPLIT_SET_CHANGE_MODE; RGBLIGHT_SPLIT_SET_CHANGE_MODE;
wait_ms(50); wait_ms(50);
rgblight_set(); rgblight_set();
@ -365,9 +355,7 @@ void rgblight_disable(void) {
void rgblight_disable_noeeprom(void) { void rgblight_disable_noeeprom(void) {
rgblight_config.enable = 0; rgblight_config.enable = 0;
dprintf("rgblight disable [NOEEPROM]: rgblight_config.enable = %u\n", rgblight_config.enable); dprintf("rgblight disable [NOEEPROM]: rgblight_config.enable = %u\n", rgblight_config.enable);
#ifdef RGBLIGHT_USE_TIMER
rgblight_timer_disable(); rgblight_timer_disable();
#endif
RGBLIGHT_SPLIT_SET_CHANGE_MODE; RGBLIGHT_SPLIT_SET_CHANGE_MODE;
wait_ms(50); wait_ms(50);
rgblight_set(); rgblight_set();

View file

@ -16,8 +16,6 @@
#ifndef RGBLIGHT_H #ifndef RGBLIGHT_H
#define RGBLIGHT_H #define RGBLIGHT_H
#include "rgblight_reconfig.h"
/***** rgblight_mode(mode)/rgblight_mode_noeeprom(mode) **** /***** rgblight_mode(mode)/rgblight_mode_noeeprom(mode) ****
old mode number (before 0.6.117) to new mode name table old mode number (before 0.6.117) to new mode name table
@ -64,6 +62,39 @@
|-----------------|-----------------------------------| |-----------------|-----------------------------------|
*****/ *****/
#ifdef RGBLIGHT_ANIMATIONS
// for backward compatibility
# define RGBLIGHT_EFFECT_BREATHING
# define RGBLIGHT_EFFECT_RAINBOW_MOOD
# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
# define RGBLIGHT_EFFECT_SNAKE
# define RGBLIGHT_EFFECT_KNIGHT
# define RGBLIGHT_EFFECT_CHRISTMAS
# define RGBLIGHT_EFFECT_STATIC_GRADIENT
# define RGBLIGHT_EFFECT_RGB_TEST
# define RGBLIGHT_EFFECT_ALTERNATING
#endif
#ifdef RGBLIGHT_STATIC_PATTERNS
# define RGBLIGHT_EFFECT_STATIC_GRADIENT
#endif
// clang-format off
// check dynamic animation effects chose ?
#if defined(RGBLIGHT_EFFECT_BREATHING) \
|| defined(RGBLIGHT_EFFECT_RAINBOW_MOOD) \
|| defined(RGBLIGHT_EFFECT_RAINBOW_SWIRL) \
|| defined(RGBLIGHT_EFFECT_SNAKE) \
|| defined(RGBLIGHT_EFFECT_KNIGHT) \
|| defined(RGBLIGHT_EFFECT_CHRISTMAS) \
|| defined(RGBLIGHT_EFFECT_RGB_TEST) \
|| defined(RGBLIGHT_EFFECT_ALTERNATING)
# define RGBLIGHT_USE_TIMER
#endif
// clang-format on
#define _RGBM_SINGLE_STATIC(sym) RGBLIGHT_MODE_##sym, #define _RGBM_SINGLE_STATIC(sym) RGBLIGHT_MODE_##sym,
#define _RGBM_SINGLE_DYNAMIC(sym) RGBLIGHT_MODE_##sym, #define _RGBM_SINGLE_DYNAMIC(sym) RGBLIGHT_MODE_##sym,
#define _RGBM_MULTI_STATIC(sym) RGBLIGHT_MODE_##sym, #define _RGBM_MULTI_STATIC(sym) RGBLIGHT_MODE_##sym,
@ -263,12 +294,19 @@ void rgblight_mode_eeprom_helper(uint8_t mode, bool write_to_eeprom);
# define EZ_RGB(val) rgblight_show_solid_color((val >> 16) & 0xFF, (val >> 8) & 0xFF, val & 0xFF) # define EZ_RGB(val) rgblight_show_solid_color((val >> 16) & 0xFF, (val >> 8) & 0xFF, val & 0xFF)
void rgblight_show_solid_color(uint8_t r, uint8_t g, uint8_t b); void rgblight_show_solid_color(uint8_t r, uint8_t g, uint8_t b);
#ifdef RGBLIGHT_USE_TIMER
void rgblight_task(void); void rgblight_task(void);
void rgblight_timer_init(void); void rgblight_timer_init(void);
void rgblight_timer_enable(void); void rgblight_timer_enable(void);
void rgblight_timer_disable(void); void rgblight_timer_disable(void);
void rgblight_timer_toggle(void); void rgblight_timer_toggle(void);
#else
#define rgblight_task()
#define rgblight_timer_init()
#define rgblight_timer_enable()
#define rgblight_timer_disable()
#define rgblight_timer_toggle()
#endif
# ifdef RGBLIGHT_SPLIT # ifdef RGBLIGHT_SPLIT
# define RGBLIGHT_STATUS_CHANGE_MODE (1 << 0) # define RGBLIGHT_STATUS_CHANGE_MODE (1 << 0)

View file

@ -1,29 +0,0 @@
#ifndef RGBLIGHT_RECONFIG_H
#define RGBLIGHT_RECONFIG_H
#ifdef RGBLIGHT_ANIMATIONS
// for backward compatibility
# define RGBLIGHT_EFFECT_BREATHING
# define RGBLIGHT_EFFECT_RAINBOW_MOOD
# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
# define RGBLIGHT_EFFECT_SNAKE
# define RGBLIGHT_EFFECT_KNIGHT
# define RGBLIGHT_EFFECT_CHRISTMAS
# define RGBLIGHT_EFFECT_STATIC_GRADIENT
# define RGBLIGHT_EFFECT_RGB_TEST
# define RGBLIGHT_EFFECT_ALTERNATING
#endif
#ifdef RGBLIGHT_STATIC_PATTERNS
# define RGBLIGHT_EFFECT_STATIC_GRADIENT
#endif
// check dynamic animation effects chose ?
#if defined(RGBLIGHT_EFFECT_BREATHING) || defined(RGBLIGHT_EFFECT_RAINBOW_MOOD) || defined(RGBLIGHT_EFFECT_RAINBOW_SWIRL) || defined(RGBLIGHT_EFFECT_SNAKE) || defined(RGBLIGHT_EFFECT_KNIGHT) || defined(RGBLIGHT_EFFECT_CHRISTMAS) || defined(RGBLIGHT_EFFECT_RGB_TEST) || defined(RGBLIGHT_EFFECT_ALTERNATING)
# define RGBLIGHT_USE_TIMER
# ifndef RGBLIGHT_ANIMATIONS
# define RGBLIGHT_ANIMATIONS // for backward compatibility
# endif
#endif
#endif // RGBLIGHT_RECONFIG_H

View file

@ -9,7 +9,6 @@
#include "timer.h" #include "timer.h"
#include "led.h" #include "led.h"
#include "host.h" #include "host.h"
#include "rgblight_reconfig.h"
#ifdef PROTOCOL_LUFA #ifdef PROTOCOL_LUFA
# include "lufa.h" # include "lufa.h"
@ -30,23 +29,6 @@ static bool rgblight_enabled;
static bool is_suspended; static bool is_suspended;
#endif #endif
#define wdt_intr_enable(value) \
__asm__ __volatile__("in __tmp_reg__,__SREG__" \
"\n\t" \
"cli" \
"\n\t" \
"wdr" \
"\n\t" \
"sts %0,%1" \
"\n\t" \
"out __SREG__,__tmp_reg__" \
"\n\t" \
"sts %0,%2" \
"\n\t" \
: /* no outputs */ \
: "M"(_SFR_MEM_ADDR(_WD_CONTROL_REG)), "r"(_BV(_WD_CHANGE_BIT) | _BV(WDE)), "r"((uint8_t)((value & 0x08 ? _WD_PS3_MASK : 0x00) | _BV(WDIE) | (value & 0x07))) \
: "r0")
/** \brief Suspend idle /** \brief Suspend idle
* *
* FIXME: needs doc * FIXME: needs doc
@ -122,9 +104,7 @@ static void power_down(uint8_t wdto) {
// stop_all_notes(); // stop_all_notes();
# endif /* AUDIO_ENABLE */ # endif /* AUDIO_ENABLE */
# if defined(RGBLIGHT_SLEEP) && defined(RGBLIGHT_ENABLE) # if defined(RGBLIGHT_SLEEP) && defined(RGBLIGHT_ENABLE)
# ifdef RGBLIGHT_ANIMATIONS
rgblight_timer_disable(); rgblight_timer_disable();
# endif
if (!is_suspended) { if (!is_suspended) {
is_suspended = true; is_suspended = true;
rgblight_enabled = rgblight_config.enable; rgblight_enabled = rgblight_config.enable;
@ -204,9 +184,7 @@ void suspend_wakeup_init(void) {
# endif # endif
rgblight_enable_noeeprom(); rgblight_enable_noeeprom();
} }
# ifdef RGBLIGHT_ANIMATIONS
rgblight_timer_enable(); rgblight_timer_enable();
# endif
#endif #endif
suspend_wakeup_init_kb(); suspend_wakeup_init_kb();
} }

View file

@ -7,21 +7,22 @@
#include <avr/wdt.h> #include <avr/wdt.h>
#include <avr/interrupt.h> #include <avr/interrupt.h>
#define wdt_intr_enable(value) \ // clang-format off
__asm__ __volatile__("in __tmp_reg__,__SREG__" \ #define wdt_intr_enable(value) \
"\n\t" \ __asm__ __volatile__ ( \
"cli" \ "in __tmp_reg__,__SREG__" "\n\t" \
"\n\t" \ "cli" "\n\t" \
"wdr" \ "wdr" "\n\t" \
"\n\t" \ "sts %0,%1" "\n\t" \
"sts %0,%1" \ "out __SREG__,__tmp_reg__" "\n\t" \
"\n\t" \ "sts %0,%2" "\n\t" \
"out __SREG__,__tmp_reg__" \ : /* no outputs */ \
"\n\t" \ : "M" (_SFR_MEM_ADDR(_WD_CONTROL_REG)), \
"sts %0,%2" \ "r" (_BV(_WD_CHANGE_BIT) | _BV(WDE)), \
"\n\t" \ "r" ((uint8_t) ((value & 0x08 ? _WD_PS3_MASK : 0x00) | \
: /* no outputs */ \ _BV(WDIE) | (value & 0x07)) ) \
: "M"(_SFR_MEM_ADDR(_WD_CONTROL_REG)), "r"(_BV(_WD_CHANGE_BIT) | _BV(WDE)), "r"((uint8_t)((value & 0x08 ? _WD_PS3_MASK : 0x00) | _BV(WDIE) | (value & 0x07))) \ : "r0" \
: "r0") )
// clang-format on
#endif #endif

View file

@ -51,9 +51,7 @@ void suspend_power_down(void) {
// shouldn't power down TPM/FTM if we want a breathing LED // shouldn't power down TPM/FTM if we want a breathing LED
// also shouldn't power down USB // also shouldn't power down USB
#if defined(RGBLIGHT_SLEEP) && defined(RGBLIGHT_ENABLE) #if defined(RGBLIGHT_SLEEP) && defined(RGBLIGHT_ENABLE)
# ifdef RGBLIGHT_ANIMATIONS
rgblight_timer_disable(); rgblight_timer_disable();
# endif
if (!is_suspended) { if (!is_suspended) {
is_suspended = true; is_suspended = true;
rgblight_enabled = rgblight_config.enable; rgblight_enabled = rgblight_config.enable;
@ -126,9 +124,7 @@ void suspend_wakeup_init(void) {
if (rgblight_enabled) { if (rgblight_enabled) {
rgblight_enable_noeeprom(); rgblight_enable_noeeprom();
} }
# ifdef RGBLIGHT_ANIMATIONS
rgblight_timer_enable(); rgblight_timer_enable();
# endif
#endif #endif
suspend_wakeup_init_kb(); suspend_wakeup_init_kb();
} }

View file

@ -335,7 +335,7 @@ MATRIX_LOOP_END:
matrix_scan_perf_task(); matrix_scan_perf_task();
#endif #endif
#if defined(RGBLIGHT_ANIMATIONS) && defined(RGBLIGHT_ENABLE) #if defined(RGBLIGHT_ENABLE)
rgblight_task(); rgblight_task();
#endif #endif

View file

@ -32,9 +32,8 @@
#include "sendchar.h" #include "sendchar.h"
#include "debug.h" #include "debug.h"
#include "printf.h" #include "printf.h"
#include "rgblight_reconfig.h"
#if (defined(RGB_MIDI) || defined(RGBLIGHT_ANIMATIONS)) && defined(RGBLIGHT_ENABLE) #if defined(RGBLIGHT_ENABLE)
# include "rgblight.h" # include "rgblight.h"
#endif #endif
#ifdef SLEEP_LED_ENABLE #ifdef SLEEP_LED_ENABLE

View file

@ -54,7 +54,6 @@
#include "quantum.h" #include "quantum.h"
#include <util/atomic.h> #include <util/atomic.h>
#include "outputselect.h" #include "outputselect.h"
#include "rgblight_reconfig.h"
#ifdef NKRO_ENABLE #ifdef NKRO_ENABLE
# include "keycode_config.h" # include "keycode_config.h"
@ -78,7 +77,7 @@ extern keymap_config_t keymap_config;
# include "virtser.h" # include "virtser.h"
#endif #endif
#if (defined(RGB_MIDI) || defined(RGBLIGHT_ANIMATIONS)) && defined(RGBLIGHT_ENABLE) #if defined(RGBLIGHT_ENABLE)
# include "rgblight.h" # include "rgblight.h"
#endif #endif

View file

@ -20,9 +20,8 @@
#include "timer.h" #include "timer.h"
#include "uart.h" #include "uart.h"
#include "debug.h" #include "debug.h"
#include "rgblight_reconfig.h"
#if (defined(RGB_MIDI) || defined(RGBLIGHT_ANIMATIONS)) && defined(RGBLIGHT_ENABLE) #if defined(RGBLIGHT_ENABLE)
# include "rgblight.h" # include "rgblight.h"
#endif #endif