From: Ping Cheng Date: Wed, 7 May 2008 22:30:46 +0000 (-0700) Subject: Fixed Tablet PC baudrate 19200 issue. X-Git-Url: http://git.debian.org/?p=collab-maint%2Flinux-wacom.git;a=commitdiff_plain;h=12d6a464e4c57e04ea35a87279ae6ecd92e2f15a Fixed Tablet PC baudrate 19200 issue. --- diff --git a/src/util/xidump.c b/src/util/xidump.c index 47e6220..3f04923 100755 --- a/src/util/xidump.c +++ b/src/util/xidump.c @@ -2,7 +2,7 @@ ** xidump.c ** ** Copyright (C) 2003 - 2004 - John E. Joganic -** Copyright (C) 2004 - 2007 - Ping Cheng +** Copyright (C) 2004 - 2008 - Ping Cheng ** ** This program is free software; you can redistribute it and/or ** modify it under the terms of the GNU General Public License @@ -30,6 +30,7 @@ ** 2006-05-05 0.7.4 - Removed older 2.6 kernels ** 2006-07-19 0.7.5 - Support buttons and keys combined ** 2007-01-10 0.7.7 - Don't list uninitialized tools +** 2008-05-06 0.8.0 - Support Xorg 7.3 or later ** ****************************************************************************/ @@ -41,7 +42,7 @@ #include #include -#define XIDUMP_VERSION "0.7.7" +#define XIDUMP_VERSION "0.8.0" #include "../include/util-config.h" @@ -52,6 +53,7 @@ #include #include #include +#include enum { @@ -156,8 +158,14 @@ int ListDevices(Display* pDisp, const char* pszDeviceName) (pDev->use == 0) ? "disabled" : (pDev->use == IsXKeyboard) ? "keyboard" : (pDev->use == IsXPointer) ? "pointer" : - (pDev->use == IsXExtensionDevice) ? "extension" : - "unknown"); +#ifndef WCM_ISXEXTENSIONPOINTER + (pDev->use == IsXExtensionDevice) ? +#else + (pDev->use == IsXExtensionDevice || + pDev->use == IsXExtensionKeyboard || + pDev->use == IsXExtensionPointer) ? +#endif + "extension" : "unknown"); if (gnVerbose) { @@ -444,7 +452,7 @@ static int CursesRun(Display* pDisp, XDeviceInfo* pDevInfo, FORMATTYPE fmt) nTitleRow = nRow; if (pValInfo) { - snprintf(chBuf,sizeof(chBuf),"Valuators: %s ID: Undefined Serial Number: Undefined", + snprintf(chBuf,sizeof(chBuf),"Valuators: %s ID: Unreported Serial Number: Unreported", pValInfo->mode == Absolute ? "Absolute" : pValInfo->mode == Relative ? "Relative" : "Unknown"); wacscrn_output(nRow,0,chBuf); @@ -539,13 +547,21 @@ static int CursesRun(Display* pDisp, XDeviceInfo* pDevInfo, FORMATTYPE fmt) else { /* title value */ - int v = (pMove->axis_data[3]&0xffff0000) >> 16; snprintf(chBuf,sizeof(chBuf),"%s", pValInfo->mode == Absolute ? "Absolute" : pValInfo->mode == Relative ? "Relative" : "Unknown"); wacscrn_output(nTitleRow,11,chBuf); + + /* Device/tool ID can only be retrieved through the ToolID option + * of xsetwacom due to valuator backward compatibility concern + * + v = (pMove->axis_data[3]&0xffff0000) >> 16; snprintf(chBuf, sizeof(chBuf), "%10d", v); wacscrn_output(nTitleRow, 25, chBuf); + + * serial number can only be retrieved through the ToolSerial option + * of xsetwacom due to valuator backward compatibility concern + * v = (pMove->axis_data[4]&0xffff0000) | ((pMove->axis_data[5]&0xffff0000)>>16); if ( v ) @@ -553,6 +569,7 @@ static int CursesRun(Display* pDisp, XDeviceInfo* pDevInfo, FORMATTYPE fmt) snprintf(chBuf,sizeof(chBuf), "%12d", v); wacscrn_output(nTitleRow,52,chBuf); } + */ for (k=0; knum_axes && k<3; ++k) { diff --git a/src/wacomxi/wacomcpl-exec b/src/wacomxi/wacomcpl-exec index a60bc55..4b63eb6 100755 --- a/src/wacomxi/wacomcpl-exec +++ b/src/wacomxi/wacomcpl-exec @@ -192,7 +192,7 @@ proc calibrationSequence {which xDev yDev} { set type $getDeviceModel($device,type) if { ![ string compare $type "stylus" ] } { set eraser $getDeviceModel($device,eraser) - if { [ string compare $eraser $device ] } { + if { [ string compare $eraser $device ] && $eraser != "" } { updateXinitrc $eraser topx $xDevMin updateXinitrc $eraser topy $yDevMin updateXinitrc $eraser bottomx $xDevMax @@ -502,6 +502,10 @@ proc createDeviceList {} { grid .workingDev.sb -row 2 -sticky nse set flag 0 foreach dev $devices { + # initial related erasers for styli + set getDeviceModel($dev,eraser) "" + } + foreach dev $devices { .workingDev.list insert end $dev createScreenList $dev set type $getDeviceModel($dev,type) diff --git a/src/xdrv/wcmCommon.c b/src/xdrv/wcmCommon.c index 2568897..84de3e3 100755 --- a/src/xdrv/wcmCommon.c +++ b/src/xdrv/wcmCommon.c @@ -1597,7 +1597,8 @@ static void commonDispatchDevice(WacomCommonPtr common, unsigned int channel, if (priv->oldProximity) { - if (abs(filtered.distance - common->wcmMaxCursorDist) > common->wcmCursorProxoutDist) + if (abs(filtered.distance - common->wcmMaxCursorDist) + > common->wcmCursorProxoutDist) filtered.proximity = 0; } /* once it is out. Don't let it in until a hard in */ @@ -1694,10 +1695,10 @@ int xf86WcmInitTablet(LocalDevicePtr local, const char* id, float version) /* output tablet state as probed */ if (xf86Verbose) - ErrorF("%s Wacom %s tablet speed=%d maxX=%d maxY=%d maxZ=%d " + ErrorF("%s Wacom %s tablet speed=%d (%d) maxX=%d maxY=%d maxZ=%d " "resX=%d resY=%d tilt=%s\n", XCONFIG_PROBED, - model->name, common->wcmLinkSpeed, + model->name, common->wcmLinkSpeed, common->wcmISDV4Speed, common->wcmMaxX, common->wcmMaxY, common->wcmMaxZ, common->wcmResolX, common->wcmResolY, HANDLE_TILT(common) ? "enabled" : "disabled"); diff --git a/src/xdrv/wcmISDV4.c b/src/xdrv/wcmISDV4.c index 9c66110..cafdf08 100755 --- a/src/xdrv/wcmISDV4.c +++ b/src/xdrv/wcmISDV4.c @@ -71,7 +71,7 @@ static Bool isdv4Init(LocalDevicePtr local, char* id, float *version) DBG(1, priv->debugLevel, ErrorF("initializing ISDV4 tablet\n")); - /* Try 38400 first */ + /* Initial baudrate is 38400 */ if (xf86WcmSetSerialSpeed(local->fd, common->wcmISDV4Speed) < 0) return !Success; @@ -96,6 +96,8 @@ static int isdv4Query(LocalDevicePtr local, const char* query, char* data) WacomDevicePtr priv = (WacomDevicePtr)local->private; WacomCommonPtr common = priv->common; + DBG(1, priv->debugLevel, ErrorF("Querying ISDV4 tablet\n")); + /* Send stop command to the tablet */ err = xf86WcmWrite(local->fd, query, strlen(query)); if (err == -1) @@ -119,28 +121,22 @@ static int isdv4Query(LocalDevicePtr local, const char* query, char* data) /* Read the control data */ if (!xf86WcmWaitForTablet(local->fd, data, 11)) { - ErrorF("Wacom unable to read ISDV4 control data " - "after %d tries\n", MAXTRY); - return !Success; - } - - /* Control data bit check */ - if ( !(data[0] & 0x40) ) /* baudrate too high? */ - { /* Try 19200 now */ if (common->wcmISDV4Speed != 19200) { common->wcmISDV4Speed = 19200; - if(isdv4Init(local, NULL, NULL) != Success) + if (xf86WcmSetSerialSpeed(local->fd, common->wcmISDV4Speed) < 0) return !Success; - return isdv4GetRanges(local); + return isdv4Query(local, query, data); } else { - ErrorF("Wacom Query ISDV4 error magic error in %s query\n", query); + ErrorF("Wacom unable to read ISDV4 control data " + "after %d tries\n", MAXTRY); return !Success; } } + return Success; } @@ -231,6 +227,10 @@ static int isdv4GetRanges(LocalDevicePtr local) } } + DBG(2, priv->debugLevel, ErrorF("isdv4GetRanges speed=%d maxX=%d maxY=%d " + "maxZ=%d resX=%d resY=%d \n", common->wcmISDV4Speed, + common->wcmMaxX, common->wcmMaxY, common->wcmMaxZ, + common->wcmResolX, common->wcmResolY)); return Success; } diff --git a/src/xdrv/xf86Wacom.c b/src/xdrv/xf86Wacom.c index 28a4612..0d130f0 100755 --- a/src/xdrv/xf86Wacom.c +++ b/src/xdrv/xf86Wacom.c @@ -68,9 +68,10 @@ * 2008-02-27 47-pc0.7.9-8 - Support Cintiq 20 * 2008-03-07 47-pc0.7.9-9 - Support keystrokes in wacomcpl * 2008-04-07 47-pc0.7.9-11 - Synchronized databases + * 2008-05-06 47-pc0.8.0-1 - new release */ -static const char identification[] = "$Identification: 47-0.7.9-11 $"; +static const char identification[] = "$Identification: 47-0.8.0-1 $"; /****************************************************************************/