annotate rvinterf/asyncshell/usercmd.c @ 992:a7b0b426f9ca

target-utils: boot ROM UART autodetection revamped The new implementation should work with both the familiar Calypso C035 boot ROM version found in our regular targets as well as the older Calypso F741979B version found on the vintage D-Sample board.
author Mychaela Falconia <falcon@ivan.Harhan.ORG>
date Wed, 30 Dec 2015 21:28:41 +0000
parents bd873572ef2c
children 6eee1e547778
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
872
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
1 /*
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
2 * This module implements interactive fc-shell command dispatch.
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
3 */
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
4
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
5 #include <sys/types.h>
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
6 #include <ctype.h>
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
7 #include <stdio.h>
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
8 #include <string.h>
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
9 #include <strings.h>
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
10 #include <stdlib.h>
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
11
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
12 extern char usercmd[];
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
13
874
72d64c172d85 fc-shell: Rx control implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents: 872
diff changeset
14 extern void cmd_disable();
72d64c172d85 fc-shell: Rx control implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents: 872
diff changeset
15 extern void cmd_enable();
889
1b1683cda154 fc-shell: implemented poweroff and tgtreset commands
Space Falcon <falcon@ivan.Harhan.ORG>
parents: 879
diff changeset
16 extern void cmd_poweroff();
879
4661b84260a0 fc-shell: AT-over-RVTMUX command sending implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents: 875
diff changeset
17 extern void cmd_sendat();
965
bd873572ef2c fc-shell: one-shot command mode implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 889
diff changeset
18 extern void cmd_sp_interactive();
889
1b1683cda154 fc-shell: implemented poweroff and tgtreset commands
Space Falcon <falcon@ivan.Harhan.ORG>
parents: 879
diff changeset
19 extern void cmd_tgtreset();
874
72d64c172d85 fc-shell: Rx control implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents: 872
diff changeset
20
872
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
21 void
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
22 cmd_exit()
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
23 {
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
24 tty_cleanup();
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
25 exit(0);
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
26 }
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
27
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
28 static struct cmdtab {
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
29 char *cmd;
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
30 void (*func)();
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
31 } cmdtab[] = {
874
72d64c172d85 fc-shell: Rx control implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents: 872
diff changeset
32 {"disable", cmd_disable},
72d64c172d85 fc-shell: Rx control implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents: 872
diff changeset
33 {"enable", cmd_enable},
872
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
34 {"exit", cmd_exit},
889
1b1683cda154 fc-shell: implemented poweroff and tgtreset commands
Space Falcon <falcon@ivan.Harhan.ORG>
parents: 879
diff changeset
35 {"poweroff", cmd_poweroff},
872
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
36 {"quit", cmd_exit},
965
bd873572ef2c fc-shell: one-shot command mode implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 889
diff changeset
37 {"sp", cmd_sp_interactive},
879
4661b84260a0 fc-shell: AT-over-RVTMUX command sending implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents: 875
diff changeset
38 {"str", cmd_sendat},
889
1b1683cda154 fc-shell: implemented poweroff and tgtreset commands
Space Falcon <falcon@ivan.Harhan.ORG>
parents: 879
diff changeset
39 {"tgtreset", cmd_tgtreset},
872
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
40 {0, 0}
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
41 };
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
42
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
43 void
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
44 dispatch_user_cmd()
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
45 {
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
46 char *cp, *np;
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
47 struct cmdtab *tp;
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
48
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
49 for (cp = usercmd; isspace(*cp); cp++)
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
50 ;
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
51 if (!*cp || *cp == '#')
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
52 return;
879
4661b84260a0 fc-shell: AT-over-RVTMUX command sending implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents: 875
diff changeset
53 if (!strncmp(cp, "AT", 2) || !strncmp(cp, "at", 2)) {
4661b84260a0 fc-shell: AT-over-RVTMUX command sending implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents: 875
diff changeset
54 cmd_sendat(cp);
4661b84260a0 fc-shell: AT-over-RVTMUX command sending implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents: 875
diff changeset
55 return;
4661b84260a0 fc-shell: AT-over-RVTMUX command sending implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents: 875
diff changeset
56 }
872
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
57 for (np = cp; *cp && !isspace(*cp); cp++)
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
58 ;
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
59 if (*cp)
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
60 *cp++ = '\0';
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
61 for (tp = cmdtab; tp->cmd; tp++)
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
62 if (!strcmp(tp->cmd, np))
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
63 break;
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
64 if (tp->func)
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
65 tp->func(cp);
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
66 else
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
67 printf("error: no such command\n");
5e46679bdb6a fc-shell skeleton created
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
68 }