Skip to content

Commit b028a6a

Browse files
committed
drivers: led: shell: add blink cmd
Add blink command to led shell module Signed-off-by: Yishai Jaffe <[email protected]>
1 parent f6883c4 commit b028a6a

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

drivers/led/led_shell.c

Lines changed: 37 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,40 @@ 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", dev->name, led);
115+
116+
err = led_blink(dev, led, delay_on, delay_off);
117+
if (err) {
118+
shell_error(sh, "Error: %d", err);
119+
}
120+
121+
return err;
122+
}
123+
88124
static const char *led_color_to_str(uint8_t color)
89125
{
90126
switch (color) {
@@ -350,6 +386,7 @@ SHELL_DYNAMIC_CMD_CREATE(dsub_device_name, device_name_get);
350386
SHELL_STATIC_SUBCMD_SET_CREATE(
351387
sub_led, SHELL_CMD_ARG(off, &dsub_device_name, "<device> <led>", cmd_off, 3, 0),
352388
SHELL_CMD_ARG(on, &dsub_device_name, "<device> <led>", cmd_on, 3, 0),
389+
SHELL_CMD_ARG(blink, &dsub_device_name, "<device> <led> <delay_on> <delay_off>", cmd_blink, 5, 0),
353390
SHELL_CMD_ARG(get_info, &dsub_device_name, "<device> <led>", cmd_get_info, 3, 0),
354391
SHELL_CMD_ARG(set_brightness, &dsub_device_name, "<device> <led> <value [0-100]>",
355392
cmd_set_brightness, 4, 0),

0 commit comments

Comments
 (0)