mirror of
https://github.com/MatMoul/g810-led.git
synced 2024-12-23 01:06:11 +00:00
Move handling of NativeEffectPart::all to library
Raw use of 0xFF as the effectpart byte is device-undefined and was implemented as a wrapper around mutliplle native effects calls as well as handling the indicators. Logic was previously implemented in the application, allowing for library use in this particular case to have undefined behavior. Signed-off-by: Kevin Pearson <pearson.kevin.m@gmail.com>
This commit is contained in:
parent
9944719656
commit
07aa241058
@ -693,6 +693,33 @@ bool LedKeyboard::setStartupMode(StartupMode startupMode) {
|
||||
bool LedKeyboard::setNativeEffect(NativeEffect effect, NativeEffectPart part, uint8_t speed, Color color) {
|
||||
uint8_t protocolByte = 0;
|
||||
|
||||
// NativeEffectPart::all is not in the device protocol, but an alias for both keys and logo, plus indicators
|
||||
if (part == LedKeyboard::NativeEffectPart::all) {
|
||||
switch (effect) {
|
||||
case LedKeyboard::NativeEffect::color:
|
||||
if (! setGroupKeys(LedKeyboard::KeyGroup::indicators, color)) return false;
|
||||
if (! commit()) return false;
|
||||
break;
|
||||
case LedKeyboard::NativeEffect::breathing:
|
||||
if (! setGroupKeys(LedKeyboard::KeyGroup::indicators, color)) return false;;
|
||||
if (! commit()) return false;;
|
||||
break;
|
||||
case LedKeyboard::NativeEffect::cycle:
|
||||
case LedKeyboard::NativeEffect::hwave:
|
||||
case LedKeyboard::NativeEffect::vwave:
|
||||
case LedKeyboard::NativeEffect::cwave:
|
||||
if (! setGroupKeys(
|
||||
LedKeyboard::KeyGroup::indicators,
|
||||
LedKeyboard::Color({0xff, 0xff, 0xff}))
|
||||
) return false;
|
||||
if (! commit()) return false;
|
||||
break;
|
||||
}
|
||||
return (
|
||||
setNativeEffect(effect, LedKeyboard::NativeEffectPart::keys, speed, color) &&
|
||||
setNativeEffect(effect, LedKeyboard::NativeEffectPart::logo, speed, color));
|
||||
}
|
||||
|
||||
switch (currentDevice.model) {
|
||||
case KeyboardModel::g213:
|
||||
protocolByte = 0x0c;
|
||||
|
34
src/main.cpp
34
src/main.cpp
@ -130,39 +130,9 @@ int setFX(LedKeyboard &kbd, std::string arg2, std::string arg3, std::string arg4
|
||||
|
||||
if (! kbd.open()) return 1;
|
||||
|
||||
int retval = 0;
|
||||
if (! kbd.setNativeEffect(effect, effectPart, speed, color)) return 1;
|
||||
|
||||
switch (effectPart) {
|
||||
case LedKeyboard::NativeEffectPart::all:
|
||||
switch (effect) {
|
||||
case LedKeyboard::NativeEffect::color:
|
||||
if (! kbd.setGroupKeys(LedKeyboard::KeyGroup::indicators, color)) retval = 1;
|
||||
if (! kbd.commit()) retval = 1;
|
||||
break;
|
||||
case LedKeyboard::NativeEffect::breathing:
|
||||
if (! kbd.setGroupKeys(LedKeyboard::KeyGroup::indicators, color)) retval = 1;
|
||||
if (! kbd.commit()) retval = 1;
|
||||
break;
|
||||
case LedKeyboard::NativeEffect::cycle:
|
||||
case LedKeyboard::NativeEffect::hwave:
|
||||
case LedKeyboard::NativeEffect::vwave:
|
||||
case LedKeyboard::NativeEffect::cwave:
|
||||
if (! kbd.setGroupKeys(
|
||||
LedKeyboard::KeyGroup::indicators,
|
||||
LedKeyboard::Color({0xff, 0xff, 0xff}))
|
||||
) retval = 1;
|
||||
if (! kbd.commit()) retval = 1;
|
||||
break;
|
||||
}
|
||||
if (! kbd.setNativeEffect(effect, LedKeyboard::NativeEffectPart::keys, speed, color)) retval = 1;
|
||||
if (! kbd.setNativeEffect(effect, LedKeyboard::NativeEffectPart::logo, speed, color)) retval = 1;
|
||||
break;
|
||||
default:
|
||||
if (! kbd.setNativeEffect(effect, effectPart, speed, color)) retval = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
return retval;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user