1/* $XFree86$ */
2/*****************************************************************************
3Copyright 1987, 1988, 1989, 1990, 1991, 1994 by Digital Equipment Corp.,
4Maynard, MA
5
6Permission to use, copy, modify, and distribute this software and its
7documentation for any purpose and without fee is hereby granted,
8provided that the above copyright notice appear in all copies and that
9both that copyright notice and this permission notice appear in
10supporting documentation, and that the name of Digital not be
11used in advertising or publicity pertaining to distribution of the
12software without specific, written prior permission.
13
14DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
15ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
16DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
17ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
18WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
19ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
20SOFTWARE.
21
22*****************************************************************************/
23#include <X11/Xos.h>
24#include <X11/Xlib.h>
25#include <X11/extensions/xtraplib.h>
26#include <X11/extensions/xtraplibp.h>
27
28#ifndef TRUE
29# define TRUE 1L
30#endif
31#ifndef FALSE
32# define FALSE 0L
33#endif
34
35void XEPrintRelease( FILE *ofp, XETrapGetAvailRep *pavail)
36{
37
38    fprintf(ofp,"\tRelease:   %d.%d-%d\n", XETrapGetAvailRelease(pavail),
39        XETrapGetAvailVersion(pavail), XETrapGetAvailRevision(pavail));
40}
41void XEPrintTkRelease( FILE *ofp, XETC *tc)
42{
43    fprintf(ofp,"\tRelease:   %d.%d-%d\n", XEGetRelease(tc), XEGetVersion(tc),
44        XEGetRevision(tc));
45}
46
47void XEPrintPlatform( FILE *ofp, XETrapGetAvailRep *pavail)
48{
49    fprintf(ofp,"\tPlatform:  %s (0x%02x)\n",
50        XEPlatformIDToString(XETrapGetAvailPFIdent(pavail)),
51        (int)XETrapGetAvailPFIdent(pavail));
52}
53
54void XEPrintAvailFlags( FILE *ofp, XETrapGetAvailRep *pavail)
55{
56
57    CARD8 f[4L];
58
59    XETrapGetAvailFlags(pavail,f);
60    fprintf(ofp,"\tFlags: ");
61    if (XETrapGetAvailFlagTimestamp(pavail)) fputs("Timestamps ", ofp);
62    if (XETrapGetAvailFlagCmd(pavail)) fputs("CmdKey ", ofp);
63    if (XETrapGetAvailFlagCmdKeyMod(pavail)) fputs("CmdKeyMod ", ofp);
64    if (XETrapGetAvailFlagRequest(pavail)) fputs("Requests ", ofp);
65    if (XETrapGetAvailFlagEvent(pavail)) fputs("Events ", ofp);
66    if (XETrapGetAvailFlagMaxPacket(pavail)) fputs("MaxPkt ", ofp);
67    if (XETrapGetAvailFlagStatistics(pavail)) fputs("Statistics ", ofp);
68    if (XETrapGetAvailFlagWinXY(pavail)) fputs("WinXY ", ofp);
69    if (XETrapGetAvailFlagCursor(pavail)) fputs("Cursor ", ofp);
70    if (XETrapGetAvailFlagXInput(pavail)) fputs("XInput ", ofp);
71    if (XETrapGetAvailFlagVecEvt(pavail)) fputs("Vect_Evnts ", ofp);
72    if (XETrapGetAvailFlagColorReplies(pavail)) fputs("ColorRep ", ofp);
73    if (XETrapGetAvailFlagGrabServer(pavail)) fputs("GrabServer ", ofp);
74    fprintf(ofp," (0x%02x%02x%02x%02x)\n", f[0], f[1], f[2], f[3]);
75}
76
77void XEPrintAvailPktSz( FILE *ofp, XETrapGetAvailRep *pavail)
78{
79
80    fprintf(ofp,"\tMax Packet Size: %d\n", XETrapGetAvailMaxPktSize(pavail));
81}
82void XEPrintStateFlags( FILE *ofp, XETrapGetCurRep *pcur)
83{
84
85    CARD8   f[2];
86    XETrapGetCurSFlags(pcur, f);
87    fputs("\tFlags: ",ofp);
88    if (BitIsTrue(f,XETrapTrapActive)) fputs("I/O Active ", ofp);
89    fprintf(ofp," (0x%02x%02x)\n", f[0], f[1]);
90}
91
92void XEPrintMajOpcode( FILE *ofp, XETrapGetAvailRep *pavail)
93{
94
95    fprintf(ofp,"\tMajor Opcode:  %d\n", (int)XETrapGetAvailOpCode(pavail));
96}
97void XEPrintCurXY( FILE *ofp, XETrapGetAvailRep *pavail)
98{
99
100    fprintf(ofp,"\tCurrent (x,y):  (%d,%d)\n", XETrapGetCurX(pavail),
101        XETrapGetCurY(pavail));
102}
103
104void XEPrintTkFlags( FILE *ofp, XETC *tc)
105{
106
107    CARD8   f[2];
108    XETrapGetTCLFlags(tc, f);
109    fputs("\tFlags: ",ofp);
110    if (XETrapGetTCFlagDeltaTimes(tc)) fputs("Delta Times ", ofp);
111    if (XETrapGetTCFlagTrapActive(tc)) fputs("Trap Active ", ofp);
112    fprintf(ofp," (0x%02x%02x)\n", f[0], f[1]);
113}
114
115void XEPrintLastTime( FILE *ofp, XETC *tc)
116{
117
118    fprintf(ofp,"\tLast Relative Time:  %d\n", (int)XETrapGetTCTime(tc));
119}
120
121void XEPrintCfgFlags( FILE *ofp, XETrapGetCurRep *pcur)
122{
123
124    CARD8 f[4L];
125
126    XETrapGetCurCFlags(pcur,data,f);
127    fprintf(ofp,"\tFlags: ");
128    if (XETrapGetCurFlagTimestamp(pcur,data)) fputs("Timestamps ", ofp);
129    if (XETrapGetCurFlagCmd(pcur,data)) fputs("CmdKey ", ofp);
130    if (XETrapGetCurFlagCmdKeyMod(pcur,data)) fputs("CmdKeyMod ", ofp);
131    if (XETrapGetCurFlagRequest(pcur,data)) fputs("Requests ", ofp);
132    if (XETrapGetCurFlagEvent(pcur,data)) fputs("Events ", ofp);
133    if (XETrapGetCurFlagMaxPacket(pcur,data)) fputs("MaxPkt ", ofp);
134    if (XETrapGetCurFlagStatistics(pcur,data)) fputs("Statistics ", ofp);
135    if (XETrapGetCurFlagWinXY(pcur,data)) fputs("WinXY ", ofp);
136    if (XETrapGetCurFlagCursor(pcur,data)) fputs("Cursor ", ofp);
137    if (XETrapGetCurFlagXInput(pcur,data)) fputs("XInput ", ofp);
138    if (XETrapGetCurFlagColorReplies(pcur,data)) fputs("ColorReplies ", ofp);
139    if (XETrapGetCurFlagGrabServer(pcur,data)) fputs("GrabServer ", ofp);
140    fprintf(ofp," (0x%02x%02x%02x%02x)\n", f[0], f[1], f[2], f[3]);
141}
142
143void XEPrintRequests( FILE *ofp, XETrapGetCurRep *pcur)
144{
145
146    long i;
147    fprintf(ofp,"\tX Requests:  ");
148    for (i=0L; i<=XETrapMaxRequest-1; i++)
149    {   /* Not using the macro cause we're doing things
150         * a byte at a time rather than a bit.
151         */
152        fprintf(ofp,"%02x ", pcur->config.flags.req[i]);
153        if ((i+1L)%4L == 0L)
154        {
155            fprintf(ofp,"  ");
156        }
157        if ((i+1L)%16L == 0L)
158        {
159            fprintf(ofp,"\n\t\t     ");
160        }
161    }
162    fprintf(ofp,"\n");
163}
164
165void XEPrintEvents( FILE *ofp, XETrapGetCurRep *pcur)
166{
167
168    int i;
169    fprintf(ofp,"\tX Events:  ");
170    for (i=0L; i<XETrapMaxEvent; i++)
171    {   /* Not using the macro cause we're doing things
172         * a byte at a time rather than a bit.
173         */
174        fprintf(ofp,"%02x ", pcur->config.flags.event[i]);
175        if ((i+1L)%4L == 0L)
176        {
177            fprintf(ofp,"  ");
178        }
179        if ((i+1L)%16L == 0L)
180        {
181            fprintf(ofp,"\n\t\t     ");
182        }
183    }
184    fprintf(ofp,"\n");
185}
186
187void XEPrintCurPktSz( FILE *ofp, XETrapGetCurRep *pcur)
188{
189
190    fprintf(ofp,"\tMax Packet Size: %d\n", XETrapGetCurMaxPktSize(pcur));
191}
192
193void XEPrintCmdKey( FILE *ofp, XETrapGetCurRep *pcur)
194{
195
196    fprintf(ofp,"\tcmd_key: 0x%02x\n", XETrapGetCurCmdKey(pcur));
197}
198
199void XEPrintEvtStats( FILE *ofp, XETrapGetStatsRep *pstats, XETC *tc)
200{
201
202    int i;
203    fprintf(ofp,"\tX Events:\n");
204    for (i=0; i<XETrapCoreEvents; i++)
205    {
206        if (XETrapGetStatsEvt(pstats,i))
207        {
208            fprintf(ofp,"\t   %-20s :  %d\n", XEEventIDToString(i,tc),
209                (int)XETrapGetStatsEvt(pstats,i));
210        }
211    }
212    fprintf(ofp,"\n");
213}
214
215void XEPrintReqStats( FILE *ofp, XETrapGetStatsRep *pstats, XETC *tc)
216{
217
218    int i;
219    fprintf(ofp,"\tX Requests:\n");
220    for (i=0L; i<256L; i++)
221    {
222        if (XETrapGetStatsReq(pstats,i))
223        {
224            fprintf(ofp,"\t   %-20s :  %d\n", XERequestIDToString(i,tc),
225                (int)XETrapGetStatsReq(pstats,i));
226        }
227    }
228    fprintf(ofp,"\n");
229}
230
231
232void XEPrintAvail( FILE *ofp, XETrapGetAvailRep *pavail)
233{
234
235    fprintf(ofp,"Available Information:\n");
236    XEPrintRelease(ofp, pavail);
237    XEPrintPlatform(ofp, pavail);
238    XEPrintMajOpcode(ofp, pavail);
239    XEPrintAvailFlags(ofp, pavail);
240    XEPrintAvailPktSz(ofp, pavail);
241    XEPrintCurXY(ofp, pavail);
242    return;
243}
244
245void XEPrintTkState( FILE *ofp, XETC *tc)
246{
247
248    fprintf(ofp,"Toolkit State:\n");
249    XEPrintTkFlags(ofp, tc);
250    XEPrintLastTime(ofp, tc);
251    XEPrintTkRelease(ofp, tc);
252}
253
254void XEPrintCurrent( FILE *ofp, XETrapGetCurRep *pcur)
255{
256
257    fprintf(ofp,"Current State:\n");
258    XEPrintStateFlags(ofp, pcur);
259    fprintf(ofp,"Current Config:\n");
260    XEPrintCfgFlags(ofp, pcur);
261    XEPrintRequests(ofp, pcur);
262    XEPrintEvents(ofp, pcur);
263    XEPrintCurPktSz(ofp, pcur);
264    XEPrintCmdKey(ofp, pcur);
265}
266
267void XEPrintStatistics( FILE *ofp, XETrapGetStatsRep *pstats, XETC *tc)
268{
269
270    fprintf(ofp,"Statistics:\n");
271    XEPrintEvtStats(ofp, pstats, tc);
272    XEPrintReqStats(ofp, pstats, tc);
273}
274
275