Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
DISCONTINUED:openSUSE:11.1:Update
xorg-x11-driver-input
xf86-input-elographics-1.2.2-commit-bf0e1bf.diff
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File xf86-input-elographics-1.2.2-commit-bf0e1bf.diff of Package xorg-x11-driver-input
diff --git a/man/elographics.man b/man/elographics.man index f47aaa1..8dac6b5 100644 --- a/man/elographics.man +++ b/man/elographics.man @@ -1,4 +1,3 @@ -.\" $XFree86: xc/programs/Xserver/hw/xfree86/input/elographics/elographics.man,v 1.1 2001/01/24 00:06:36 dawes Exp $ .\" shorthand for double quote that works everywhere. .ds q \N'34' .TH elographics __drivermansuffix__ __vendorversion__ diff --git a/src/xf86Elo.c b/src/xf86Elo.c index c107927..dfb05d1 100644 --- a/src/xf86Elo.c +++ b/src/xf86Elo.c @@ -1,7 +1,6 @@ -/* $XConsortium: xf86Elo.c /main/13 1996/10/25 14:11:31 kaleb $ */ /* * Copyright 1995, 1999 by Patrick Lecoanet, France. <lecoanet@cena.dgac.fr> - * + * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that * the above copyright notice appear in all copies and that both that @@ -10,8 +9,8 @@ * advertising or publicity pertaining to distribution of the software without * specific, written prior permission. Patrick Lecoanet makes no * representations about the suitability of this software for any purpose. It - * is provided "as is" without express or implied warranty. - * + * is provided "as is" without express or implied warranty. + * * PATRICK LECOANET DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO * EVENT SHALL PATRICK LECOANET BE LIABLE FOR ANY SPECIAL, INDIRECT OR @@ -22,8 +21,6 @@ * */ -/* $XFree86: xc/programs/Xserver/hw/xfree86/input/elographics/xf86Elo.c,v 1.13 2001/04/01 14:00:13 tsi Exp $ */ - /* ******************************************************************************* ******************************************************************************* @@ -34,7 +31,7 @@ * SUPPORT FOR E281-2310 and compatible controllers added with help of: * 1996/01/17 Juergen P. Meier (jpm@mailserv.rz.fh-muenchen.de) and * 1998/03/25 G.Felkel@edelmann.de - * + * * The E281-2310 is a somewhat lobotomized 2210. * It does not support the c,g,h,k,l,p,q,s and t commands. * Especially the P command, which is used to check the baud rate. @@ -50,12 +47,8 @@ #include "config.h" #endif -#include "xf86Version.h" -#if XF86_VERSION_CURRENT >= XF86_VERSION_NUMERIC(3,9,0,0,0) -#define XFREE86_V4 -#endif +#include "xorgVersion.h" -#ifdef XFREE86_V4 #ifndef XFree86LOADER #include <unistd.h> @@ -72,134 +65,6 @@ #include "xf86Module.h" #endif -#else /* XFREE86_V4 */ - -#include <X11/Xos.h> -#include <signal.h> -#include <stdio.h> - -#define NEED_EVENTS -#include <X11/X.h> -#include <X11/Xproto.h> -#include "inputstr.h" -#include "scrnintstr.h" -#include <X11/extensions/XI.h> -#include <X11/extensions/XIproto.h> - -#if defined(sun) && !defined(i386) -#include <errno.h> -#include <termio.h> -#include <fcntl.h> -#include <ctype.h> - -#include "extio.h" -#else /* defined(sun) && !defined(i386) */ -#include "compiler.h" - -#include "xf86.h" -#include "xf86Procs.h" -#include "xf86_OSlib.h" -#include "xf86_Config.h" -#include "xf86Xinput.h" -#endif /* defined(sun) && !defined(i386) */ - -#if !defined(sun) || defined(i386) -#include "os.h" -#include "osdep.h" -#include "exevents.h" - -#include "extnsionst.h" -#include "extinit.h" -#endif /* !defined(sun) || defined(i386) */ - -#endif /* XFREE86_V4 */ - - -#ifndef XFREE86_V4 -#if !defined(sun) || defined(i386) -/* - *************************************************************************** - * - * Configuration descriptor. - * - *************************************************************************** - */ - -#define PORT 1 -#define ELO_DEVICE_NAME 2 -#define SCREEN_NO 3 -#define UNTOUCH_DELAY 4 -#define REPORT_DELAY 5 -#define MAXX 6 -#define MAXY 7 -#define MINX 8 -#define MINY 9 -#define DEBUG_LEVEL 10 -#define HISTORY_SIZE 11 -#define LINK_SPEED 12 -#define ALWAYS_CORE 13 -#define SWAP_AXES 14 -#define PORTRAIT_MODE 15 - -static SymTabRec EloTab[] = { - { ENDSUBSECTION, "endsubsection" }, - { PORT, "port" }, - { ELO_DEVICE_NAME, "devicename" }, - { SCREEN_NO, "screenno" }, - { UNTOUCH_DELAY, "untouchdelay" }, - { REPORT_DELAY, "reportdelay"}, - { MAXX, "maximumxposition" }, - { MAXY, "maximumyposition" }, - { MINX, "minimumxposition" }, - { MINY, "minimumyposition" }, - { DEBUG_LEVEL, "debuglevel" }, - { HISTORY_SIZE, "historysize" }, - { LINK_SPEED, "linkspeed" }, - { ALWAYS_CORE, "alwayscore" }, - { SWAP_AXES, "swapxy" }, - { PORTRAIT_MODE, "portraitmode" }, - { -1, "" }, -}; - -#define LS300 1 -#define LS1200 2 -#define LS2400 3 -#define LS9600 4 -#define LS19200 5 - -static SymTabRec LinkSpeedTab[] = { - { LS300, "b300" }, - { LS1200, "b1200" }, - { LS2400, "b2400" }, - { LS9600, "b9600" }, - { LS19200, "b19200" } -}; -#endif /* !defined(sun) || defined(i386) */ - -/* - * This struct connects a line speed with - * a compatible motion packet delay. The - * driver will attempt to enforce a correct - * delay (according to this table) in order to - * avoid losing data in the touchscreen controller. - * LinkSpeedValues should be kept in sync with - * LinkSpeedTab. - */ -typedef struct { - int speed; - int delay; -} LinkParameterStruct; - -static LinkParameterStruct LinkSpeedValues[] = { - { B300, 32 }, - { B1200, 8 }, - { B2400, 4 }, - { B9600, 1 }, - { B19200, 0 } -}; -#endif /* XFREE86_V4 */ - - /* *************************************************************************** * @@ -287,7 +152,6 @@ static int debug_level = 0; #define DBG(lvl, f) #endif -#ifdef XFREE86_V4 #undef SYSCALL #undef read #undef write @@ -296,7 +160,6 @@ static int debug_level = 0; #define read(fd, ptr, num) xf86ReadSerial(fd, ptr, num) #define write(fd, ptr, num) xf86WriteSerial(fd, ptr, num) #define close(fd) xf86CloseSerial(fd) -#endif /* @@ -314,9 +177,6 @@ typedef struct _EloPrivateRec { int max_y; /* Maximum y */ int untouch_delay; /* Delay before reporting an untouch (in ms) */ int report_delay; /* Delay between touch report packets */ -#ifndef XFREE86_V4 - int link_speed; /* Speed of the RS232 link connecting the ts. */ -#endif int screen_no; /* Screen associated with the device */ int screen_width; /* Width of the associated X screen */ int screen_height; /* Height of the screen */ @@ -328,262 +188,6 @@ typedef struct _EloPrivateRec { unsigned char packet_buf[ELO_PACKET_SIZE]; /* Assembly buffer */ } EloPrivateRec, *EloPrivatePtr; - -#ifndef XFREE86_V4 -#if !defined(sun) || defined(i386) -/* - *************************************************************************** - * - * xf86EloConfig -- - * Configure the driver from the configuration data. - * - *************************************************************************** - */ -static Bool -xf86EloConfig(LocalDevicePtr *array, - int inx, - int max, - LexPtr val) -{ - LocalDevicePtr local = array[inx]; - EloPrivatePtr priv = (EloPrivatePtr)(local->private); - int token; - int portrait=0; - - while ((token = xf86GetToken(EloTab)) != ENDSUBSECTION) { - switch(token) { - - case PORT: - if (xf86GetToken(NULL) != STRING) { - xf86ConfigError("Elographics input port expected"); - } - priv->input_dev = strdup(val->str); - if (xf86Verbose) { - ErrorF("%s Elographics input port: %s\n", - XCONFIG_GIVEN, priv->input_dev); - } - break; - - case ELO_DEVICE_NAME: - if (xf86GetToken(NULL) != STRING) { - xf86ConfigError("Elographics device name expected"); - } - local->name = strdup(val->str); - if (xf86Verbose) { - ErrorF("%s Elographics X device name: %s\n", - XCONFIG_GIVEN, local->name); - } - break; - - case SCREEN_NO: - if (xf86GetToken(NULL) != NUMBER) { - xf86ConfigError("Elographics screen number expected"); - } - priv->screen_no = val->num; - if (xf86Verbose) { - ErrorF("%s Elographics associated screen: %d\n", - XCONFIG_GIVEN, priv->screen_no); - } - break; - - case UNTOUCH_DELAY: - if (xf86GetToken(NULL) != NUMBER) { - xf86ConfigError("Elographics untouch delay expected"); - } - priv->untouch_delay = val->num; - if (xf86Verbose) { - ErrorF("%s Elographics untouch delay: %d ms\n", - XCONFIG_GIVEN, priv->untouch_delay*10); - } - break; - - case REPORT_DELAY: - if (xf86GetToken(NULL) != NUMBER) { - xf86ConfigError("Elographics report delay expected"); - } - priv->report_delay = val->num; - if (xf86Verbose) { - ErrorF("%s Elographics report delay: %d ms\n", - XCONFIG_GIVEN, priv->report_delay*10); - } - break; - - case LINK_SPEED: - { - int ltoken = xf86GetToken(LinkSpeedTab); - if (ltoken == EOF || - ltoken == STRING || - ltoken == NUMBER) { - xf86ConfigError("Elographics link speed expected"); - } - priv->link_speed = LinkSpeedValues[ltoken-1].speed; - if (xf86Verbose) { - ErrorF("%s Elographics link speed: %s bps\n", - XCONFIG_GIVEN, (LinkSpeedTab[ltoken-1].name)+1); - } - } - break; - - case MAXX: - if (xf86GetToken(NULL) != NUMBER) { - xf86ConfigError("Elographics maximum x position expected"); - } - priv->max_x = val->num; - if (xf86Verbose) { - ErrorF("%s Elographics maximum x position: %d\n", - XCONFIG_GIVEN, priv->max_x); - } - break; - - case MAXY: - if (xf86GetToken(NULL) != NUMBER) { - xf86ConfigError("Elographics maximum y position expected"); - } - priv->max_y = val->num; - if (xf86Verbose) { - ErrorF("%s Elographics maximum y position: %d\n", - XCONFIG_GIVEN, priv->max_y); - } - break; - - case MINX: - if (xf86GetToken(NULL) != NUMBER) { - xf86ConfigError("Elographics minimum x position expected"); - } - priv->min_x = val->num; - if (xf86Verbose) { - ErrorF("%s Elographics minimum x position: %d\n", - XCONFIG_GIVEN, priv->min_x); - } - break; - - case MINY: - if (xf86GetToken(NULL) != NUMBER) { - xf86ConfigError("Elographics minimum y position expected"); - } - priv->min_y = val->num; - if (xf86Verbose) { - ErrorF("%s Elographics minimum y position: %d\n", - XCONFIG_GIVEN, priv->min_y); - } - break; - - case DEBUG_LEVEL: - if (xf86GetToken(NULL) != NUMBER) { - xf86ConfigError("Elographics driver debug level expected"); - } - debug_level = val->num; - if (xf86Verbose) { -#if DEBUG - ErrorF("%s Elographics debug level sets to %d\n", XCONFIG_GIVEN, - debug_level); -#else - ErrorF("%s Elographics debug not available\n", - XCONFIG_GIVEN, debug_level); -#endif - } - break; - - case HISTORY_SIZE: - if (xf86GetToken(NULL) != NUMBER) { - xf86ConfigError("Elographics motion history size expected"); - } - local->history_size = val->num; - if (xf86Verbose) { - ErrorF("%s EloGraphics motion history size is %d\n", XCONFIG_GIVEN, - local->history_size); - } - break; - - case ALWAYS_CORE: - xf86AlwaysCore(local, TRUE); - if (xf86Verbose) { - ErrorF("%s Elographics device will always stays core pointer\n", - XCONFIG_GIVEN); - } - break; - - case SWAP_AXES: - priv->swap_axes = 1; - if (xf86Verbose) { - ErrorF("%s Elographics device will work with X and Y axes swapped\n", - XCONFIG_GIVEN); - } - break; - - case PORTRAIT_MODE: - if (xf86GetToken(NULL) != STRING) { - portrait_mode_err: - xf86ConfigError("Elographics portrait mode should be: Portrait, Landscape or PortraitCCW"); - } - if (strcmp(val->str, "portrait") == 0) { - portrait = 1; - } - else if (strcmp(val->str, "portraitccw") == 0) { - portrait = -1; - } - else if (strcmp(val->str, "landscape") != 0) { - goto portrait_mode_err; - } - if (xf86Verbose) { - ErrorF("%s Elographics device will work in %s mode\n", - XCONFIG_GIVEN, val->str); - } - break; - - case EOF: - FatalError("Unexpected EOF (missing EndSubSection)"); - break; - - default: - xf86ConfigError("Elographics subsection keyword expected"); - break; - } - } - - if (priv->max_x - priv->min_x <= 0) { - ErrorF("%s Elographics: reverse x mode (minimum x position >= maximum x position)\n", - XCONFIG_GIVEN); - } - if (priv->max_y - priv->min_y <= 0) { - ErrorF("%s Elographics: reverse y mode (minimum y position >= maximum y position)\n", - XCONFIG_GIVEN); - } - /* - * The portrait adjustments need to be done after axis reversing - * and axes swap. This way the driver can cope with deffective - * hardware and still do the correct processing depending on the - * actual display orientation. - */ - if (portrait == 1) { - /* - * Portrait Clockwise: reverse Y axis and exchange X and Y. - */ - int tmp; - tmp = priv->min_y; - priv->min_y = priv->max_y; - priv->max_y = tmp; - priv->swap_axes = (priv->swap_axes==0) ? 1 : 0; - } - else if (portrait == -1) { - /* - * Portrait Counter Clockwise: reverse X axis and exchange X and Y. - */ - int tmp; - tmp = priv->min_x; - priv->min_x = priv->max_x; - priv->max_x = tmp; - priv->swap_axes = (priv->swap_axes==0) ? 1 : 0; - } - - DBG(2, ErrorF("xf86EloConfig port name=%s\n", priv->input_dev)) - - return Success; -} -#endif -#endif - - /* *************************************************************************** * @@ -620,7 +224,7 @@ xf86EloGetPacket(unsigned char *buffer, DBG(4, ErrorF("Entering xf86EloGetPacket with checksum == %d and buffer_p == %d\n", *checksum, *buffer_p)); - + /* * Try to read enough bytes to fill up the packet buffer. */ @@ -638,7 +242,7 @@ xf86EloGetPacket(unsigned char *buffer, return !Success; } DBG(4, ErrorF("Read %d bytes\n", num_bytes)); - + while (num_bytes) { /* * Sync with the start of a packet. @@ -678,7 +282,7 @@ xf86EloGetPacket(unsigned char *buffer, ErrorF("Checksum error on Elographics touchscreen link\n"); return !Success; } - + /* * Valid packet received report it. */ @@ -716,7 +320,7 @@ xf86EloConvert(LocalDevicePtr local, int width = priv->max_x - priv->min_x; int height = priv->max_y - priv->min_y; int input_x, input_y; - + if (first != 0 || num != 2) { return FALSE; } @@ -738,21 +342,19 @@ xf86EloConvert(LocalDevicePtr local, *y = (priv->screen_height - (priv->screen_height * (input_y - priv->min_y)) / height); - /* + /* * MHALAS: Based on the description in xf86XInputSetScreen * this code must be called from ReadInput BEFORE any events * are posted but this method is called FROM xf86PostMotionEvent * Therefore I have moved this method into xf86EloReadInput */ -#ifdef XFREE86_V4 /* * Need to check if still on the correct screen. * This call is here so that this work can be done after * calib and before posting the event. */ /* xf86XInputSetScreen(local, priv->screen_no, *x, *y); */ -#endif - + DBG(3, ErrorF("EloConvert: Screen(%d) - x(%d), y(%d)\n", priv->screen_no, *x, *y)); return TRUE; @@ -790,7 +392,7 @@ xf86EloReadInput(LocalDevicePtr local) EloPrivatePtr priv = (EloPrivatePtr)(local->private); int cur_x, cur_y; int state; -#ifdef XFREE86_V4 +#if GET_ABI_MAJOR(XINPUT_ABI) == 0 int first = 0; /* since convert is expecting 0 */ int num = 2; /* since convert is expecting 0 */ int v0 = 0; /* = cur_x - based on the debug output this is what v0 is */ @@ -799,18 +401,19 @@ xf86EloReadInput(LocalDevicePtr local) int v3 = 0; /* not used in convert */ int v4 = 0; /* not used in convert */ int v5 = 0; /* not used in convert */ - int x; /* output */ - int y; /* output */ #endif DBG(4, ErrorF("Entering ReadInput\n")); /* * Try to get a packet. */ - while (xf86EloGetPacket(priv->packet_buf, + while (xf86WaitForInput(local->fd, ELO_MAX_WAIT/100) > 0) { + if(xf86EloGetPacket(priv->packet_buf, &priv->packet_buf_p, &priv->checksum, - local->fd) == Success) { + local->fd) != Success) + break; + /* * Process only ELO_TOUCHs here. */ @@ -821,31 +424,30 @@ xf86EloReadInput(LocalDevicePtr local) cur_x = WORD_ASSEMBLY(priv->packet_buf[3], priv->packet_buf[4]); cur_y = WORD_ASSEMBLY(priv->packet_buf[5], priv->packet_buf[6]); state = priv->packet_buf[2] & 0x07; - - /* +#if GET_ABI_MAJOR(XINPUT_ABI) == 0 + /* * MHALAS: Based on the description in xf86XInputSetScreen * this code must be called from ReadInput BEFORE any events * are posted but this method is called FROM xf86PostMotionEvent * Therefore I have moved this method into xf86EloReadInput */ -#ifdef XFREE86_V4 /* * Need to check if still on the correct screen. * This call is here so that this work can be done after * calib and before posting the event. */ - DBG(3, ErrorF("EloConvert Before Fix: Screen(%d) - x(%d), y(%d)\n", priv->screen_no, x, y)); + DBG(3, ErrorF("EloConvert Before Fix: Screen(%d) - x(%d), y(%d)\n", priv->screen_no, cur_x, cur_y)); v0 = cur_x; /* based on the debug output this is what v0 is */ - v1 = cur_y; /* based on the debug output this is what v0 is */ - /* + v1 = cur_y; /* based on the debug output this is what v1 is */ + /* * Use the conversion method to send correct coordinates * since it contains all necessary logic */ - xf86EloConvert(local, first, num, v0, v1, v2, v3, v4, v5, &x, &y); - DBG(3, ErrorF("EloConvert During Fix: Screen(%d) - x(%d), y(%d)\n", priv->screen_no, x, y)); - xf86XInputSetScreen(local, priv->screen_no, x, y); - DBG(3, ErrorF("EloConvert After Fix: Screen(%d) - x(%d), y(%d)\n", priv->screen_no, x, y)); + xf86EloConvert(local, first, num, v0, v1, v2, v3, v4, v5, &cur_x, &cur_y); + DBG(3, ErrorF("EloConvert During Fix: Screen(%d) - x(%d), y(%d)\n", priv->screen_no, cur_x, cur_y)); + xf86XInputSetScreen(local, priv->screen_no, cur_x, cur_y); + DBG(3, ErrorF("EloConvert After Fix: Screen(%d) - x(%d), y(%d)\n", priv->screen_no, cur_x, cur_y)); #endif /* @@ -855,13 +457,13 @@ xf86EloReadInput(LocalDevicePtr local) * location has changed as DIX assumes this. This is why we always * emit a motion, regardless of the kind of packet processed. */ - xf86PostMotionEvent(local->dev, TRUE, 0, 2, x, y); + xf86PostMotionEvent(local->dev, TRUE, 0, 2, cur_x, cur_y); /* * Emit a button press or release. */ if (state == ELO_PRESS || state == ELO_RELEASE) { - xf86PostButtonEvent(local->dev, TRUE, 1, state == ELO_PRESS, 0, 2, x, y); + xf86PostButtonEvent(local->dev, TRUE, 1, state == ELO_PRESS, 0, 2, cur_x, cur_y); } DBG(3, ErrorF("TouchScreen: x(%d), y(%d), %s\n", @@ -925,24 +527,6 @@ xf86EloSendPacket(unsigned char *packet, * *************************************************************************** */ -#ifndef XFREE86_V4 -static int -xf86WaitForInput(int fd, - int timeout) -{ - fd_set readfds; - struct timeval to; - int r; - - FD_ZERO(&readfds); - FD_SET(fd, &readfds); - to.tv_sec = 0; - to.tv_usec = timeout; - - SYSCALL(r = select(FD_SETSIZE, &readfds, NULL, NULL, &to)); - return r; -} -#endif static Bool xf86EloWaitReply(unsigned char type, @@ -958,7 +542,7 @@ xf86EloWaitReply(unsigned char type, i = ELO_MAX_TRIALS; do { ok = !Success; - + /* * Wait half a second for the reply. The fuse counts down each * timeout and each wrong packet. @@ -979,7 +563,7 @@ xf86EloWaitReply(unsigned char type, else { DBG(3, ErrorF("No answer from link : %d\n", result)); } - + if (result == 0) { i--; } @@ -1041,7 +625,7 @@ xf86EloSendQuery(unsigned char *request, int fd) { Bool ok; - + if (xf86EloSendPacket(request, fd) == Success) { ok = xf86EloWaitReply(toupper(request[1]), reply, fd); if (ok == Success) { @@ -1090,7 +674,6 @@ static void xf86EloPrintIdent(unsigned char *packet, EloPrivatePtr priv) { -#ifdef XFREE86_V4 xf86Msg(X_PROBED, "Elographics touchscreen is a "); switch(packet[2]) { case '0': @@ -1128,7 +711,7 @@ xf86EloPrintIdent(unsigned char *packet, xf86Msg(X_NONE, "E271-2200"); } xf86Msg(X_NONE, ", firmware revision %d.%d.\n", packet[6], packet[5]); - + if (packet[4]) { xf86Msg(X_PROBED, " Additional features:\n"); if (packet[4] & 0x10) { @@ -1145,62 +728,6 @@ xf86EloPrintIdent(unsigned char *packet, } xf86Msg(X_NONE, "\n"); } -#else - ErrorF("%s Elographics touchscreen is a ", XCONFIG_PROBED); - switch(packet[2]) { - case '0': - ErrorF("AccuTouch"); - break; - case '1': - ErrorF("DuraTouch"); - break; - case '2': - ErrorF("Intellitouch"); - break; - } - ErrorF(", connected through a "); - switch(packet[3]) { - case '0': - ErrorF("serial link.\n"); - break; - case '1': - ErrorF("PC-Bus port.\n"); - break; - case '2': - ErrorF("Micro Channel port.\n"); - break; - } - ErrorF("%s The controller is a model ", XCONFIG_PROBED); - if (packet[8] & 1) { - if (priv->is_a_2310) { - ErrorF("E281-2310"); - } - else { - ErrorF("E271-2210"); - } - } - else { - ErrorF("E271-2200"); - } - ErrorF(", firmware revision %d.%d.\n", packet[6], packet[5]); - - if (packet[4]) { - ErrorF("%s Additional features:\n", XCONFIG_PROBED); - if (packet[4] & 0x10) { - ErrorF("%s External A/D converter\n", XCONFIG_PROBED); - } - if (packet[4] & 0x20) { - ErrorF("%s 32Ko RAM\n", XCONFIG_PROBED); - } - if (packet[4] & 0x40) { - ErrorF("%s RAM onboard\n", XCONFIG_PROBED); - } - if (packet[4] & 0x80) { - ErrorF("%s Z axis active\n", XCONFIG_PROBED); - } - ErrorF("\n"); - } -#endif } @@ -1241,75 +768,8 @@ xf86EloControl(DeviceIntPtr dev, case DEVICE_INIT: { -#if defined(sun) && !defined(i386) && !defined(XFREE86_V4) - char *name = (char *) getenv("ELO_DEV"); - char *calib = (char *) getenv("ELO_CALIB"); - char *speed = (char *) getenv("ELO_SPEED"); - char *delays = (char *) getenv("ELO_DELAYS"); -#endif - DBG(2, ErrorF("Elographics touchscreen init...\n")); -#if defined(sun) && !defined(i386) && !defined(XFREE86_V4) - if (name) { - priv->input_dev = strdup(name); - ErrorF("Elographics touchscreen port changed to '%s'\n", - priv->input_dev); - } - if (calib) { - if (sscanf(calib, "%d %d %d %d", - &priv->min_x, &priv->max_x, - &priv->min_y, &priv->max_y) != 4) { - ErrorF("Incorrect syntax in ELO_CALIB\n"); - return !Success; - } - else if (priv->max_x <= priv->min_x || - priv->max_y <= priv->min_y) { - ErrorF("Bogus calibration data in ELO_CALIB\n"); - return !Success; - } - else { - ErrorF("Calibration will be done with:\n"); - ErrorF("x_min=%d, x_max=%d, y_min=%d, y_max=%d\n", - priv->min_x, priv->max_x, priv->min_y, priv->max_y); - } - } - if (speed) { - /* These tests should be kept in sync with the LinkSpeedValues - * array. */ - if (strcmp(speed, "B9600") == 0) { - priv->link_speed = B9600; - } - else if (strcmp(speed, "B19200") == 0) { - priv->link_speed = B19200; - } - else if (strcmp(speed, "B2400") == 0) { - priv->link_speed = B2400; - } - else if (strcmp(speed, "B1200") == 0) { - priv->link_speed = B1200; - } - else if (strcmp(speed, "B300") == 0) { - priv->link_speed = B300; - } - else { - ErrorF("Bogus speed value in ELO_SPEED\n"); - return !Success; - } - } - if (delays) { - if (sscanf(delays, "%d %d", - &priv->untouch_delay, - &priv->report_delay) != 2) { - ErrorF("Bogus delays data in ELO_DELAYS\n"); - } - else { - ErrorF("Untouch delay will be: %d\n", priv->untouch_delay); - ErrorF("Report delay will be: %d\n", priv->report_delay); - } - } -#endif - if (priv->screen_no >= screenInfo.numScreens || priv->screen_no < 0) { priv->screen_no = 0; @@ -1324,7 +784,7 @@ xf86EloControl(DeviceIntPtr dev, ErrorF("Unable to allocate Elographics touchscreen ButtonClassDeviceStruct\n"); return !Success; } - + if (InitFocusClassDeviceStruct(dev) == FALSE) { ErrorF("Unable to allocate Elographics touchscreen FocusClassDeviceStruct\n"); return !Success; @@ -1332,7 +792,7 @@ xf86EloControl(DeviceIntPtr dev, if (InitPtrFeedbackClassDeviceStruct(dev, xf86EloPtrControl) == FALSE) { ErrorF("unable to init ptr feedback\n"); return !Success; - } + } /* * Device reports motions on 2 axes in absolute coordinates. * Axes min and max values are reported in raw coordinates. @@ -1363,56 +823,28 @@ xf86EloControl(DeviceIntPtr dev, if (InitFocusClassDeviceStruct(dev) == FALSE) { ErrorF("Unable to allocate Elographics touchscreen FocusClassDeviceStruct\n"); } - + /* * Allocate the motion events buffer. */ xf86MotionHistoryAllocate(local); - - /* - * This once has caused the server to crash after doing an xalloc & strcpy ?? - */ -#ifndef XFREE86_V4 - AssignTypeAndName(dev, local->atom, local->name); -#endif - + + DBG(2, ErrorF("Done.\n")); return Success; } - + case DEVICE_ON: DBG(2, ErrorF("Elographics touchscreen on...\n")); if (local->fd < 0) { -#ifndef XFREE86_V4 - struct termios termios_tty; - int i, result; -#endif - + DBG(2, ErrorF("Elographics touchscreen opening : %s\n", priv->input_dev)); -#ifdef XFREE86_V4 local->fd = xf86OpenSerial(local->options); if (local->fd < 0) { Error("Unable to open Elographics touchscreen device"); return !Success; } -#else - SYSCALL(local->fd = open(priv->input_dev, O_RDWR|O_NDELAY, 0)); - if (local->fd < 0) { - Error("Unable to open Elographics touchscreen device"); - return !Success; - } - - DBG(3, ErrorF("Try to see if the link is at the specified rate\n")); - memset(&termios_tty, 0, sizeof(termios_tty)); - termios_tty.c_cflag = priv->link_speed | CS8 | CREAD | CLOCAL; - termios_tty.c_cc[VMIN] = 1; - SYSCALL(result = tcsetattr(local->fd, TCSANOW, &termios_tty)); - if (result < 0) { - Error("Unable to configure Elographics touchscreen port"); - goto not_success; - } -#endif /* * Try to see if the link is at the specified rate and * ask the controller to report various infos. @@ -1436,7 +868,7 @@ xf86EloControl(DeviceIntPtr dev, ErrorF("Unable to ask Elographics touchscreen identification\n"); goto not_success; } - + /* * Set the operating mode: Stream, no scaling, no calibration, * no range checking, no trim, tracking enabled. @@ -1450,21 +882,6 @@ xf86EloControl(DeviceIntPtr dev, goto not_success; } -#ifndef XFREE86_V4 - /* - * Check if the report delay is compatible with the selected - * link speed and reset it otherwise. - */ - for (i = 0; i < sizeof(LinkSpeedValues)/sizeof(LinkParameterStruct); i++) { - if (LinkSpeedValues[i].speed == priv->link_speed) { - if (LinkSpeedValues[i].delay > priv->report_delay) { - ErrorF("Changing report delay from %d ms to %d ms to comply with link speed\n", - priv->report_delay*10, LinkSpeedValues[i].delay*10); - priv->report_delay = LinkSpeedValues[i].delay; - } - } - } -#endif /* * Set the touch reports timings from configuration data. */ @@ -1480,17 +897,13 @@ xf86EloControl(DeviceIntPtr dev, local->fd = -1; return !Success; } -#ifdef XFREE86_V4 xf86AddEnabledDevice(local); -#else - AddEnabledDevice(local->fd); -#endif - dev->public.on = TRUE; + dev->public.on = TRUE; } - + DBG(2, ErrorF("Done\n")); return Success; - + /* * Deactivate the device. After this, the device will not emit * events until a subsequent DEVICE_ON. Thus, we can momentarily @@ -1500,17 +913,13 @@ xf86EloControl(DeviceIntPtr dev, DBG(2, ErrorF("Elographics touchscreen off...\n")); dev->public.on = FALSE; if (local->fd >= 0) { -#ifdef XFREE86_V4 xf86RemoveEnabledDevice(local); -#else - RemoveEnabledDevice(local->fd); -#endif } SYSCALL(close(local->fd)); local->fd = -1; DBG(2, ErrorF("Done\n")); return Success; - + /* * Final close before server exit. This is used during server shutdown. * Close the port and free all the resources. @@ -1519,11 +928,7 @@ xf86EloControl(DeviceIntPtr dev, DBG(2, ErrorF("Elographics touchscreen close...\n")); dev->public.on = FALSE; if (local->fd >= 0) { -#ifdef XFREE86_V4 xf86RemoveEnabledDevice(local); -#else - RemoveEnabledDevice(local->fd); -#endif } SYSCALL(close(local->fd)); local->fd = -1; @@ -1544,11 +949,7 @@ xf86EloControl(DeviceIntPtr dev, *************************************************************************** */ static LocalDevicePtr -#ifndef XFREE86_V4 -xf86EloAllocate(void) -#else -xf86EloAllocate(InputDriverPtr drv) -#endif +xf86EloAllocate(InputDriverPtr drv) { LocalDevicePtr local; EloPrivatePtr priv; @@ -1557,23 +958,14 @@ xf86EloAllocate(InputDriverPtr drv) if (!priv) return NULL; -#ifndef XFREE86_V4 - local = (LocalDevicePtr) xalloc(sizeof(LocalDeviceRec)); -#else local = xf86AllocateInput(drv, 0); -#endif if (!local) { xfree(priv); return NULL; } - -#ifdef XFREE86_V4 + priv->input_dev = strdup(ELO_PORT); -#else - priv->input_dev = ELO_PORT; - priv->link_speed = ELO_LINK_SPEED; -#endif priv->min_x = 0; priv->max_x = 3000; priv->min_y = 0; @@ -1591,11 +983,6 @@ xf86EloAllocate(InputDriverPtr drv) local->name = XI_TOUCHSCREEN; local->flags = 0 /* XI86_NO_OPEN_ON_INIT */; -#ifndef XFREE86_V4 -#if !defined(sun) || defined(i386) - local->device_config = xf86EloConfig; -#endif -#endif local->device_control = xf86EloControl; local->read_input = xf86EloReadInput; local->control_proc = NULL; @@ -1609,52 +996,10 @@ xf86EloAllocate(InputDriverPtr drv) local->private = priv; local->type_name = "Elographics TouchScreen"; local->history_size = 0; - - return local; -} - -#ifndef XFREE86_V4 -/* - *************************************************************************** - * - * Elographics device association -- - * - *************************************************************************** - */ -DeviceAssocRec elographics_assoc = -{ - "elographics", /* config_section_name */ - xf86EloAllocate /* device_allocate */ -}; -#ifdef DYNAMIC_MODULE -/* - *************************************************************************** - * - * entry point of dynamic loading - * - *************************************************************************** - */ -int -#ifndef DLSYM_BUG -init_module(unsigned long server_version) -#else -init_xf86Elo(unsigned long server_version) -#endif -{ - xf86AddDeviceAssoc(&elographics_assoc); - - if (server_version != XF86_VERSION_CURRENT) { - ErrorF("Warning: Elographics module compiled for version%s\n", XF86_VERSION); - return 0; - } - else { - return 1; - } + return local; } -#endif -#else /* XFREE86_V4 */ static void xf86EloUninit(InputDriverPtr drv, @@ -1662,7 +1007,7 @@ xf86EloUninit(InputDriverPtr drv, int flags) { EloPrivatePtr priv = (EloPrivatePtr) local->private; - + xf86EloControl(local->dev, DEVICE_OFF); xfree(priv->input_dev); @@ -1694,14 +1039,14 @@ xf86EloInit(InputDriverPtr drv, char *str; int portrait = 0; int height, width; - + local = xf86EloAllocate(drv); if (!local) { return NULL; } priv = local->private; local->conf_idev = dev; - + xf86CollectInputOptions(local, default_options, NULL); /* Process the common options. */ xf86ProcessCommonOptions(local, local->options); @@ -1721,9 +1066,9 @@ xf86EloInit(InputDriverPtr drv, priv->input_dev = strdup(str); local->name = xf86SetStrOption(local->options, "DeviceName", XI_TOUCHSCREEN); - xf86Msg(X_CONFIG, "Elographics X device name: %s\n", local->name); + xf86Msg(X_CONFIG, "Elographics X device name: %s\n", local->name); priv->screen_no = xf86SetIntOption(local->options, "ScreenNo", 0); - xf86Msg(X_CONFIG, "Elographics associated screen: %d\n", priv->screen_no); + xf86Msg(X_CONFIG, "Elographics associated screen: %d\n", priv->screen_no); priv->untouch_delay = xf86SetIntOption(local->options, "UntouchDelay", ELO_UNTOUCH_DELAY); xf86Msg(X_CONFIG, "Elographics untouch delay: %d ms\n", priv->untouch_delay*10); priv->report_delay = xf86SetIntOption(local->options, "ReportDelay", ELO_REPORT_DELAY); @@ -1743,9 +1088,9 @@ xf86EloInit(InputDriverPtr drv, debug_level = xf86SetIntOption(local->options, "DebugLevel", 0); if (debug_level) { #if DEBUG - xf86Msg(X_CONFIG, "Elographics debug level sets to %d\n", debug_level); + xf86Msg(X_CONFIG, "Elographics debug level sets to %d\n", debug_level); #else - xf86Msg(X_INFO, "Elographics debug not available\n"); + xf86Msg(X_INFO, "Elographics debug not available\n"); #endif } str = xf86SetStrOption(local->options, "PortraitMode", "Landscape"); @@ -1759,7 +1104,7 @@ xf86EloInit(InputDriverPtr drv, xf86Msg(X_ERROR, "Elographics portrait mode should be: Portrait, Landscape or PortraitCCW"); str = "Landscape"; } - xf86Msg(X_CONFIG, "Elographics device will work in %s mode\n", str); + xf86Msg(X_CONFIG, "Elographics device will work in %s mode\n", str); width = priv->max_x - priv->min_x; height = priv->max_y - priv->min_y; @@ -1853,4 +1198,3 @@ static XF86ModuleVersionInfo version_rec = { _X_EXPORT XF86ModuleData elographicsModuleData = { &version_rec, Plug, Unplug }; #endif -#endif /* XFREE86_V4 */
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor