]> cloudbase.mooo.com Git - z180-stamp.git/blobdiff - avr/cmd_misc.c
working connect command, new sleep command
[z180-stamp.git] / avr / cmd_misc.c
index 7ab8fef0349e323aa7aad19171a9544c26835379..315b959bcebd97b1665373a003b5ff4804a182bf 100644 (file)
@@ -6,13 +6,17 @@
  */
 
 #include "common.h"
+#include <stdlib.h>
+
 #include "command.h"
+#include "timer.h"
+#include "con-utils.h"
 
 
 command_ret_t do_echo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
        uint_fast8_t putnl = 1;
-       
+
        (void) cmdtp; (void) flag;
 
        for (uint_fast8_t i = 1; i < argc; i++) {
@@ -20,11 +24,11 @@ command_ret_t do_echo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                uint_fast8_t backslash = 0;
                char *p = argv[i];
                char c;
-               
+
                if (i != 1)
                        putchar(' ');
                while ((c = *p++) != '\0') {
-               
+
                        if(backslash) {
                                backslash = 0;
                                if (c == 'c') {
@@ -40,19 +44,48 @@ command_ret_t do_echo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                        }
                        putchar(c);
                }
-       }                       
-                                       
+       }
+
        if (putnl)
                putchar('\n');
 
        return CMD_RET_SUCCESS;
 }
 
-#if 0
-U_BOOT_CMD(
-       echo,   CONFIG_SYS_MAXARGS,     1,      do_echo,
-       "echo args to console",
-       "[args..]\n"
-       "    - echo args to console; \\c suppresses newline"
-);
-#endif
+
+command_ret_t do_sleep(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+{
+       unsigned long start = get_timer(0);
+       unsigned long delay;
+       char *sp;
+       uint_fast8_t millisec = 0;
+
+       (void) cmdtp; (void) flag;
+
+       if (argc != 2)
+               return CMD_RET_USAGE;
+
+       delay = strtoul(argv[1], &sp, 10);
+
+       if (*sp == 'm') {
+               millisec = 1;
+               sp++;
+       }
+       if (*sp == 's')
+               sp++;
+       if (*sp != '\0')
+               return CMD_RET_USAGE;
+
+       if (!millisec)
+               delay *= 1000;
+
+       while (get_timer(start) < delay) {
+               if (ctrlc())
+                       return CMD_RET_FAILURE;
+
+               udelay(100);
+       }
+
+       return CMD_RET_SUCCESS;
+}
+