FreeCalypso > hg > freecalypso-sw
annotate rvinterf/tmsh/omr.c @ 1030:194967e11b2b
fc-shell: tch record and tch play reworked for libgsm-compatible file format
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Tue, 31 May 2016 18:39:06 +0000 |
parents | a0879ce32d2c |
children |
rev | line source |
---|---|
978
1ee80bcb0fd0
fc-tmsh: omr (old-style memory read) command implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
1 /* |
1ee80bcb0fd0
fc-tmsh: omr (old-style memory read) command implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
2 * Old-style memory read command |
1ee80bcb0fd0
fc-tmsh: omr (old-style memory read) command implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
3 */ |
1ee80bcb0fd0
fc-tmsh: omr (old-style memory read) command implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
4 |
1ee80bcb0fd0
fc-tmsh: omr (old-style memory read) command implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
5 #include <sys/types.h> |
1ee80bcb0fd0
fc-tmsh: omr (old-style memory read) command implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
6 #include <stdio.h> |
1ee80bcb0fd0
fc-tmsh: omr (old-style memory read) command implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
7 #include <string.h> |
1ee80bcb0fd0
fc-tmsh: omr (old-style memory read) command implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
8 #include <strings.h> |
1ee80bcb0fd0
fc-tmsh: omr (old-style memory read) command implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
9 #include <stdlib.h> |
1ee80bcb0fd0
fc-tmsh: omr (old-style memory read) command implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
10 #include "pktmux.h" |
1ee80bcb0fd0
fc-tmsh: omr (old-style memory read) command implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
11 #include "limits.h" |
1ee80bcb0fd0
fc-tmsh: omr (old-style memory read) command implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
12 #include "localtypes.h" |
1ee80bcb0fd0
fc-tmsh: omr (old-style memory read) command implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
13 #include "tm3.h" |
1ee80bcb0fd0
fc-tmsh: omr (old-style memory read) command implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
14 |
1ee80bcb0fd0
fc-tmsh: omr (old-style memory read) command implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
15 extern u_char rvi_msg[]; |
1ee80bcb0fd0
fc-tmsh: omr (old-style memory read) command implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
16 extern int rvi_msg_len; |
1ee80bcb0fd0
fc-tmsh: omr (old-style memory read) command implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
17 |
979
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
18 static void |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
19 memdump_line(off, inbuf, len) |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
20 u_char *inbuf; |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
21 { |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
22 char outbuf[80], *dp; |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
23 int i, c; |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
24 |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
25 sprintf(outbuf, "omr %02X: ", off); |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
26 dp = index(outbuf, '\0'); |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
27 for (i = 0; i < 16; i++) { |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
28 if (i < len) |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
29 sprintf(dp, "%02X ", inbuf[i]); |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
30 else |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
31 strcpy(dp, " "); |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
32 dp += 3; |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
33 if (i == 7 || i == 15) |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
34 *dp++ = ' '; |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
35 } |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
36 for (i = 0; i < len; i++) { |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
37 c = inbuf[i]; |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
38 if (c < ' ' || c > '~') |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
39 c = '.'; |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
40 *dp++ = c; |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
41 } |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
42 *dp = '\0'; |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
43 async_msg_output(outbuf); |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
44 } |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
45 |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
46 void |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
47 handle_omr_response() |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
48 { |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
49 int off, len; |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
50 |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
51 if (rvi_msg[3]) { |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
52 print_etm_pkt_raw("TM3 memread error"); |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
53 return; |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
54 } |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
55 if (rvi_msg_len < 10) { |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
56 bad: print_etm_pkt_raw("omr bad resp"); |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
57 return; |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
58 } |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
59 if (rvi_msg[5] || rvi_msg[6] || rvi_msg[7]) |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
60 goto bad; |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
61 if (rvi_msg_len != rvi_msg[4] + 9) |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
62 goto bad; |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
63 for (off = 0; off < rvi_msg[4]; off += len) { |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
64 len = rvi_msg[4] - off; |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
65 if (len > 16) |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
66 len = 16; |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
67 memdump_line(off, rvi_msg + 8 + off, len); |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
68 } |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
69 } |
ebdf5afa9fb5
fc-tmsh: omr responses parsed and formatted in a readable manner
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
978
diff
changeset
|
70 |
978
1ee80bcb0fd0
fc-tmsh: omr (old-style memory read) command implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
71 void |
1ee80bcb0fd0
fc-tmsh: omr (old-style memory read) command implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
72 cmd_omr(argc, argv) |
1ee80bcb0fd0
fc-tmsh: omr (old-style memory read) command implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
73 char **argv; |
1ee80bcb0fd0
fc-tmsh: omr (old-style memory read) command implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
74 { |
1ee80bcb0fd0
fc-tmsh: omr (old-style memory read) command implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
75 u32 addr, size; |
1ee80bcb0fd0
fc-tmsh: omr (old-style memory read) command implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
76 u_char cmdpkt[11]; |
1ee80bcb0fd0
fc-tmsh: omr (old-style memory read) command implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
77 |
1ee80bcb0fd0
fc-tmsh: omr (old-style memory read) command implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
78 addr = strtoul(argv[1], 0, 16); |
980
a0879ce32d2c
fc-tmsh omr command: always interpret both arguments as hex
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
979
diff
changeset
|
79 size = strtoul(argv[2], 0, 16); |
978
1ee80bcb0fd0
fc-tmsh: omr (old-style memory read) command implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
80 if (size < 1 || size > TM3_MEMREAD_MAX) { |
1ee80bcb0fd0
fc-tmsh: omr (old-style memory read) command implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
81 printf("error: count argument outside valid range\n"); |
1ee80bcb0fd0
fc-tmsh: omr (old-style memory read) command implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
82 return; |
1ee80bcb0fd0
fc-tmsh: omr (old-style memory read) command implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
83 } |
1ee80bcb0fd0
fc-tmsh: omr (old-style memory read) command implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
84 cmdpkt[1] = MEM_READ; |
1ee80bcb0fd0
fc-tmsh: omr (old-style memory read) command implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
85 cmdpkt[2] = addr; |
1ee80bcb0fd0
fc-tmsh: omr (old-style memory read) command implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
86 cmdpkt[3] = addr >> 8; |
1ee80bcb0fd0
fc-tmsh: omr (old-style memory read) command implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
87 cmdpkt[4] = addr >> 16; |
1ee80bcb0fd0
fc-tmsh: omr (old-style memory read) command implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
88 cmdpkt[5] = addr >> 24; |
1ee80bcb0fd0
fc-tmsh: omr (old-style memory read) command implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
89 cmdpkt[6] = size; |
1ee80bcb0fd0
fc-tmsh: omr (old-style memory read) command implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
90 cmdpkt[7] = 0; |
1ee80bcb0fd0
fc-tmsh: omr (old-style memory read) command implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
91 cmdpkt[8] = 0; |
1ee80bcb0fd0
fc-tmsh: omr (old-style memory read) command implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
92 cmdpkt[9] = 0; |
1ee80bcb0fd0
fc-tmsh: omr (old-style memory read) command implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
93 send_etm_cmd(cmdpkt, 9); |
1ee80bcb0fd0
fc-tmsh: omr (old-style memory read) command implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
94 } |