~ruther/qmk_firmware

dbbab409812ea7c579760e2973399245c21ff843 — Takeshi ISHII 5 years ago 20a0fa9
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>
M quantum/rgblight.c => quantum/rgblight.c +0 -12
@@ 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();

M quantum/rgblight.h => quantum/rgblight.h +41 -3
@@ 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)

D quantum/rgblight_reconfig.h => quantum/rgblight_reconfig.h +0 -29
@@ 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

M tmk_core/common/avr/suspend.c => tmk_core/common/avr/suspend.c +0 -22
@@ 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();
}

M tmk_core/common/avr/suspend_avr.h => tmk_core/common/avr/suspend_avr.h +17 -16
@@ 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

M tmk_core/common/chibios/suspend.c => tmk_core/common/chibios/suspend.c +0 -4
@@ 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();
}

M tmk_core/common/keyboard.c => tmk_core/common/keyboard.c +1 -1
@@ 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


M tmk_core/protocol/chibios/main.c => tmk_core/protocol/chibios/main.c +1 -2
@@ 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

M tmk_core/protocol/lufa/lufa.c => tmk_core/protocol/lufa/lufa.c +1 -2
@@ 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


M tmk_core/protocol/vusb/main.c => tmk_core/protocol/vusb/main.c +1 -2
@@ 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