X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=ao_cmd.c;h=7f7865364da5a4a10949a1a5e2d964aeecca1512;hp=13def7c20d7ef4b88e9ff436f2bce513ed5f5551;hb=8e62747b3692d0ac75b08eaf5c3e4b5d766be6ad;hpb=43c8f7012102cdb591ace899420c10e4a78385ad diff --git a/ao_cmd.c b/ao_cmd.c index 13def7c2..7f786536 100644 --- 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 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 Dump memory" }, { 0, help, NULL }, };