summaryrefslogtreecommitdiff
path: root/src/cmd.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd.c')
-rw-r--r--src/cmd.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/cmd.c b/src/cmd.c
index 6e03c08..5d4fba6 100644
--- a/src/cmd.c
+++ b/src/cmd.c
@@ -20,7 +20,8 @@ const struct {
uint8_t argc;
} cmd[_CMD_CNT] = {
{0,cmd_err,0},
- {'p',cmd_set_pwm,3}
+ {'p',cmd_set_pwm,3},
+ {'f',cmd_fade_pwm,3}
};
void cmd_init() {
@@ -67,6 +68,9 @@ void cmd_tick(char _c) {
if (cmd_state.state >= _CMD_MAX_ARGC) {
cmd_state.cmd = 0;
cmd_state.argv[0] = _ERR_ARGC;
+
+ /* TODO this fixes reset on keysmashing. why? */
+ return;
}
cmd_state.argv[ (cmd_state.state++) - 1 ] = _c;
@@ -79,6 +83,13 @@ void cmd_set_pwm(uint8_t _argv[]) {
pwm_set_pin(pin, duty);
}
+void cmd_fade_pwm(uint8_t _argv[]) {
+ uint8_t duty = hex_to_byte((char*)&(_argv[1]));
+ uint8_t pin = _argv[0] - 48;
+
+ pwm_fade_pin(pin, duty);
+}
+
void cmd_err( uint8_t _argv[] ) {
switch(_argv[0]) {
case _ERR_ARGC: