summaryrefslogtreecommitdiff
path: root/src/microtouch.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/microtouch.h')
-rw-r--r--src/microtouch.h144
1 files changed, 144 insertions, 0 deletions
diff --git a/src/microtouch.h b/src/microtouch.h
new file mode 100644
index 0000000..696b12e
--- /dev/null
+++ b/src/microtouch.h
@@ -0,0 +1,144 @@
+/*
+ * Copyright (c) 1998 Metro Link Incorporated
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
+ * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Except as contained in this notice, the name of the Metro Link shall not be
+ * used in advertising or otherwise to promote the sale, use or other dealings
+ * in this Software without prior written authorization from Metro Link.
+ *
+ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/input/microtouch/microtouch.h,v 1.4 2000/03/03 20:36:41 dawes Exp $ */
+
+#ifndef _microtouch_H_
+#define _microtouch_H_
+
+/******************************************************************************
+ * Definitions
+ * structs, typedefs, #defines, enums
+ *****************************************************************************/
+#define MuT_REPORT_SIZE 5 /* Size of a report packet. */
+#define MuT_BUFFER_SIZE 256 /* Size of input buffer. */
+#define MuT_PACKET_SIZE 10 /* Maximum size of a command/reply
+ * *including* */
+#define MuT_MAX_WRONG_PACKETS 20 /* Number of wrong packets to accept
+ * before giving up when looking for a
+ * specific packet type */
+#define MuT_MAX_EMPTY_PACKETS 5 /* Number of empty reads to accept before
+ * giving up when looking for a reply */
+#define MuT_RETRIES 3
+#define MuT_MAX_WAIT 100000 /* Max wait time for a reply
+ * (microsec) */
+
+ /* the leading and trailing bytes. */
+#define MuT_LEAD_BYTE 0x01 /* First byte of a command/reply packet.
+ * */
+#define MuT_TRAIL_BYTE 0x0D /* Last byte of a command/reply packet.
+ * */
+
+/*
+ * Commands.
+ */
+#define MuT_RESET "R" /* Reset the controller. */
+#define MuT_OUTPUT_IDENT "OI" /* Ask some infos about the firmware. */
+#define MuT_UNIT_TYPE "UT" /* Ask some more infos about the *
+ * firmware. */
+#define MuT_UNIT_VERIFY "UV" /* Ask some more infos about the *
+ * firmware. some hardware only supports
+ * * this version */
+#define MuT_ABDISABLE "AD" /* disable auto baud detection */
+#define MuT_SETRATE "PN812" /* set com parameters to
+ * 8,1,none,9600 */
+#define MuT_FORMAT_TABLET "FT" /* Report events using tablet format. */
+#define MuT_FINGER_ONLY "FO" /* Always send reports. */
+#define MuT_MODE_STREAM "MS" /* Receive reports in stream mode */
+#define MuT_PARAM_LOCK "PL" /* write settings to nvram */
+
+#define MuT_OK "0" /* Report success. */
+#define MuT_OK7 0xb0 /* 7bit Report success as seen in 8bit mode */
+#define MuT_ERROR "1" /* Report error. */
+#define MuT_ANY "" /* Accept any reply */
+
+#define MuT_TOUCH_PEN_IDENT "P5"
+#define MuT_SMT3_IDENT "Q1"
+#define MuT_GENERAL_IDENT "A3"
+
+#define MuT_CONTACT 0x40 /* Report touch/untouch with touchscreen. */
+
+#define ACK 0
+#define NACK -1
+#define TIMEOUT -2
+#define WRONG_PACKET -3
+
+typedef enum
+{
+ microtouch_normal, microtouch_body, mtouch_binary
+}
+MuTState;
+
+typedef struct _MuTPrivateRec
+{
+ int min_x; /* Minimum x reported by calibration */
+ int max_x; /* Maximum x */
+ int min_y; /* Minimum y reported by calibration */
+ int max_y; /* Maximum y */
+ Bool proximity; /* is the stylus in proximity */
+ Bool button_down; /* is the "button" currently down */
+ int button_number; /* which button to report */
+ int reporting_mode; /* TS_Raw or TS_Scaled */
+
+ int screen_num; /* Screen associated with the device */
+ int screen_width; /* Width of the associated X screen */
+ int screen_height; /* Height of the screen */
+ XISBuffer *buffer;
+ unsigned char packet[MuT_BUFFER_SIZE]; /* packet being/just read */
+ int packeti; /* index into packet */
+ Bool cs7flag;
+ Bool binary_pkt; /* indicates packet was a binary touch */
+
+ MuTState lex_mode;
+ int bin_byte; /* bytes recieved in binary packet */
+}
+MuTPrivateRec, *MuTPrivatePtr;
+
+/******************************************************************************
+ * Declarations
+ *****************************************************************************/
+/*int DumpOpts (XF86OptionPtr opts); */
+static Bool DeviceControl (DeviceIntPtr dev, int mode);
+static Bool DeviceOn (DeviceIntPtr dev);
+static Bool DeviceOff (DeviceIntPtr dev);
+static Bool DeviceInit (DeviceIntPtr dev);
+static void ReadInput (LocalDevicePtr local);
+static int ControlProc (LocalDevicePtr local, xDeviceCtl * control);
+static void CloseProc (LocalDevicePtr local);
+static int SwitchMode (ClientPtr client, DeviceIntPtr dev, int mode);
+static Bool ConvertProc (LocalDevicePtr local, int first, int num, int v0, int v1, int v2, int v3, int v4, int v5, int *x, int *y);
+static Bool xf86MuTSendCommand (unsigned char *type, MuTPrivatePtr priv);
+static Bool QueryHardware (LocalDevicePtr local);
+static void MuTNewPacket (MuTPrivatePtr priv);
+static Bool xf86MuTSendPacket (unsigned char *type, int len, MuTPrivatePtr priv);
+static int xf86MuTWaitReply (unsigned char *type, MuTPrivatePtr priv);
+static Bool MuTGetPacket (MuTPrivatePtr priv);
+static void xf86MuTPrintIdent (unsigned char *packet);
+static Bool xf86MuTPrintHwStatus (unsigned char *packet);
+/*
+ * DO NOT PUT ANYTHING AFTER THIS ENDIF
+ */
+#endif