49 lines
1.2 KiB
C
49 lines
1.2 KiB
C
#include <stdlib.h>
|
|
#include "shelly.h"
|
|
|
|
|
|
|
|
static void shelly_cmd_echo(char* argv[], int argc) {
|
|
errval_t err;
|
|
SHELLY_DEBUG("[shelly_cmd_echo] argc=%d\n", argc);
|
|
|
|
for (int i = 0; argv[1][i] != '\0'; ++i) {
|
|
err = lpuart_putchar(global_state->uart_s, argv[1][i]);
|
|
if (err_is_fail(err)) USER_PANIC_ERR(err, "while trying to put character");
|
|
}
|
|
err = lpuart_putchar(global_state->uart_s, '\0');
|
|
if (err_is_fail(err)) USER_PANIC_ERR(err, "while trying to put character");
|
|
}
|
|
|
|
static void handle_shelly_cmd(char* str, size_t len) {
|
|
SHELLY_DEBUG("[handle_shelly_cmd] len=%d\n", len);
|
|
|
|
if (len <= 1) {
|
|
return;
|
|
}
|
|
|
|
int argc = 1;
|
|
for (int i = 0; i < len; ++i) {
|
|
if (str[i] == ' ') ++argc;
|
|
}
|
|
char * argv[argc];
|
|
|
|
const char delim[2] = " ";
|
|
|
|
for (int i = 0; i < argc; ++i) {
|
|
if (i == 0) {
|
|
argv[i] = strtok(str, delim);
|
|
} else {
|
|
argv[i] = strtok(NULL, delim);
|
|
}
|
|
SHELLY_DEBUG("[handle_shelly_cmd] arg[%d]=%s\n", i, argv[i]);
|
|
}
|
|
|
|
if (strcmp(argv[0], "echo") == 0) {
|
|
shelly_cmd_echo(argv, argc);
|
|
} else {
|
|
SHELLY_DEBUG("unknown command %s\n", argv[0]);
|
|
}
|
|
}
|
|
|