1
0
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:
Kevin Pearson 2017-05-26 10:11:16 -04:00
parent 9944719656
commit 07aa241058
2 changed files with 37 additions and 40 deletions

View File

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

View File

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