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
@ -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;
|
||||||
|
42
src/main.cpp
42
src/main.cpp
@ -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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user