FreeCalypso > hg > freecalypso-tools
annotate rvinterf/libprint/gpf_tst.c @ 992:c4c400c1b10c
fc-loadtool flash: no flash2 ppb-erase-all
All PPBs from across the entire flash chip can only be erased together
as a unit, spanning across both banks on 16 MiB chips - therefore,
we shall disallow 'flash2 ppb-erase-all', and accept 'flash ppb-erase-all'
only.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 03 Dec 2023 04:47:31 +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 } |