On Mon, Mar 21, 2011 at 05:56:09PM -0700, Ping Cheng wrote:
> Make them into the usb family and follow the style guide.
> Consolidate tool id for the existing tools into three defines.
> Update findDeviceType to cover more cases so it may be called
> by other routines to retrieve tool types.
>
> Signed-off-by: Ping Cheng <[email protected]>
merged, thanks.
Cheers,
Peter
> ---
> src/wcmUSB.c | 89 ++++++++++++++++++++++++++-------------------------------
> 1 files changed, 41 insertions(+), 48 deletions(-)
>
> diff --git a/src/wcmUSB.c b/src/wcmUSB.c
> index 06683dc..a2c01af 100644
> --- a/src/wcmUSB.c
> +++ b/src/wcmUSB.c
> @@ -919,55 +919,57 @@ static int usbFilterEvent(WacomCommonPtr common, struct
> input_event *event)
> return 0;
> }
>
> -static int idtotype(int id)
> +#define ERASER_BIT 0x008
> +#define PUCK_BITS 0xf00
> +#define PUCK_EXCEPTION 0x806
> +/**
> + * Decide the tool type by its id for protocol 5 devices
> + *
> + * @param id The tool id received from the kernel.
> + * @return The tool type associated with the tool id.
> + */
> +static int usbIdToType(int id)
> {
> - int type = CURSOR_ID;
> + int type = STYLUS_ID;
> +
> + /* The existing tool ids have the following patten: all pucks, except
> + * one, have the third byte set to zero; all erasers have the fourth
> + * bit set. The rest are styli.
> + */
> + if (id & ERASER_BIT)
> + type = ERASER_ID;
> + else if (!(id & PUCK_BITS) || (id == PUCK_EXCEPTION))
> + type = CURSOR_ID;
>
> - /* tools with id, such as Intuos series and Cintiq 21UX */
> - switch (id)
> - {
> - case 0x812: /* Inking pen */
> - case 0x801: /* Intuos3 Inking pen */
> - case 0x012:
> - case 0x822: /* Pen */
> - case 0x842:
> - case 0x852:
> - case 0x823: /* Intuos3 Grip Pen */
> - case 0x813: /* Intuos3 Classic Pen */
> - case 0x885: /* Intuos3 Marker Pen */
> - case 0x022:
> - case 0x832: /* Stroke pen */
> - case 0x032:
> - case 0xd12: /* Airbrush */
> - case 0x912:
> - case 0x112:
> - case 0x913: /* Intuos3 Airbrush */
> - type = STYLUS_ID;
> - break;
> - case 0x82a: /* Eraser */
> - case 0x85a:
> - case 0x91a:
> - case 0xd1a:
> - case 0x0fa:
> - case 0x82b: /* Intuos3 Grip Pen Eraser */
> - case 0x81b: /* Intuos3 Classic Pen Eraser */
> - case 0x91b: /* Intuos3 Airbrush Eraser */
> - type = ERASER_ID;
> - break;
> - }
> return type;
> }
>
> /**
> - * Identify the device type (STYLUS_ID, etc.) based on the device_id or the
> - * current tool serial number.
> + * Find the tool type (STYLUS_ID, etc.) based on or the current tool
> + * serial number if the device_id is unknown (0) or the device_id .
> + *
> + * @param ds The current device state received from the kernel.
> + * @return The tool type associated with the tool id or the current
> + * tool serial number.
> */
> -static int findDeviceType(const WacomCommonPtr common,
> +static int usbFindDeviceType(const WacomCommonPtr common,
> const WacomDeviceState *ds)
> {
> WacomToolPtr tool = NULL;
> int device_type = 0;
>
> + if (!ds->device_id && ds->serial_num)
> + {
> + for (tool = common->wcmTool; tool; tool = tool->next)
> + if (ds->serial_num == tool->serial)
> + {
> + device_type = tool->typeid;
> + break;
> + }
> + }
> +
> + if (device_type || !ds->device_id) return device_type;
> +
> switch (ds->device_id)
> {
> case STYLUS_DEVICE_ID:
> @@ -986,18 +988,9 @@ static int findDeviceType(const WacomCommonPtr common,
> device_type = PAD_ID;
> break;
> default:
> - device_type = idtotype(ds->device_id);
> + device_type = usbIdToType(ds->device_id);
> }
>
> - if (ds->serial_num)
> - {
> - for (tool = common->wcmTool; tool; tool = tool->next)
> - if (ds->serial_num == tool->serial)
> - {
> - device_type = tool->typeid;
> - break;
> - }
> - }
> return device_type;
> }
>
> @@ -1052,7 +1045,7 @@ static int usbParseAbsEvent(WacomCommonPtr common,
> if (event->value)
> {
> ds->device_id = event->value;
> - ds->device_type = findDeviceType(common, ds);
> + ds->device_type = usbFindDeviceType(common, ds);
> }
> break;
> default:
> --
> 1.7.4
------------------------------------------------------------------------------
Enable your software for Intel(R) Active Management Technology to meet the
growing manageability and security demands of your customers. Businesses
are taking advantage of Intel(R) vPro (TM) technology - will your software
be a part of the solution? Download the Intel(R) Manageability Checker
today! http://p.sf.net/sfu/intel-dev2devmar
_______________________________________________
Linuxwacom-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel