Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 10:14:18

0001 /***************************************************************************
0002  * Copyright 1995 Network Computing Devices
0003  *
0004  * Permission to use, copy, modify, distribute, and sell this software and
0005  * its documentation for any purpose is hereby granted without fee, provided
0006  * that the above copyright notice appear in all copies and that both that
0007  * copyright notice and this permission notice appear in supporting
0008  * documentation, and that the name of Network Computing Devices
0009  * not be used in advertising or publicity pertaining to distribution
0010  * of the software without specific, written prior permission.
0011  *
0012  * NETWORK COMPUTING DEVICES DISCLAIMs ALL WARRANTIES WITH REGARD TO
0013  * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
0014  * AND FITNESS, IN NO EVENT SHALL NETWORK COMPUTING DEVICES BE LIABLE
0015  * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
0016  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
0017  * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
0018  * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
0019  **************************************************************************/
0020 
0021 #ifndef _RECORDPROTO_H_
0022 #define _RECORDPROTO_H_
0023 
0024 #include <X11/extensions/recordconst.h>
0025 
0026 /* only difference between 1.12 and 1.13 is byte order of device events,
0027    which the library doesn't deal with. */
0028 
0029 /*********************************************************
0030  *
0031  * Protocol request constants
0032  *
0033  */
0034 #define X_RecordQueryVersion    0     /* First request from client */
0035 #define X_RecordCreateContext   1     /* Create client RC */
0036 #define X_RecordRegisterClients 2     /* Add to client RC */
0037 #define X_RecordUnregisterClients 3   /* Delete from client RC */
0038 #define X_RecordGetContext      4     /* Query client RC */
0039 #define X_RecordEnableContext   5     /* Enable interception and reporting */
0040 #define X_RecordDisableContext  6     /* Disable interception and reporting */
0041 #define X_RecordFreeContext     7     /* Free client RC */
0042 
0043 #define sz_XRecordRange     32
0044 #define sz_XRecordClientInfo    12
0045 #define sz_XRecordState     16
0046 #define sz_XRecordDatum     32
0047 
0048 
0049 #define XRecordGlobaldef
0050 #define XRecordGlobalref extern
0051 
0052 #define RecordMaxEvent      (128L-1L)
0053 #define RecordMinDeviceEvent    (2L)
0054 #define RecordMaxDeviceEvent    (6L)
0055 #define RecordMaxError          (256L-1L)
0056 #define RecordMaxCoreRequest    (128L-1L)
0057 #define RecordMaxExtRequest     (256L-1L)
0058 #define RecordMinExtRequest     (129L-1L)
0059 
0060 #define RECORD_RC       CARD32
0061 #define RECORD_XIDBASE      CARD32
0062 #define RECORD_CLIENTSPEC   CARD32
0063 #define RECORD_ELEMENT_HEADER   CARD8
0064 
0065 typedef RECORD_CLIENTSPEC RecordClientSpec, *RecordClientSpecPtr;
0066 
0067 typedef struct
0068 {
0069     CARD8   first;
0070     CARD8   last;
0071 } RECORD_RANGE8;
0072 
0073 typedef struct
0074 {
0075     CARD16  first B16;
0076     CARD16  last B16;
0077 } RECORD_RANGE16;
0078 
0079 typedef struct
0080 {
0081     RECORD_RANGE8   majorCode;
0082     RECORD_RANGE16  minorCode;
0083 } RECORD_EXTRANGE;
0084 
0085 typedef struct
0086 {
0087     RECORD_RANGE8   coreRequests;
0088     RECORD_RANGE8   coreReplies;
0089     RECORD_EXTRANGE extRequests;
0090     RECORD_EXTRANGE extReplies;
0091     RECORD_RANGE8   deliveredEvents;
0092     RECORD_RANGE8   deviceEvents;
0093     RECORD_RANGE8   errors;
0094     BOOL        clientStarted;
0095     BOOL        clientDied;
0096 } RECORDRANGE;
0097 #define sz_RECORDRANGE  24
0098 
0099 /* typedef RECORDRANGE xRecordRange, *xRecordRangePtr;
0100 #define sz_xRecordRange 24 */
0101 
0102 /* Cannot have structures within structures going over the wire */
0103 typedef struct
0104 {
0105     CARD8           coreRequestsFirst;
0106     CARD8           coreRequestsLast;
0107     CARD8           coreRepliesFirst;
0108     CARD8           coreRepliesLast;
0109     CARD8       extRequestsMajorFirst;
0110     CARD8       extRequestsMajorLast;
0111     CARD16          extRequestsMinorFirst B16;
0112     CARD16          extRequestsMinorLast B16;
0113     CARD8       extRepliesMajorFirst;
0114     CARD8       extRepliesMajorLast;
0115     CARD16          extRepliesMinorFirst B16;
0116     CARD16          extRepliesMinorLast B16;
0117     CARD8           deliveredEventsFirst;
0118     CARD8           deliveredEventsLast;
0119     CARD8       deviceEventsFirst;
0120     CARD8       deviceEventsLast;
0121     CARD8           errorsFirst;
0122     CARD8           errorsLast;
0123     BOOL                clientStarted;
0124     BOOL        clientDied;
0125 } xRecordRange;
0126 #define sz_xRecordRange 24
0127 
0128 typedef struct
0129 {
0130     RECORD_CLIENTSPEC   clientResource B32;
0131     CARD32      nRanges B32;
0132 /* LISTofRECORDRANGE */
0133 } RECORD_CLIENT_INFO;
0134 
0135 typedef RECORD_CLIENT_INFO xRecordClientInfo;
0136 
0137 /*
0138  * Initialize
0139  */
0140 typedef struct {
0141     CARD8       reqType;
0142     CARD8       recordReqType;
0143     CARD16      length B16;
0144     CARD16      majorVersion B16;
0145     CARD16      minorVersion B16;
0146 } xRecordQueryVersionReq;
0147 #define sz_xRecordQueryVersionReq   8
0148 
0149 typedef struct
0150 {
0151     CARD8   type;
0152     CARD8   pad0;
0153     CARD16  sequenceNumber B16;
0154     CARD32  length   B32;
0155     CARD16  majorVersion B16;
0156     CARD16  minorVersion B16;
0157     CARD32  pad1     B32;
0158     CARD32  pad2     B32;
0159     CARD32  pad3     B32;
0160     CARD32  pad4     B32;
0161     CARD32  pad5     B32;
0162  } xRecordQueryVersionReply;
0163 #define sz_xRecordQueryVersionReply     32
0164 
0165 /*
0166  * Create RC
0167  */
0168 typedef struct
0169 {
0170     CARD8           reqType;
0171     CARD8           recordReqType;
0172     CARD16          length B16;
0173     RECORD_RC       context B32;
0174     RECORD_ELEMENT_HEADER elementHeader;
0175     CARD8       pad;
0176     CARD16      pad0 B16;
0177     CARD32      nClients B32;
0178     CARD32              nRanges B32;
0179 /* LISTofRECORD_CLIENTSPEC */
0180 /* LISTofRECORDRANGE */
0181 } xRecordCreateContextReq;
0182 #define sz_xRecordCreateContextReq  20
0183 
0184 /*
0185  * Add to  RC
0186  */
0187 typedef struct
0188 {
0189     CARD8           reqType;
0190     CARD8           recordReqType;
0191     CARD16          length B16;
0192     RECORD_RC       context B32;
0193     RECORD_ELEMENT_HEADER elementHeader;
0194     CARD8       pad;
0195     CARD16      pad0 B16;
0196     CARD32      nClients B32;
0197     CARD32              nRanges B32;
0198 /* LISTofRECORD_CLIENTSPEC */
0199 /* LISTofRECORDRANGE */
0200 } xRecordRegisterClientsReq;
0201 #define sz_xRecordRegisterClientsReq    20
0202 
0203 /*
0204  * Delete from RC
0205  */
0206 typedef struct
0207 {
0208     CARD8           reqType;
0209     CARD8           recordReqType;
0210     CARD16          length B16;
0211     RECORD_RC       context B32;
0212     CARD32      nClients B32;
0213 /* LISTofRECORD_CLIENTSPEC */
0214 } xRecordUnregisterClientsReq;
0215 #define sz_xRecordUnregisterClientsReq  12
0216 
0217 /*
0218  * Query RC
0219  */
0220 typedef struct
0221 {
0222     CARD8       reqType;
0223     CARD8       recordReqType;
0224     CARD16      length B16;
0225     RECORD_RC   context B32;
0226 } xRecordGetContextReq;
0227 #define sz_xRecordGetContextReq         8
0228 
0229 typedef struct
0230 {
0231     CARD8       type;
0232     BOOL        enabled;
0233     CARD16      sequenceNumber B16;
0234     CARD32      length   B32;
0235     RECORD_ELEMENT_HEADER  elementHeader;
0236     CARD8   pad;
0237     CARD16  pad0 B16;
0238     CARD32      nClients B32;
0239     CARD32      pad1 B32;
0240     CARD32      pad2 B32;
0241     CARD32      pad3 B32;
0242     CARD32      pad4 B32;
0243 /* LISTofCLIENT_INFO */         /* intercepted-clients */
0244 } xRecordGetContextReply;
0245 #define sz_xRecordGetContextReply   32
0246 
0247 /*
0248  * Enable data interception
0249  */
0250 typedef struct
0251 {
0252     CARD8       reqType;
0253     CARD8       recordReqType;
0254     CARD16      length B16;
0255     RECORD_RC   context B32;
0256 } xRecordEnableContextReq;
0257 #define sz_xRecordEnableContextReq  8
0258 
0259 typedef struct
0260 {
0261     CARD8       type;
0262     CARD8       category;
0263     CARD16      sequenceNumber B16;
0264     CARD32      length B32;
0265     RECORD_ELEMENT_HEADER  elementHeader;
0266     BOOL        clientSwapped;
0267     CARD16      pad1 B16;
0268     RECORD_XIDBASE  idBase B32;
0269     CARD32      serverTime B32;
0270     CARD32      recordedSequenceNumber B32;
0271     CARD32      pad3 B32;
0272     CARD32      pad4 B32;
0273     /* BYTE     data; */
0274 } xRecordEnableContextReply;
0275 #define sz_xRecordEnableContextReply    32
0276 
0277 /*
0278  * Disable data interception
0279  */
0280 typedef struct
0281 {
0282     CARD8       reqType;
0283     CARD8       recordReqType;
0284     CARD16      length B16;
0285     RECORD_RC   context B32;
0286 } xRecordDisableContextReq;
0287 #define sz_xRecordDisableContextReq 8
0288 
0289 /*
0290  * Free RC
0291  */
0292 typedef struct
0293 {
0294     CARD8       reqType;
0295     CARD8       recordReqType;
0296     CARD16      length B16;
0297     RECORD_RC   context B32;
0298 } xRecordFreeContextReq;
0299 #define sz_xRecordFreeContextReq    8
0300 
0301 #undef RECORD_RC
0302 #undef RECORD_XIDBASE
0303 #undef RECORD_ELEMENT_HEADER
0304 #undef RECORD_CLIENTSPEC
0305 
0306 #endif