1 /*
2  * Copyright (c) 1997-1999 by The XFree86 Project, Inc.
3  */
4 
5 #ifndef _X_MOUSEPRIV_H
6 #define _X_MOUSEPRIV_H
7 
8 #if 0
9 # define MOUSEINITDEBUG
10 # define MOUSEDATADEBUG
11 #endif
12 
13 #include "mouse.h"
14 #include "xf86Xinput.h"
15 /* Private interface for the mouse driver. */
16 
17 typedef enum  {
18     AUTOPROBE_H_NOPROTO,
19     AUTOPROBE_H_GOOD,
20     AUTOPROBE_H_AUTODETECT,
21     AUTOPROBE_H_VALIDATE1,
22     AUTOPROBE_H_VALIDATE2,
23     AUTOPROBE_H_SETPROTO,
24     AUTOPROBE_NOPROTO,
25     AUTOPROBE_COLLECT,
26     AUTOPROBE_CREATE_PROTOLIST,
27     AUTOPROBE_GOOD,
28     AUTOPROBE_AUTODETECT,
29     AUTOPROBE_VALIDATE1,
30     AUTOPROBE_VALIDATE2,
31     AUTOPROBE_SWITCHSERIAL,
32     AUTOPROBE_SWITCH_PROTOCOL
33 } mseAutoProbeStates;
34 
35 typedef struct {
36     const char *        name;
37     int                 class;
38     const char **       defaults;
39     MouseProtocolID     id;
40 } MouseProtocolRec, *MouseProtocolPtr;
41 
42 #define NUM_MSE_AUTOPROBE_BYTES 24  /* multiple of 3,4 and 6 byte packages */
43 #define NUM_MSE_AUTOPROBE_TOTAL 64
44 #define NUM_AUTOPROBE_PROTOS 17
45 
46 
47 typedef struct {
48     int         current;
49     Bool        inReset;
50     CARD32      lastEvent;
51     CARD32      expires;
52     Bool        soft;
53     int         goodCount;
54     int         badCount;
55     int         protocolID;
56     int         count;
57     char        data[NUM_MSE_AUTOPROBE_TOTAL];
58     mseAutoProbeStates autoState;
59     MouseProtocolID protoList[NUM_AUTOPROBE_PROTOS];
60     int         serialDefaultsNum;
61     int         prevDx, prevDy;
62     int         accDx, accDy;
63     int         acc;
64     CARD32      pnpLast;
65     Bool        disablePnPauto;
66 } mousePrivRec, *mousePrivPtr;
67 
68 /* mouse proto flags */
69 #define MPF_NONE                0x00
70 #define MPF_SAFE                0x01
71 
72 /* pnp.c */
73 MouseProtocolID MouseGetPnpProtocol(InputInfoPtr pInfo);
74 Bool ps2Reset(InputInfoPtr pInfo);
75 Bool ps2EnableDataReporting(InputInfoPtr pInfo);
76 Bool ps2SendPacket(InputInfoPtr pInfo, unsigned char *bytes, int len);
77 int ps2GetDeviceID(InputInfoPtr pInfo);
78 
79 #endif /* _X_MOUSE_H */
80