]> git.karo-electronics.de Git - karo-tx-redboot.git/blob - packages/services/diagnosis/v2_0/src/core.c
Initial revision
[karo-tx-redboot.git] / packages / services / diagnosis / v2_0 / src / core.c
1 #include <redboot.h>
2 #include <stdlib.h>
3 #include <cyg/diagnosis/diagnosis.h>
4
5 #include CYGHWR_MEMORY_LAYOUT_H
6
7 // Define table boundaries
8 CYG_HAL_TABLE_BEGIN( __DIAGNOSIS_cmds_TAB__, DIAGNOSIS_cmds);
9 CYG_HAL_TABLE_END( __DIAGNOSIS_cmds_TAB_END__, DIAGNOSIS_cmds);
10
11 // CLI function
12 static cmd_fun do_diagnosis_cmds;
13 RedBoot_nested_cmd("diag",
14            "Tools for system diagnostics",
15            "{cmds}",
16            do_diagnosis_cmds,
17            __DIAGNOSIS_cmds_TAB__, &__DIAGNOSIS_cmds_TAB_END__
18           );
19
20 void diagnosis_usage(char *why)
21 {
22     diag_printf("*** invalid 'diag' command: %s\n", why);
23     cmd_usage(__DIAGNOSIS_cmds_TAB__, &__DIAGNOSIS_cmds_TAB_END__, "diag ");
24 }
25
26 static void do_diagnosis_cmds(int argc, char *argv[])
27 {
28         struct cmd * cmd;
29         if (argc < 2) {
30                 diagnosis_usage("too few arguments");
31                 return;
32         }
33         if ((cmd = cmd_search(__DIAGNOSIS_cmds_TAB__, 
34                           &__DIAGNOSIS_cmds_TAB_END__,
35                           argv[1])) != (struct cmd *)0) {
36                 (cmd->fun)(argc, argv);
37                 return;
38         }
39         diagnosis_usage("unrecognized command");
40 }