FreeCalypso > hg > freecalypso-tools
annotate rvinterf/libprint/gpf_tst.c @ 1014:961efadd530a default tip
fc-shell TCH DL handler: add support for CSD modes
TCH DL capture mechanism in FC Tourmaline firmware has been extended
to support CSD modes in addition to speech - add the necessary support
on the host tools side.
It needs to be noted that this mechanism in its present state does NOT
provide the debug utility value that was sought: as we learned only
after the code was implemented, TI's DSP has a misfeature in that the
buffer we are reading (a_dd_0[]) is zeroed out when the IDS block
is enabled, i.e., we are reading all zeros and not the real DL bits
we were after. But since the code has already been written, we are
keeping it - perhaps we can do some tests with IDS disabled.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Tue, 26 Nov 2024 06:27:43 +0000 |
parents | 4d2e6a2dd1a1 |
children |
rev | line source |
---|---|
939
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /* |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 * This libprint module (one public function plus many internal subfunctions) |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 * implements printing/formatting of GPF TST interface packets, which can be |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 * traces, sysprims, protocol stack primitives or unrecognized packet format. |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 */ |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 #include <sys/types.h> |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 #include <ctype.h> |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 #include <stdio.h> |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 #include <stdlib.h> |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 #include <string.h> |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 #include <strings.h> |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 static int |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 basic_checks(rxpkt, rxpkt_len) |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 u_char *rxpkt; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 unsigned rxpkt_len; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 { |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 int i, c; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 if (rxpkt_len < 17) |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 return(0); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 /* check version bits in the header byte */ |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 if ((rxpkt[1] & 0xC0) != 0x80) |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 return(0); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 /* check the length */ |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 c = rxpkt[2] | rxpkt[3] << 8; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 if (c + 4 != rxpkt_len) |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 return(0); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 /* ensure that the "from" and "to" are printable ASCII */ |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 for (i = 8; i < 16; i++) { |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 c = rxpkt[i]; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 if (c < ' ' || c > '~') |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 return(0); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 } |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 /* basic checks pass */ |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 return(1); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 } |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40 static int |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 psprim_extra_checks(rxpkt, rxpkt_len) |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 u_char *rxpkt; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 unsigned rxpkt_len; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44 { |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45 int i, c; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46 |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 if (rxpkt_len < 24) |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48 return(0); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
49 /* "original rcvr" field needs to be printable ASCII */ |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
50 for (i = 16; i < 20; i++) { |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
51 c = rxpkt[i]; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
52 if (c < ' ' || c > '~') |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
53 return(0); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54 } |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
55 /* checks pass */ |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56 return(1); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
57 } |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
58 |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
59 static void |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
60 print_malformed(rxpkt, rxpkt_len, extra_prefix, outfunc_head, outfunc_cont) |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
61 u_char *rxpkt; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
62 unsigned rxpkt_len; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
63 char *extra_prefix; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
64 void (*outfunc_head)(), (*outfunc_cont)(); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
65 { |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
66 char headline[80]; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
67 |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
68 sprintf(headline, "%sGPF unrecognized packet format", extra_prefix); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
69 outfunc_head(headline); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
70 packet_hex_dump(rxpkt, rxpkt_len, outfunc_cont); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
71 } |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
72 |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
73 static void |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
74 print_malloc_fail(rxpkt, rxpkt_len, extra_prefix, outfunc_head, outfunc_cont) |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
75 u_char *rxpkt; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
76 unsigned rxpkt_len; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
77 char *extra_prefix; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
78 void (*outfunc_head)(), (*outfunc_cont)(); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
79 { |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
80 char headline[80]; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
81 |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
82 sprintf(headline, "%sGPF packet, failed malloc in formatting", |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
83 extra_prefix); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
84 outfunc_head(headline); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
85 packet_hex_dump(rxpkt, rxpkt_len, outfunc_cont); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
86 } |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
87 |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
88 static int |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
89 entity_name_well_formed(p) |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
90 char *p; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
91 { |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
92 int i, len; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
93 |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
94 if (!isupper(p[0])) |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
95 return(0); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
96 for (i = 0; i < 4; i++) |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
97 if (!isalnum(p[i])) |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
98 break; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
99 len = i; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
100 for (; i < 4; i++) |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
101 if (p[i] != ' ') |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
102 return(0); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
103 return(len); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
104 } |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
105 |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
106 static void |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
107 print_entity_name(raw, outp) |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
108 char *raw, **outp; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
109 { |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
110 int len; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
111 |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
112 len = entity_name_well_formed(raw); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
113 if (len) { |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
114 sprintf(*outp, "%.*s", len, raw); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
115 *outp += len; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
116 } else { |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
117 sprintf(*outp, "\"%.4s\"", raw); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
118 *outp += 6; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
119 } |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
120 } |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
121 |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
122 static void |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
123 print_common_hdr(rxpkt, outp, typestr, extra_prefix) |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
124 u_char *rxpkt; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
125 char **outp, *typestr, *extra_prefix; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
126 { |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
127 sprintf(*outp, "%sGPF %s id=%02X ts=%02X%02X%02X%02X ", extra_prefix, |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
128 typestr, rxpkt[1], rxpkt[7], rxpkt[6], rxpkt[5], rxpkt[4]); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
129 *outp = index(*outp, '\0'); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
130 print_entity_name(rxpkt + 8, outp); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
131 *(*outp)++ = '-'; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
132 *(*outp)++ = '>'; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
133 print_entity_name(rxpkt + 12, outp); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
134 *(*outp)++ = ' '; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
135 } |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
136 |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
137 static void |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
138 format_text(rxpkt, rxpkt_len, start_off, outp) |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
139 u_char *rxpkt; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
140 unsigned rxpkt_len, start_off; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
141 char *outp; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
142 { |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
143 *outp++ = '\"'; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
144 safe_print_trace(rxpkt + start_off, rxpkt_len - start_off, outp); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
145 outp = index(outp, '\0'); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
146 *outp++ = '\"'; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
147 *outp = '\0'; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
148 } |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
149 |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
150 static void |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
151 format_compressed_trace(rxpkt, rxpkt_len, start_off, outp) |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
152 u_char *rxpkt; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
153 unsigned rxpkt_len, start_off; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
154 char *outp; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
155 { |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
156 int i; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
157 |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
158 i = start_off + 1; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
159 sprintf(outp, "%d", rxpkt[i+1] << 8 | rxpkt[i]); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
160 outp = index(outp, '\0'); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
161 i += 4; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
162 for (; i < rxpkt_len; i++) { |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
163 sprintf(outp, " %02X", rxpkt[i]); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
164 outp += 3; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
165 } |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
166 *outp = '\0'; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
167 } |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
168 |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
169 static void |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
170 format_trace(rxpkt, rxpkt_len, extra_prefix, outfunc_head, outfunc_cont) |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
171 u_char *rxpkt; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
172 unsigned rxpkt_len; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
173 char *extra_prefix; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
174 void (*outfunc_head)(), (*outfunc_cont)(); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
175 { |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
176 char *outbuf, *outp; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
177 int i; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
178 |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
179 outbuf = malloc(rxpkt_len * 4 + strlen(extra_prefix) + 1); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
180 if (!outbuf) { |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
181 print_malloc_fail(rxpkt, rxpkt_len, extra_prefix, outfunc_head, |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
182 outfunc_cont); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
183 return; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
184 } |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
185 outp = outbuf; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
186 print_common_hdr(rxpkt, &outp, "trace", extra_prefix); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
187 i = 16; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
188 if (rxpkt[i] < 0x20) { |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
189 sprintf(outp, "tc=%02X ", rxpkt[i]); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
190 outp += 6; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
191 i++; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
192 } |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
193 if (rxpkt_len - i >= 5 && rxpkt[i] == '%' && |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
194 !rxpkt[i+3] && !rxpkt[i+4]) |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
195 format_compressed_trace(rxpkt, rxpkt_len, i, outp); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
196 else |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
197 format_text(rxpkt, rxpkt_len, i, outp); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
198 outfunc_head(outbuf); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
199 free(outbuf); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
200 } |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
201 |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
202 static void |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
203 format_sysprim(rxpkt, rxpkt_len, extra_prefix, outfunc_head, outfunc_cont) |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
204 u_char *rxpkt; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
205 unsigned rxpkt_len; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
206 char *extra_prefix; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
207 void (*outfunc_head)(), (*outfunc_cont)(); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
208 { |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
209 char *outbuf, *outp; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
210 |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
211 outbuf = malloc(rxpkt_len * 4 + strlen(extra_prefix) + 1); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
212 if (!outbuf) { |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
213 print_malloc_fail(rxpkt, rxpkt_len, extra_prefix, outfunc_head, |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
214 outfunc_cont); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
215 return; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
216 } |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
217 outp = outbuf; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
218 print_common_hdr(rxpkt, &outp, "sysprim", extra_prefix); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
219 format_text(rxpkt, rxpkt_len, 16, outp); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
220 outfunc_head(outbuf); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
221 free(outbuf); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
222 } |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
223 |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
224 static void |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
225 format_psprim(rxpkt, rxpkt_len, extra_prefix, outfunc_head, outfunc_cont) |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
226 u_char *rxpkt; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
227 unsigned rxpkt_len; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
228 char *extra_prefix; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
229 void (*outfunc_head)(), (*outfunc_cont)(); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
230 { |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
231 char headline[80]; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
232 char *outp = headline; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
233 |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
234 print_common_hdr(rxpkt, &outp, "PSprim", extra_prefix); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
235 /* original destination */ |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
236 *outp++ = '('; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
237 print_entity_name(rxpkt + 16, &outp); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
238 *outp++ = ')'; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
239 /* opcode and data length */ |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
240 sprintf(outp, " %02X%02X%02X%02X len=%u", |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
241 rxpkt[23], rxpkt[22], rxpkt[21], rxpkt[20], rxpkt_len - 24); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
242 outfunc_head(headline); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
243 packet_hex_dump(rxpkt + 24, rxpkt_len - 24, outfunc_cont); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
244 } |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
245 |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
246 void |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
247 format_gpf_packet(rxpkt, rxpkt_len, extra_prefix, outfunc_head, outfunc_cont) |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
248 u_char *rxpkt; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
249 unsigned rxpkt_len; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
250 char *extra_prefix; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
251 void (*outfunc_head)(), (*outfunc_cont)(); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
252 { |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
253 if (!basic_checks(rxpkt, rxpkt_len)) { |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
254 print_malformed(rxpkt, rxpkt_len, extra_prefix, outfunc_head, |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
255 outfunc_cont); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
256 return; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
257 } |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
258 /* dispatch by type */ |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
259 switch (rxpkt[1] & 0x30) { |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
260 case 0x10: |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
261 /* PS primitive */ |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
262 if (psprim_extra_checks(rxpkt, rxpkt_len)) |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
263 format_psprim(rxpkt, rxpkt_len, extra_prefix, |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
264 outfunc_head, outfunc_cont); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
265 else |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
266 print_malformed(rxpkt, rxpkt_len, extra_prefix, |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
267 outfunc_head, outfunc_cont); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
268 return; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
269 case 0x20: |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
270 /* trace */ |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
271 format_trace(rxpkt, rxpkt_len, extra_prefix, outfunc_head, |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
272 outfunc_cont); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
273 return; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
274 case 0x30: |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
275 /* system primitive */ |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
276 format_sysprim(rxpkt, rxpkt_len, extra_prefix, outfunc_head, |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
277 outfunc_cont); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
278 return; |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
279 default: |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
280 print_malformed(rxpkt, rxpkt_len, extra_prefix, outfunc_head, |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
281 outfunc_cont); |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
282 } |
4d2e6a2dd1a1
libprint: implement libg23 replacement
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
283 } |