Skip to content

Commit

Permalink
shell: Return-based error-handling for shell handlers
Browse files Browse the repository at this point in the history
- Included the missing parts.
- Squashed with @authmillenon's commit
  • Loading branch information
kushalsingh007 authored and OlegHahm committed Mar 31, 2015
1 parent 12df7c5 commit 9b4022a
Show file tree
Hide file tree
Showing 33 changed files with 488 additions and 289 deletions.
50 changes: 34 additions & 16 deletions examples/ccn-lite-client/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -60,25 +60,27 @@ unsigned char big_buf[3 * 1024];
char small_buf[PAYLOAD_SIZE];

#if RIOT_CCN_APPSERVER
static void riot_ccn_appserver(int argc, char **argv)
static int riot_ccn_appserver(int argc, char **argv)
{
(void) argc; /* the function takes no arguments */
(void) argv;

if (_appserver_pid != KERNEL_PID_UNDEF) {
/* already running */
return;
return 1;
}

_appserver_pid = thread_create(
appserver_stack, sizeof(appserver_stack),
PRIORITY_MAIN - 1, CREATE_STACKTEST,
ccnl_riot_appserver_start, (void *) &_relay_pid, "appserver");
DEBUG("ccn-lite appserver on thread_id %" PRIkernel_pid "...\n", _appserver_pid);

return 0;
}
#endif

static void riot_ccn_express_interest(int argc, char **argv)
static int riot_ccn_express_interest(int argc, char **argv)
{
if (argc < 2) {
strncpy(small_buf, DEFAULT_INTEREST, sizeof(small_buf));
Expand All @@ -93,21 +95,23 @@ static void riot_ccn_express_interest(int argc, char **argv)

if (content_len == 0) {
puts("riot_get returned 0 bytes...aborting!");
return;
return 1;
}

puts("####################################################");
big_buf[content_len] = '\0';
printf("data='%s'\n", big_buf);
puts("####################################################");
puts("done");

return 0;
}

static void riot_ccn_register_prefix(int argc, char **argv)
static int riot_ccn_register_prefix(int argc, char **argv)
{
if (argc < 4) {
puts("enter: prefix </path/to/abc> <type> <faceid>");
return;
return 1;
}

strncpy(small_buf, argv[1], 100);
Expand All @@ -121,18 +125,20 @@ static void riot_ccn_register_prefix(int argc, char **argv)
DEBUG("shell received: '%s'\n", big_buf);
DEBUG("received %d bytes.\n", content_len);
puts("done");

return 0;
}

static void riot_ccn_relay_config(int argc, char **argv)
static int riot_ccn_relay_config(int argc, char **argv)
{
if (_relay_pid == KERNEL_PID_UNDEF) {
puts("ccnl stack not running");
return;
return 1;
}

if (argc < 2) {
printf("%s: <max_cache_entries>\n", argv[0]);
return;
return 1;
}

msg_t m;
Expand Down Expand Up @@ -170,12 +176,12 @@ static void riot_ccn_transceiver_start(kernel_pid_t _relay_pid)
}
}

static void riot_ccn_relay_start(void)
static int riot_ccn_relay_start(void)
{
if (_relay_pid != KERNEL_PID_UNDEF) {
DEBUG("ccn-lite relay on thread_id %d...please stop it first!\n", _relay_pid);
/* already running */
return;
return 1;
}

_relay_pid = thread_create(
Expand All @@ -185,9 +191,11 @@ static void riot_ccn_relay_start(void)
DEBUG("ccn-lite relay on thread_id %" PRIkernel_pid "...\n", _relay_pid);

riot_ccn_transceiver_start(_relay_pid);

return 0;
}

static void riot_ccn_relay_stop(int argc, char **argv)
static int riot_ccn_relay_stop(int argc, char **argv)
{
(void) argc; /* the function takes no arguments */
(void) argv;
Expand All @@ -199,10 +207,12 @@ static void riot_ccn_relay_stop(int argc, char **argv)

/* mark relay as not running */
_relay_pid = 0;

return 0;
}

#if RIOT_CCN_TESTS
static void riot_ccn_pit_test(int argc, char **argv)
static int riot_ccn_pit_test(int argc, char **argv)
{
(void) argc; /* the function takes no arguments */
(void) argv;
Expand Down Expand Up @@ -249,9 +259,11 @@ static void riot_ccn_pit_test(int argc, char **argv)
}

printf("done: tried to send %d interests\n", segment);

return 0;
}

static void riot_ccn_fib_test(int argc, char **argv)
static int riot_ccn_fib_test(int argc, char **argv)
{
(void) argc; /* the function takes no arguments */
(void) argv;
Expand All @@ -278,10 +290,12 @@ static void riot_ccn_fib_test(int argc, char **argv)

DEBUG("%d: '%s'\n", i, big_buf);
printf("done: %d\n", i - 1);

return 0;
}
#endif

static void riot_ccn_populate(int argc, char **argv)
static int riot_ccn_populate(int argc, char **argv)
{
(void) argc; /* the function takes no arguments */
(void) argv;
Expand All @@ -290,9 +304,11 @@ static void riot_ccn_populate(int argc, char **argv)
m.content.value = 0;
m.type = CCNL_RIOT_POPULATE;
msg_send(&m, _relay_pid);

return 0;
}

static void riot_ccn_stat(int argc, char **argv)
static int riot_ccn_stat(int argc, char **argv)
{
(void) argc; /* the function takes no arguments */
(void) argv;
Expand All @@ -301,6 +317,8 @@ static void riot_ccn_stat(int argc, char **argv)
m.content.value = 0;
m.type = CCNL_RIOT_PRINT_STAT;
msg_send(&m, _relay_pid);

return 0;
}

static const shell_command_t sc[] = {
Expand Down
14 changes: 9 additions & 5 deletions examples/rpl_udp/helper.c
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ extern uint8_t ipv6_ext_hdr_len;

static msg_t msg_q[RCV_BUFFER_SIZE];

void rpl_udp_set_id(int argc, char **argv)
int rpl_udp_set_id(int argc, char **argv)
{
if (argc != 2) {
printf("Usage: %s address\n", argv[0]);
Expand All @@ -49,12 +49,14 @@ void rpl_udp_set_id(int argc, char **argv)
printf("\taddress must be an 16 bit integer\n");
#endif
printf("\n\t(Current address is %u)\n", id);
return;
return 1;
}

id = atoi(argv[1]);

printf("Set node ID to %u\n", id);

return 0;
}

void *rpl_udp_monitor(void *arg)
Expand Down Expand Up @@ -123,18 +125,18 @@ void *rpl_udp_monitor(void *arg)

static transceiver_command_t tcmd;

void rpl_udp_ignore(int argc, char **argv)
int rpl_udp_ignore(int argc, char **argv)
{
uint16_t a;

if (argc < 2) {
printf("Usage: %s <addr>\n", argv[0]);
return;
return 1;
}

if (transceiver_pid == KERNEL_PID_UNDEF) {
puts("Transceiver not runnning.");
return;
return 1;
}

/* cppcheck: a is actually read via tcmd.data */
Expand All @@ -151,4 +153,6 @@ void rpl_udp_ignore(int argc, char **argv)
printf("sending to transceiver (%" PRIkernel_pid "): %u\n", transceiver_pid,
(*(uint8_t *)tcmd.data));
msg_send(&mesg, transceiver_pid);

return 0;
}
18 changes: 11 additions & 7 deletions examples/rpl_udp/rpl.c
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ radio_address_t id;

static uint8_t is_root = 0;

void rpl_udp_init(int argc, char **argv)
int rpl_udp_init(int argc, char **argv)
{
transceiver_command_t tcmd;
msg_t m;
Expand All @@ -55,7 +55,7 @@ void rpl_udp_init(int argc, char **argv)
printf("\tr\tinitialize as root\n");
printf("\tn\tinitialize as node router\n");
printf("\th\tinitialize as non-routing node (host-mode)\n");
return;
return 1;
}

char command = argv[1][0];
Expand All @@ -67,7 +67,7 @@ void rpl_udp_init(int argc, char **argv)
#if (defined(MODULE_CC110X) || defined(MODULE_CC110X_LEGACY) || defined(MODULE_CC110X_LEGACY_CSMA))
if (!id || (id > 255)) {
printf("ERROR: address not a valid 8 bit integer\n");
return;
return 1;
}
#endif

Expand All @@ -91,7 +91,7 @@ void rpl_udp_init(int argc, char **argv)
msg_send_receive(&m, &m, transceiver_pid);
if( chan == UNASSIGNED_CHANNEL ) {
puts("ERROR: channel NOT set! Aborting initialization.");
return;
return 1;
}

printf("Channel set to %" PRIi32 "\n", chan);
Expand Down Expand Up @@ -156,7 +156,7 @@ void rpl_udp_init(int argc, char **argv)
}
else {
printf("ERROR: Unknown command '%c'\n", command);
return;
return 1;
}

if (command != 'h') {
Expand All @@ -165,9 +165,11 @@ void rpl_udp_init(int argc, char **argv)

puts("Transport layer initialized");
/* start transceiver watchdog */

return 0;
}

void rpl_udp_dodag(int argc, char **argv)
int rpl_udp_dodag(int argc, char **argv)
{
(void) argc;
(void) argv;
Expand All @@ -178,7 +180,7 @@ void rpl_udp_dodag(int argc, char **argv)
if (mydodag == NULL) {
printf("Not part of a dodag\n");
printf("---------------------------\n");
return;
return 1;
}

printf("Part of Dodag:\n");
Expand All @@ -193,4 +195,6 @@ void rpl_udp_dodag(int argc, char **argv)
}

printf("---------------------------\n");

return 0;
}
12 changes: 6 additions & 6 deletions examples/rpl_udp/rpl_udp.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ extern "C" {
* @param[in] argc Argument count
* @param[in] argv Arguments
*/
void rpl_udp_init(int argc, char **argv);
int rpl_udp_init(int argc, char **argv);

/**
* @brief Shell command to set node's ID
Expand All @@ -42,7 +42,7 @@ void rpl_udp_init(int argc, char **argv);
* @param[in] argc Argument count
* @param[in] argv Arguments
*/
void rpl_udp_set_id(int argc, char **argv);
int rpl_udp_set_id(int argc, char **argv);

/**
* @brief Shows the dodag
Expand All @@ -52,7 +52,7 @@ void rpl_udp_set_id(int argc, char **argv);
* @param[in] argc Argument count
* @param[in] argv Arguments
*/
void rpl_udp_dodag(int argc, char **argv);
int rpl_udp_dodag(int argc, char **argv);

/**
* @brief Command handler to start a UDP server
Expand All @@ -62,7 +62,7 @@ void rpl_udp_dodag(int argc, char **argv);
* @param[in] argc Argument count
* @param[in] argv Arguments
*/
void udp_server(int argc, char **argv);
int udp_server(int argc, char **argv);

/**
* @brief Sends a UDP datagram
Expand All @@ -74,7 +74,7 @@ void udp_server(int argc, char **argv);
* @param[in] argc Argument count
* @param[in] argv Arguments
*/
void udp_send(int argc, char **argv);
int udp_send(int argc, char **argv);

/**
* @brief Ignore a certain node
Expand All @@ -86,7 +86,7 @@ void udp_send(int argc, char **argv);
* @param[in] argc Argument count
* @param[in] argv Arguments
*/
void rpl_udp_ignore(int argc, char **argv);
int rpl_udp_ignore(int argc, char **argv);

/**
* @brief monitoring thread start function
Expand Down
Loading

0 comments on commit 9b4022a

Please sign in to comment.