diff options
author | 2007-03-23 14:35:19 +0000 | |
---|---|---|
committer | 2007-03-23 14:35:19 +0000 | |
commit | 457d89f1a2eb7edd3082b8ca34213d8374d62eda (patch) | |
tree | 16d892c77bfb2dda5a3de8af037cb437147a1d2d | |
parent | Increase sensor polling interval to 30s, just like ntp polls. This (diff) | |
download | wireguard-openbsd-457d89f1a2eb7edd3082b8ca34213d8374d62eda.tar.xz wireguard-openbsd-457d89f1a2eb7edd3082b8ca34213d8374d62eda.zip |
the input length is different on the eGalax and ITM screens,
so let's adapt the code by specifing the corrent length and
and move the check to the correct place.
-rw-r--r-- | sys/dev/usb/uts.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/sys/dev/usb/uts.c b/sys/dev/usb/uts.c index ad4c229415d..7de16ae042a 100644 --- a/sys/dev/usb/uts.c +++ b/sys/dev/usb/uts.c @@ -1,4 +1,4 @@ -/* $OpenBSD: uts.c,v 1.1 2007/03/16 21:40:32 robert Exp $ */ +/* $OpenBSD: uts.c,v 1.2 2007/03/23 14:35:19 robert Exp $ */ /* * Copyright (c) 2007 Robert Nagy <robert@openbsd.org> @@ -53,6 +53,7 @@ struct uts_softc { usbd_pipe_handle sc_intr_pipe; u_char *sc_ibuf; int sc_isize; + u_int8_t sc_pkts; device_ptr_t sc_wsmousedev; @@ -327,12 +328,14 @@ uts_get_pos(usbd_private_handle addr, struct uts_pos tp) down = (p[7] & 0x20); x = ((p[0] & 0x1f) << 7) | (p[3] & 0x7f); y = ((p[1] & 0x1f) << 7) | (p[4] & 0x7f); + sc->sc_pkts = 8; break; case USB_PRODUCT_EGALAX_TPANEL: case USB_PRODUCT_EGALAX_TPANEL2: down = (p[0] & 0x01); x = ((p[3] & 0x0f) << 7) | (p[4] & 0x7f); y = ((p[1] & 0x0f) << 7) | (p[2] & 0x7f); + sc->sc_pkts = 5; break; } @@ -384,14 +387,14 @@ uts_intr(usbd_xfer_handle xfer, usbd_private_handle addr, usbd_status status) return; } - if (len != 8) { + tp = uts_get_pos(sc, tp); + + if (len != sc->sc_pkts) { printf("%s: bad input length %d != %d\n", USBDEVNAME(sc->sc_dev), len, sc->sc_isize); return; } - tp = uts_get_pos(sc, tp); - wsmouse_input(sc->sc_wsmousedev, tp.z, tp.x, tp.y, 0, WSMOUSE_INPUT_ABSOLUTE_X | WSMOUSE_INPUT_ABSOLUTE_Y | WSMOUSE_INPUT_ABSOLUTE_Z); |