blob: 23cbddbb2526c274432d3b63713b8a8a12d5098c [file] [log] [blame]
/*
* Copyright (c) 2017 Intel Corporation
*
* SPDX-License-Identifier: Apache-2.0
*/
#if 1
#define SYS_LOG_DOMAIN "rpl-br/shell"
#define NET_SYS_LOG_LEVEL SYS_LOG_LEVEL_DEBUG
#define NET_LOG_ENABLED 1
#endif
#include <zephyr.h>
#include <shell/shell.h>
#include <stdio.h>
#include "../../../subsys/net/ip/rpl.h"
#include "config.h"
#define BR_SHELL_MODULE "br"
int br_repair(int argc, char *argv[])
{
ARG_UNUSED(argc);
ARG_UNUSED(argv);
NET_INFO("Starting global repair...");
net_rpl_repair_root(CONFIG_NET_RPL_DEFAULT_INSTANCE);
return 0;
}
int coap_send(int argc, char *argv[])
{
struct in6_addr peer_addr;
enum coap_request_type type;
int r;
if (argc != 3 || !argv[1] || !argv[2]) {
NET_INFO("Invalid arguments");
return -EINVAL;
}
r = net_addr_pton(AF_INET6, argv[2], &peer_addr);
if (r < 0) {
return -EINVAL;
}
if (strcmp(argv[1], "toggle") == 0) {
type = COAP_REQ_TOGGLE_LED;
} else if (strcmp(argv[1], "rpl_obs") == 0) {
type = COAP_REQ_RPL_OBS;
} else {
NET_INFO("Invalid arguments");
return -EINVAL;
}
coap_send_request(&peer_addr, type, NULL, NULL);
return 0;
}
static struct shell_cmd br_commands[] = {
/* Keep the commands in alphabetical order */
{ "coap", coap_send, "\n\tSend CoAP commands to Node\n"
"toggle <host>\n\tToggle the LED on Node\n"
"rpl_obs <host>\n\tSet RPL observer on Node\n"
},
{ "repair", br_repair,
"\n\tGlobal repair RPL network" },
{ NULL, NULL, NULL }
};
SHELL_REGISTER(BR_SHELL_MODULE, br_commands);