Add led value and color commands

This commit is contained in:
Jeremy Soller
2021-01-05 13:16:57 -07:00
committed by Jeremy Soller
parent 5bab59a526
commit 304e7534c9
3 changed files with 122 additions and 0 deletions

View File

@ -19,6 +19,7 @@
#ifndef __SCRATCH__
#include <board/scratch.h>
#include <board/kbled.h>
#include <board/keymap.h>
#endif
#include <board/smfi.h>
@ -183,6 +184,54 @@ static enum Result cmd_keymap_set(void) {
return RES_ERR;
}
}
static enum Result cmd_led_get_value(void) {
uint8_t index = smfi_cmd[SMFI_CMD_DATA];
if (index == CMD_LED_INDEX_ALL) {
smfi_cmd[SMFI_CMD_DATA + 1] = kbled_get();
smfi_cmd[SMFI_CMD_DATA + 2] = kbled_max();
return RES_OK;
} else {
return RES_ERR;
}
}
static enum Result cmd_led_set_value(void) {
uint8_t index = smfi_cmd[SMFI_CMD_DATA];
if (index == CMD_LED_INDEX_ALL) {
kbled_set(smfi_cmd[SMFI_CMD_DATA + 1]);
return RES_OK;
} else {
return RES_ERR;
}
}
static enum Result cmd_led_get_color(void) {
uint8_t index = smfi_cmd[SMFI_CMD_DATA];
if (index == CMD_LED_INDEX_ALL) {
uint32_t color = kbled_get_color();
smfi_cmd[SMFI_CMD_DATA + 1] = (uint8_t)(color >> 16);
smfi_cmd[SMFI_CMD_DATA + 2] = (uint8_t)(color >> 8);
smfi_cmd[SMFI_CMD_DATA + 3] = (uint8_t)(color >> 0);
return RES_OK;
} else {
return RES_ERR;
}
}
static enum Result cmd_led_set_color(void) {
uint8_t index = smfi_cmd[SMFI_CMD_DATA];
if (index == CMD_LED_INDEX_ALL) {
kbled_set_color(
(((uint32_t)smfi_cmd[SMFI_CMD_DATA + 1]) << 16) |
(((uint32_t)smfi_cmd[SMFI_CMD_DATA + 2]) << 8) |
(((uint32_t)smfi_cmd[SMFI_CMD_DATA + 3]) << 0)
);
return RES_OK;
} else {
return RES_ERR;
}
}
#endif // !defined(__SCRATCH__)
#if defined(__SCRATCH__)
@ -296,6 +345,18 @@ void smfi_event(void) {
case CMD_KEYMAP_SET:
smfi_cmd[SMFI_CMD_RES] = cmd_keymap_set();
break;
case CMD_LED_GET_VALUE:
smfi_cmd[SMFI_CMD_RES] = cmd_led_get_value();
break;
case CMD_LED_SET_VALUE:
smfi_cmd[SMFI_CMD_RES] = cmd_led_set_value();
break;
case CMD_LED_GET_COLOR:
smfi_cmd[SMFI_CMD_RES] = cmd_led_get_color();
break;
case CMD_LED_SET_COLOR:
smfi_cmd[SMFI_CMD_RES] = cmd_led_set_color();
break;
#endif // !defined(__SCRATCH__)
case CMD_SPI:
smfi_cmd[SMFI_CMD_RES] = cmd_spi();