diff options
author | Jakob Odersky <jodersky@gmail.com> | 2014-01-26 16:41:50 +0100 |
---|---|---|
committer | Jakob Odersky <jodersky@gmail.com> | 2014-01-26 16:41:50 +0100 |
commit | c4da3559760351467f421a234d4240ef6670f396 (patch) | |
tree | d19f2fbb3891744f9741d044a65cf220221bc4a8 /shell.c | |
parent | 7dd00b2267d991a102f18eacf3e2afacb570a299 (diff) | |
download | mux-c4da3559760351467f421a234d4240ef6670f396.tar.gz mux-c4da3559760351467f421a234d4240ef6670f396.tar.bz2 mux-c4da3559760351467f421a234d4240ef6670f396.zip |
implement stdio and add mini shell
Diffstat (limited to 'shell.c')
-rw-r--r-- | shell.c | 41 |
1 files changed, 41 insertions, 0 deletions
@@ -0,0 +1,41 @@ +#include "shell.h" +#include <stddef.h> +#include <string.h> +#include <stdio.h> +#include "tshield/tshield.h" + +#define MAX_ARGS 5 +#define IN_LENGTH 80 + +static int process_command(int argc, char **argv); + +void shell() { + char in[IN_LENGTH]; + int argc; + char *argv[MAX_ARGS]; + + while(1) { + printf ("root@arduino$ "); + + fgets(in, IN_LENGTH, stdin); + + argc = 0; + char *p = strtok (in," \n\r"); + while (p != NULL && argc < MAX_ARGS) { + argv[argc] = p; + argc += 1; + p = strtok(NULL, " \n\r"); + } + printf("%d\n", process_command(argc, argv)); + } +} + +static int process_command(int argc, char **argv) { + if (argc < 1) return -1; + + if (strcmp(argv[0], "led") == 0) { + return 0; + } + + return -1; +}
\ No newline at end of file |