Skip to content

Commit d9d39e1

Browse files
committed
drivers: led: shell: add blink cmd
Add blink command to led shell module Signed-off-by: Yishai Jaffe <yishai1999@gmail.com>
1 parent f6883c4 commit d9d39e1

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

drivers/led/led_shell.c

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ enum {
1919
arg_idx_dev = 1,
2020
arg_idx_led = 2,
2121
arg_idx_value = 3,
22+
arg_idx_delay_on = 3,
23+
arg_idx_delay_off = 4,
2224
};
2325

2426
static int parse_common_args(const struct shell *sh, char **argv,
@@ -85,6 +87,41 @@ static int cmd_on(const struct shell *sh, size_t argc, char **argv)
8587
return err;
8688
}
8789

90+
static int cmd_blink(const struct shell *sh, size_t argc, char **argv)
91+
{
92+
const struct device *dev;
93+
uint32_t led, delay_on, delay_off;
94+
char *end_ptr;
95+
int err;
96+
97+
err = parse_common_args(sh, argv, &dev, &led);
98+
if (err < 0) {
99+
return err;
100+
}
101+
102+
delay_on = strtoul(argv[arg_idx_delay_on], &end_ptr, 0);
103+
if (*end_ptr != '\0') {
104+
shell_error(sh, "Invalid delay_on parameter %s", argv[arg_idx_delay_on]);
105+
return -EINVAL;
106+
}
107+
108+
delay_off = strtoul(argv[arg_idx_delay_off], &end_ptr, 0);
109+
if (*end_ptr != '\0') {
110+
shell_error(sh, "Invalid delay_off parameter %s", argv[arg_idx_delay_off]);
111+
return -EINVAL;
112+
}
113+
114+
shell_print(sh, "%s: blinking LED %d with %d milliseconds on and %d milliseconds off",
115+
dev->name, led, delay_on, delay_off);
116+
117+
err = led_blink(dev, led, delay_on, delay_off);
118+
if (err) {
119+
shell_error(sh, "Error: %d", err);
120+
}
121+
122+
return err;
123+
}
124+
88125
static const char *led_color_to_str(uint8_t color)
89126
{
90127
switch (color) {
@@ -350,6 +387,8 @@ SHELL_DYNAMIC_CMD_CREATE(dsub_device_name, device_name_get);
350387
SHELL_STATIC_SUBCMD_SET_CREATE(
351388
sub_led, SHELL_CMD_ARG(off, &dsub_device_name, "<device> <led>", cmd_off, 3, 0),
352389
SHELL_CMD_ARG(on, &dsub_device_name, "<device> <led>", cmd_on, 3, 0),
390+
SHELL_CMD_ARG(blink, &dsub_device_name, "<device> <led> <delay_on> <delay_off>", cmd_blink,
391+
5, 0),
353392
SHELL_CMD_ARG(get_info, &dsub_device_name, "<device> <led>", cmd_get_info, 3, 0),
354393
SHELL_CMD_ARG(set_brightness, &dsub_device_name, "<device> <led> <value [0-100]>",
355394
cmd_set_brightness, 4, 0),

0 commit comments

Comments
 (0)