diff --git a/Controllers/RedragonController/RedragonK556Controller.h b/Controllers/RedragonController/RedragonK556Controller.h index abf99227..b334f5df 100644 --- a/Controllers/RedragonController/RedragonK556Controller.h +++ b/Controllers/RedragonController/RedragonK556Controller.h @@ -19,8 +19,8 @@ enum { - REDRAGON_K556_MODE_RAINBOW_WAVE_SHORT = 0x01, /* "Go with the stream" */ - REDRAGON_K556_MODE_RAINBOW_WAVE_LONG = 0x02, /* "Clouds fly" */ + REDRAGON_K556_MODE_COLOR_WAVE_SHORT = 0x01, /* "Go with the stream" */ + REDRAGON_K556_MODE_COLOR_WAVE_LONG = 0x02, /* "Clouds fly" */ REDRAGON_K556_MODE_COLOR_WHEEL = 0x03, /* "Winding paths" */ REDRAGON_K556_MODE_SPECTRUM_CYCLE = 0x04, /* "The trial of light" */ REDRAGON_K556_MODE_BREATHING = 0x05, /* "Breathing" */ diff --git a/RGBController/RGBController_RedragonK556.cpp b/RGBController/RGBController_RedragonK556.cpp index e94582c5..51d93484 100644 --- a/RGBController/RGBController_RedragonK556.cpp +++ b/RGBController/RGBController_RedragonK556.cpp @@ -24,6 +24,137 @@ RGBController_RedragonK556::RGBController_RedragonK556(RedragonK556Controller* r Custom.color_mode = MODE_COLORS_PER_LED; modes.push_back(Custom); + mode ColorWave; + ColorWave.name = "Color Wave"; + ColorWave.value = REDRAGON_K556_MODE_COLOR_WAVE_LONG; + ColorWave.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR; + ColorWave.colors_min = 1; + ColorWave.colors_max = 1; + ColorWave.color_mode = MODE_COLORS_MODE_SPECIFIC; + ColorWave.colors.resize(1); + modes.push_back(ColorWave); + + mode ColorWheel; + ColorWheel.name = "Color Wheel"; + ColorWheel.value = REDRAGON_K556_MODE_COLOR_WHEEL; + ColorWheel.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR; + ColorWheel.colors_min = 1; + ColorWheel.colors_max = 1; + ColorWheel.color_mode = MODE_COLORS_MODE_SPECIFIC; + ColorWheel.colors.resize(1); + modes.push_back(ColorWheel); + + mode SpectrumCycle; + SpectrumCycle.name = "Spectrum Cycle"; + SpectrumCycle.value = REDRAGON_K556_MODE_SPECTRUM_CYCLE; + SpectrumCycle.flags = 0; + SpectrumCycle.color_mode = MODE_COLORS_NONE; + modes.push_back(SpectrumCycle); + + mode Breathing; + Breathing.name = "Breathing"; + Breathing.value = REDRAGON_K556_MODE_BREATHING; + Breathing.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR; + Breathing.colors_min = 1; + Breathing.colors_max = 1; + Breathing.color_mode = MODE_COLORS_MODE_SPECIFIC; + Breathing.colors.resize(1); + modes.push_back(Breathing); + + mode Hurricane; + Hurricane.name = "Hurricane"; + Hurricane.value = REDRAGON_K556_MODE_HURRICANE; + Hurricane.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR; + Hurricane.colors_min = 1; + Hurricane.colors_max = 1; + Hurricane.color_mode = MODE_COLORS_MODE_SPECIFIC; + Hurricane.colors.resize(1); + modes.push_back(Hurricane); + + mode Accumulate; + Accumulate.name = "Accumulate"; + Accumulate.value = REDRAGON_K556_MODE_ACCUMULATE; + Accumulate.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR; + Accumulate.colors_min = 1; + Accumulate.colors_max = 1; + Accumulate.color_mode = MODE_COLORS_MODE_SPECIFIC; + Accumulate.colors.resize(1); + modes.push_back(Accumulate); + + mode Starlight; + Starlight.name = "Starlight"; + Starlight.value = REDRAGON_K556_MODE_STARLIGHT_FAST; + Starlight.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR; + Starlight.colors_min = 1; + Starlight.colors_max = 1; + Starlight.color_mode = MODE_COLORS_MODE_SPECIFIC; + Starlight.colors.resize(1); + modes.push_back(Starlight); + + mode Visor; + Visor.name = "Visor"; + Visor.value = REDRAGON_K556_MODE_VISOR; + Visor.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR; + Visor.colors_min = 1; + Visor.colors_max = 1; + Visor.color_mode = MODE_COLORS_MODE_SPECIFIC; + Visor.colors.resize(1); + modes.push_back(Visor); + + mode Static; + Static.name = "Static"; + Static.value = REDRAGON_K556_MODE_STATIC; + Static.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR; + Static.colors_min = 1; + Static.colors_max = 1; + Static.color_mode = MODE_COLORS_MODE_SPECIFIC; + Static.colors.resize(1); + modes.push_back(Static); + + mode RainbowCircle; + RainbowCircle.name = "Rainbow Circle"; + RainbowCircle.value = REDRAGON_K556_MODE_RAINBOW_WAVE_CIRCLE; + RainbowCircle.flags = 0; + RainbowCircle.color_mode = MODE_COLORS_NONE; + modes.push_back(RainbowCircle); + + mode Blooming; + Blooming.name = "Blooming"; + Blooming.value = REDRAGON_K556_MODE_BLOOMING; + Blooming.flags = 0; + Blooming.color_mode = MODE_COLORS_NONE; + modes.push_back(Blooming); + + mode Reactive; + Reactive.name = "Reactive"; + Reactive.value = REDRAGON_K556_MODE_REACTIVE; + Reactive.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR; + Reactive.colors_min = 1; + Reactive.colors_max = 1; + Reactive.color_mode = MODE_COLORS_MODE_SPECIFIC; + Reactive.colors.resize(1); + modes.push_back(Reactive); + + mode ReactiveRipple; + ReactiveRipple.name = "Reactive Ripple"; + ReactiveRipple.value = REDRAGON_K556_MODE_REACTIVE_RIPPLE; + ReactiveRipple.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR; + ReactiveRipple.colors_min = 1; + ReactiveRipple.colors_max = 1; + ReactiveRipple.color_mode = MODE_COLORS_MODE_SPECIFIC; + ReactiveRipple.colors.resize(1); + modes.push_back(ReactiveRipple); + + mode ReactiveLine; + ReactiveLine.name = "Reactive Line"; + ReactiveLine.value = REDRAGON_K556_MODE_REACTIVE_LINE; + ReactiveLine.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR; + ReactiveLine.colors_min = 1; + ReactiveLine.colors_max = 1; + ReactiveLine.color_mode = MODE_COLORS_MODE_SPECIFIC; + ReactiveLine.colors.resize(1); + modes.push_back(ReactiveLine); + SetupZones(); } @@ -69,17 +200,12 @@ void RGBController_RedragonK556::UpdateLEDs() color_data[(3 * led_idx) + 1] = RGBGetGValue(colors[led_idx]); color_data[(3 * led_idx) + 2] = RGBGetBValue(colors[led_idx]); } - - redragon->SendKeyboardBegin(); - redragon->SendKeyboardMode(20); redragon->SetKeyboardColors ( color_data, 0x36 * 7 ); - - redragon->SendKeyboardEnd(); } void RGBController_RedragonK556::UpdateZoneLEDs(int /*zone*/) @@ -99,5 +225,5 @@ void RGBController_RedragonK556::SetCustomMode() void RGBController_RedragonK556::UpdateMode() { - UpdateLEDs(); + redragon->SendKeyboardMode(modes[active_mode].value); }