1
0
mirror of https://github.com/MatMoul/g810-led.git synced 2024-12-23 09:16:11 +00:00

Merge pull request #91 from pearsonk/fix-native-all

Move handling of NativeEffectPart::all to library
This commit is contained in:
MatMoul 2017-05-26 17:25:03 +02:00 committed by GitHub
commit 96f524a532
2 changed files with 37 additions and 40 deletions

View File

@ -692,7 +692,34 @@ bool LedKeyboard::setStartupMode(StartupMode startupMode) {
bool LedKeyboard::setNativeEffect(NativeEffect effect, NativeEffectPart part, uint8_t speed, Color color) { bool LedKeyboard::setNativeEffect(NativeEffect effect, NativeEffectPart part, uint8_t speed, Color color) {
uint8_t protocolByte = 0; 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) { switch (currentDevice.model) {
case KeyboardModel::g213: case KeyboardModel::g213:
protocolByte = 0x0c; protocolByte = 0x0c;
@ -710,11 +737,11 @@ bool LedKeyboard::setNativeEffect(NativeEffect effect, NativeEffectPart part, ui
default: default:
return false; return false;
} }
byte_buffer_t data; byte_buffer_t data;
switch (effect) { switch (effect) {
case NativeEffect::color: case NativeEffect::color:
data = { 0x11, 0xff, protocolByte, 0x3c, (uint8_t)part, 0x01, color.red, color.green, color.blue, 0x02 }; data = { 0x11, 0xff, protocolByte, 0x3c, (uint8_t)part, 0x01, color.red, color.green, color.blue, 0x02 };
break; break;

View File

@ -110,7 +110,7 @@ int setFX(LedKeyboard &kbd, std::string arg2, std::string arg3, std::string arg4
LedKeyboard::Color color; LedKeyboard::Color color;
if (! utils::parseNativeEffect(arg2, effect)) return 1; if (! utils::parseNativeEffect(arg2, effect)) return 1;
if (! utils::parseNativeEffectPart(arg3, effectPart)) return 1; if (! utils::parseNativeEffectPart(arg3, effectPart)) return 1;
switch (effect) { switch (effect) {
case LedKeyboard::NativeEffect::color: case LedKeyboard::NativeEffect::color:
if (! utils::parseColor(arg4, color)) return 1; if (! utils::parseColor(arg4, color)) return 1;
@ -127,42 +127,12 @@ int setFX(LedKeyboard &kbd, std::string arg2, std::string arg3, std::string arg4
if (! utils::parseSpeed(arg4, speed)) return 1; if (! utils::parseSpeed(arg4, speed)) return 1;
break; break;
} }
if (! kbd.open()) return 1; if (! kbd.open()) return 1;
int retval = 0; if (! kbd.setNativeEffect(effect, effectPart, speed, color)) return 1;
switch (effectPart) { return 0;
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;
} }