zephyr/drivers/wifi/eswifi/eswifi_shell.c

62 lines
1.1 KiB
C

/**
* Copyright (c) 2020 Linaro
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <kernel.h>
#include <shell/shell.h>
#include "eswifi.h"
static struct eswifi_dev *eswifi;
void eswifi_shell_register(struct eswifi_dev *dev)
{
/* only one instance supported */
if (eswifi) {
return;
}
eswifi = dev;
}
static int eswifi_shell_atcmd(const struct shell *shell, size_t argc,
char **argv)
{
int i;
if (eswifi == NULL) {
shell_print(shell, "no eswifi device registered");
return -ENOEXEC;
}
if (argc < 2) {
shell_help(shell);
return -ENOEXEC;
}
eswifi_lock(eswifi);
memset(eswifi->buf, 0, sizeof(eswifi->buf));
for (i = 1; i < argc; i++) {
strcat(eswifi->buf, argv[i]);
}
strcat(eswifi->buf, "\r");
shell_print(shell, "> %s", eswifi->buf);
eswifi_at_cmd(eswifi, eswifi->buf);
shell_print(shell, "< %s", eswifi->buf);
eswifi_unlock(eswifi);
return 0;
}
SHELL_STATIC_SUBCMD_SET_CREATE(eswifi_shell,
SHELL_CMD(atcmd, NULL, "<atcmd>", eswifi_shell_atcmd),
SHELL_SUBCMD_SET_END /* Array terminated. */
);
SHELL_CMD_REGISTER(eswifi, &eswifi_shell, "esWiFi debug shell", NULL);