fix typo in comment
[fw/altos] / src / ao_cmd.c
index e3f85bc9090e8f64e0ad3b48bcea7d322e2296e6..58039f3a20df24860438ca0815cebfb5f160197c 100644 (file)
@@ -171,6 +171,20 @@ ao_cmd_decimal(void)
                ao_cmd_status = r;
 }
 
+uint8_t
+ao_match_word(__code char *word)
+{
+       while (*word) {
+               if (ao_cmd_lex_c != *word) {
+                       ao_cmd_status = ao_cmd_syntax_error;
+                       return 0;
+               }
+               word++;
+               ao_cmd_lex();
+       }
+       return 1;
+}
+
 static void
 eol(void)
 {
@@ -185,6 +199,17 @@ echo(void)
        lex_echo = ao_cmd_lex_i != 0;
 }
 
+static void
+ao_reboot(void)
+{
+       ao_cmd_white();
+       if (!ao_match_word("eboot"))
+               return;
+       WDCTL = WDCTL_EN | WDCTL_MODE_WATCHDOG | WDCTL_INT_64;
+       ao_sleep(AO_SEC_TO_TICKS(2));
+       ao_panic(AO_PANIC_REBOOT);
+}
+
 static void
 version(void)
 {
@@ -278,6 +303,7 @@ __code struct ao_cmds       ao_base_cmds[] = {
        { '?', help,            "?                                  Print this message" },
        { 'T', ao_task_info,    "T                                  Show task states" },
        { 'E', echo,            "E <0 off, 1 on>                    Set command echo mode" },
+       { 'r', ao_reboot,       "r eboot                            Reboot" },
        { 'v', version,         "v                                  Show version" },
        { 0,    help,   NULL },
 };