FreeCalypso > hg > freecalypso-sw
annotate rvinterf/libg23/fmtfunc.c @ 923:10b4bed10192
gsm-fw/L1: fix for the DSP patch corruption bug
The L1 code we got from the LoCosto fw contains a feature for DSP CPU load
measurement. This feature is a LoCosto-ism, i.e., not applicable to earlier
DBB chips (Calypso) with their respective earlier DSP ROMs. Most of the
code dealing with that feature is conditionalized as #if (DSP >= 38),
but one spot was missed, and the MCU code was writing into an API word
dealing with this feature. In TCS211 this DSP API word happens to be
used by the DSP code patch, hence that write was corrupting the patched
DSP code.
author | Mychaela Falconia <falcon@ivan.Harhan.ORG> |
---|---|
date | Mon, 19 Oct 2015 17:13:56 +0000 |
parents | 42c91c51ca7f |
children |
rev | line source |
---|---|
331
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
1 /* |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
2 * This libg23 module exports functions for formatting 3 different kinds |
627
42c91c51ca7f
rvinterf: display GPF packets as "GPF" rather than "G23"
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
331
diff
changeset
|
3 * of GPF packets into human-readable form: traces, system primitives |
331
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
4 * and protocol stack primitives. |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
5 * |
627
42c91c51ca7f
rvinterf: display GPF packets as "GPF" rather than "G23"
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
331
diff
changeset
|
6 * GPF packets passed to these functions for decoding MUST have already |
331
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
7 * been verified to be well-formed for their respective type. |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
8 */ |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
9 |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
10 #include <sys/types.h> |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
11 #include <ctype.h> |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
12 #include <stdio.h> |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
13 #include <string.h> |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
14 #include <strings.h> |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
15 |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
16 static int |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
17 entity_name_well_formed(p) |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
18 char *p; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
19 { |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
20 int i, len; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
21 |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
22 if (!isupper(p[0])) |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
23 return(0); |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
24 for (i = 0; i < 4; i++) |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
25 if (!isalnum(p[i])) |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
26 break; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
27 len = i; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
28 for (; i < 4; i++) |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
29 if (p[i] != ' ') |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
30 return(0); |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
31 return(len); |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
32 } |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
33 |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
34 static void |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
35 print_entity_name(raw, outp) |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
36 char *raw, **outp; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
37 { |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
38 int len; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
39 |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
40 len = entity_name_well_formed(raw); |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
41 if (len) { |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
42 sprintf(*outp, "%.*s", len, raw); |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
43 *outp += len; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
44 } else { |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
45 sprintf(*outp, "\"%.4s\"", raw); |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
46 *outp += 6; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
47 } |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
48 } |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
49 |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
50 static void |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
51 print_common_hdr(rxpkt, outp, typestr) |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
52 u_char *rxpkt; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
53 char **outp, *typestr; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
54 { |
627
42c91c51ca7f
rvinterf: display GPF packets as "GPF" rather than "G23"
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
331
diff
changeset
|
55 sprintf(*outp, "GPF %s id=%02X ts=%02X%02X%02X%02X ", typestr, |
331
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
56 rxpkt[1], rxpkt[7], rxpkt[6], rxpkt[5], rxpkt[4]); |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
57 *outp = index(*outp, '\0'); |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
58 print_entity_name(rxpkt + 8, outp); |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
59 *(*outp)++ = '-'; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
60 *(*outp)++ = '>'; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
61 print_entity_name(rxpkt + 12, outp); |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
62 *(*outp)++ = ' '; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
63 } |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
64 |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
65 static void |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
66 format_text(rxpkt, rxpkt_len, start_off, outp) |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
67 u_char *rxpkt; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
68 char *outp; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
69 { |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
70 int i, c; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
71 |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
72 *outp++ = '\"'; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
73 for (i = start_off; i < rxpkt_len; i++) { |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
74 c = rxpkt[i]; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
75 if (c & 0x80) { |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
76 *outp++ = 'M'; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
77 *outp++ = '-'; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
78 c &= 0x7F; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
79 } |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
80 if (c < 0x20) { |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
81 *outp++ = '^'; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
82 *outp++ = c + '@'; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
83 } else if (c == 0x7F) { |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
84 *outp++ = '^'; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
85 *outp++ = '?'; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
86 } else |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
87 *outp++ = c; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
88 } |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
89 *outp++ = '\"'; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
90 *outp = '\0'; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
91 } |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
92 |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
93 static void |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
94 format_compressed_trace(rxpkt, rxpkt_len, start_off, outp) |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
95 u_char *rxpkt; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
96 char *outp; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
97 { |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
98 int i; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
99 |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
100 i = start_off + 1; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
101 sprintf(outp, "%d", rxpkt[i+1] << 8 | rxpkt[i]); |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
102 outp = index(outp, '\0'); |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
103 i += 4; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
104 for (; i < rxpkt_len; i++) { |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
105 sprintf(outp, " %02X", rxpkt[i]); |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
106 outp += 3; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
107 } |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
108 *outp = '\0'; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
109 } |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
110 |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
111 void |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
112 format_g23_trace(rxpkt, rxpkt_len, outbuf) |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
113 u_char *rxpkt; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
114 char *outbuf; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
115 { |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
116 char *outp = outbuf; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
117 int i; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
118 |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
119 print_common_hdr(rxpkt, &outp, "trace"); |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
120 i = 16; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
121 if (rxpkt[i] < 0x20) { |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
122 sprintf(outp, "tc=%02X ", rxpkt[i]); |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
123 outp += 6; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
124 i++; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
125 } |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
126 if (rxpkt_len - i >= 5 && rxpkt[i] == '%' && |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
127 !rxpkt[i+3] && !rxpkt[i+4]) |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
128 format_compressed_trace(rxpkt, rxpkt_len, i, outp); |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
129 else |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
130 format_text(rxpkt, rxpkt_len, i, outp); |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
131 } |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
132 |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
133 void |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
134 format_g23_sysprim(rxpkt, rxpkt_len, outbuf) |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
135 u_char *rxpkt; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
136 char *outbuf; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
137 { |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
138 char *outp = outbuf; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
139 int i; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
140 |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
141 print_common_hdr(rxpkt, &outp, "sysprim"); |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
142 format_text(rxpkt, rxpkt_len, 16, outp); |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
143 } |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
144 |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
145 void |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
146 format_g23_psprim(rxpkt, rxpkt_len, outbuf) |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
147 u_char *rxpkt; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
148 char *outbuf; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
149 { |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
150 char *outp = outbuf; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
151 int i; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
152 |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
153 print_common_hdr(rxpkt, &outp, "PSprim"); |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
154 /* original destination */ |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
155 *outp++ = '('; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
156 print_entity_name(rxpkt + 16, &outp); |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
157 *outp++ = ')'; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
158 /* opcode */ |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
159 sprintf(outp, " %02X%02X%02X%02X", |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
160 rxpkt[23], rxpkt[22], rxpkt[21], rxpkt[20]); |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
161 outp += 9; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
162 for (i = 24; i < rxpkt_len; i++) { |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
163 sprintf(outp, " %02X", rxpkt[i]); |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
164 outp += 3; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
165 } |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
166 *outp = '\0'; |
91ea7a4a0b4d
rvinterf/libg23: started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
167 } |