/**
 * 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);
