X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fao_cmd.c;h=58039f3a20df24860438ca0815cebfb5f160197c;hb=2d77c18b15834046b7b79d49d87211828f2409e9;hp=e3f85bc9090e8f64e0ad3b48bcea7d322e2296e6;hpb=a4137263b69864c524d39c6ff88a0225fd06e79b;p=fw%2Faltos diff --git a/src/ao_cmd.c b/src/ao_cmd.c index e3f85bc9..58039f3a 100644 --- a/src/ao_cmd.c +++ b/src/ao_cmd.c @@ -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 }, };