Allow for slower ADC operation. Add power saving code.
[fw/altos] / ao_cmd.c
index 13def7c20d7ef4b88e9ff436f2bce513ed5f5551..7f7865364da5a4a10949a1a5e2d964aeecca1512 100644 (file)
--- a/ao_cmd.c
+++ b/ao_cmd.c
@@ -216,7 +216,7 @@ echo(void)
 
 static const uint8_t help_txt[] = "All numbers are in hex";
 
-#define NUM_CMDS       8
+#define NUM_CMDS       10
 
 static __code struct ao_cmds   *__xdata (ao_cmds[NUM_CMDS]);
 static __xdata uint8_t         ao_ncmds;
@@ -226,10 +226,13 @@ help(void)
 {
        __xdata uint8_t cmds;
        __xdata uint8_t cmd;
+       __code struct ao_cmds * __xdata cs;
        puts(help_txt);
-       for (cmds = 0; cmds < ao_ncmds; cmds++)
-               for (cmd = 0; ao_cmds[cmds][cmd].cmd; cmd++)
-                       puts(ao_cmds[cmds][cmd].help);
+       for (cmds = 0; cmds < ao_ncmds; cmds++) {
+               cs = ao_cmds[cmds];
+               for (cmd = 0; cs[cmd].cmd != '\0'; cmd++)
+                       puts(cs[cmd].help);
+       }
 }
 
 static void
@@ -257,6 +260,8 @@ ao_cmd(void *parameters)
 {
        __xdata uint8_t c;
        __xdata uint8_t cmd, cmds;
+       __code struct ao_cmds * __xdata cs;
+       void (*__xdata func)(void);
        (void) parameters;
 
        lex_echo = 1;
@@ -268,16 +273,19 @@ ao_cmd(void *parameters)
                ao_cmd_lex();
                if (c == '\r' || c == '\n')
                        continue;
-               cmd = 0;
+               func = (void (*)(void)) NULL;
                for (cmds = 0; cmds < ao_ncmds; cmds++) {
-                       for (cmd = 0; ao_cmds[cmds][cmd].cmd != '\0'; cmd++)
-                               if (ao_cmds[cmds][cmd].cmd == c)
+                       cs = ao_cmds[cmds];
+                       for (cmd = 0; cs[cmd].cmd != '\0'; cmd++)
+                               if (cs[cmd].cmd == c) {
+                                       func = cs[cmd].func;
                                        break;
-                       if (ao_cmds[cmds][cmd].cmd)
+                               }
+                       if (func)
                                break;
                }
-               if (ao_cmds[cmds][cmd].cmd)
-                       (*ao_cmds[cmds][cmd].func);
+               if (func)
+                       (*func)();
                else
                        ao_cmd_status = ao_cmd_syntax_error;
                report();
@@ -288,9 +296,9 @@ __xdata struct ao_task ao_cmd_task;
 
 __code struct ao_cmds  ao_base_cmds[] = {
        { '?', help,            "?                                  Print this message" },
-       { 'T', ao_task_info,    "T                                  Show task states\n" },
-       { 'E', echo,            "E <0 off, 1 on>                    Set command echo mode\n" },
-       { 'd', dump,            "d <start> <end>                    Dump memory\n" },
+       { 'T', ao_task_info,    "T                                  Show task states" },
+       { 'E', echo,            "E <0 off, 1 on>                    Set command echo mode" },
+       { 'd', dump,            "d <start> <end>                    Dump memory" },
        { 0,    help,   NULL },
 };