diff --git a/src/kaleidoscope/plugin/LEDControl.cpp b/src/kaleidoscope/plugin/LEDControl.cpp index 7f80b126..92b3e196 100644 --- a/src/kaleidoscope/plugin/LEDControl.cpp +++ b/src/kaleidoscope/plugin/LEDControl.cpp @@ -30,12 +30,16 @@ static constexpr uint8_t uninitialized_mode_id = 255; uint8_t LEDControl::mode_id = uninitialized_mode_id; uint8_t LEDControl::num_led_modes_ = LEDModeManager::numLEDModes(); LEDMode *LEDControl::cur_led_mode_ = nullptr; -uint8_t LEDControl::syncDelay = 32; -uint16_t LEDControl::syncTimer = 0; bool LEDControl::enabled_ = true; LEDControl::LEDControl(void) { } +uint8_t LEDControl::sync_interval_ = 32; +uint16_t LEDControl::last_sync_time_ = 0; + +#ifndef NDEPRECATED +uint8_t LEDControl::syncDelay = LEDControl::sync_interval_; +#endif void LEDControl::next_mode(void) { mode_id++; @@ -197,9 +201,15 @@ EventHandlerResult LEDControl::afterEachCycle() { if (!enabled_) return EventHandlerResult::OK; - if (Runtime.hasTimeExpired(syncTimer, syncDelay)) { + if (Runtime.hasTimeExpired(last_sync_time_, sync_interval_)) { +#ifndef NDEPRECATED +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" + sync_interval_ = syncDelay; +#pragma GCC diagnostic pop +#endif syncLeds(); - syncTimer += syncDelay; + last_sync_time_ += sync_interval_; update(); } diff --git a/src/kaleidoscope/plugin/LEDControl.h b/src/kaleidoscope/plugin/LEDControl.h index b7e2e2c3..3c5ba9b2 100644 --- a/src/kaleidoscope/plugin/LEDControl.h +++ b/src/kaleidoscope/plugin/LEDControl.h @@ -19,6 +19,14 @@ #include "kaleidoscope/Runtime.h" #include "kaleidoscope/plugin/LEDMode.h" +#ifndef NDEPRECATED + +#define _DEPRECATED_MESSAGE_LEDCONTROL_SYNCDELAY __NL__ \ + "The `LEDControl.syncDelay` variable has been deprecated.\n" __NL__ \ + "Please use the `LEDControl.setInterval()` function instead." + +#endif + #define LED_TOGGLE B00000001 // Synthetic, internal #define Key_LEDEffectNext Key(0, KEY_FLAGS | SYNTHETIC | IS_INTERNAL | LED_TOGGLE) @@ -92,7 +100,20 @@ class LEDControl : public kaleidoscope::Plugin { // static void activate(LEDModeInterface *plugin); +#ifndef NDEPRECATED + DEPRECATED(LEDCONTROL_SYNCDELAY) static uint8_t syncDelay; +#endif + + static void setSyncInterval(uint8_t interval) { + sync_interval_ = interval; +#ifndef NDEPRECATED +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" + syncDelay = interval; +#pragma GCC diagnostic pop +#endif + } EventHandlerResult onSetup(); EventHandlerResult onKeyEvent(KeyEvent &event); @@ -112,8 +133,9 @@ class LEDControl : public kaleidoscope::Plugin { } private: - static uint16_t syncTimer; static uint8_t mode_id; + static uint16_t last_sync_time_; + static uint8_t sync_interval_; static uint8_t num_led_modes_; static LEDMode *cur_led_mode_; static bool enabled_;