Преглед изворни кода

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>
Takeshi ISHII пре 5 година
родитељ
комит
dbbab40981

+ 0 - 12
quantum/rgblight.c

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

+ 41 - 3
quantum/rgblight.h

@@ -16,8 +16,6 @@
 #ifndef RGBLIGHT_H
 #define RGBLIGHT_H
 
-#include "rgblight_reconfig.h"
-
 /***** rgblight_mode(mode)/rgblight_mode_noeeprom(mode) ****
 
  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_DYNAMIC(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)
 void rgblight_show_solid_color(uint8_t r, uint8_t g, uint8_t b);
 
+#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
 
 #    ifdef RGBLIGHT_SPLIT
 #        define RGBLIGHT_STATUS_CHANGE_MODE (1 << 0)

+ 0 - 29
quantum/rgblight_reconfig.h

@@ -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

+ 0 - 22
tmk_core/common/avr/suspend.c

@@ -9,7 +9,6 @@
 #include "timer.h"
 #include "led.h"
 #include "host.h"
-#include "rgblight_reconfig.h"
 
 #ifdef PROTOCOL_LUFA
 #    include "lufa.h"
@@ -30,23 +29,6 @@ static bool              rgblight_enabled;
 static bool              is_suspended;
 #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
  *
  * FIXME: needs doc
@@ -122,9 +104,7 @@ static void power_down(uint8_t wdto) {
     // stop_all_notes();
 #    endif /* AUDIO_ENABLE */
 #    if defined(RGBLIGHT_SLEEP) && defined(RGBLIGHT_ENABLE)
-#        ifdef RGBLIGHT_ANIMATIONS
     rgblight_timer_disable();
-#        endif
     if (!is_suspended) {
         is_suspended     = true;
         rgblight_enabled = rgblight_config.enable;
@@ -204,9 +184,7 @@ void suspend_wakeup_init(void) {
 #    endif
         rgblight_enable_noeeprom();
     }
-#    ifdef RGBLIGHT_ANIMATIONS
     rgblight_timer_enable();
-#    endif
 #endif
     suspend_wakeup_init_kb();
 }

+ 17 - 16
tmk_core/common/avr/suspend_avr.h

@@ -7,21 +7,22 @@
 #include <avr/wdt.h>
 #include <avr/interrupt.h>
 
-#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")
+// clang-format off
+#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"  \
+)
+// clang-format on
 
 #endif

+ 0 - 4
tmk_core/common/chibios/suspend.c

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

+ 1 - 1
tmk_core/common/keyboard.c

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

+ 1 - 2
tmk_core/protocol/chibios/main.c

@@ -32,9 +32,8 @@
 #include "sendchar.h"
 #include "debug.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"
 #endif
 #ifdef SLEEP_LED_ENABLE

+ 1 - 2
tmk_core/protocol/lufa/lufa.c

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

+ 1 - 2
tmk_core/protocol/vusb/main.c

@@ -20,9 +20,8 @@
 #include "timer.h"
 #include "uart.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"
 #endif