From ab67ba5e161c4d65128fc5eada6845a543464759 Mon Sep 17 00:00:00 2001 From: Henrik Rydberg Date: Thu, 30 Dec 2010 19:00:16 +0100 Subject: Move test program to tools directory The current test programs are tools rather than automatic tests. To conform better to the the usage of "make check", move the current tools over the appropriate directory. Also drop the grail-touch program, as it will be replaced by the utouch-frame package. Signed-off-by: Henrik Rydberg --- .gitignore | 3 +- INSTALL | 7 --- Makefile.am | 2 +- configure.ac | 1 + test/Makefile.am | 9 ---- test/grail-gesture.c | 126 -------------------------------------------------- test/grail-touch.c | 97 -------------------------------------- tools/Makefile.am | 7 +++ tools/grail-gesture.c | 126 ++++++++++++++++++++++++++++++++++++++++++++++++++ 9 files changed, 136 insertions(+), 242 deletions(-) delete mode 100644 test/grail-gesture.c delete mode 100644 test/grail-touch.c create mode 100644 tools/Makefile.am create mode 100644 tools/grail-gesture.c diff --git a/.gitignore b/.gitignore index 02918de..1442881 100644 --- a/.gitignore +++ b/.gitignore @@ -78,5 +78,4 @@ core .bzrignore .bzr patches -test/grail-gesture -test/grail-touch +tools/grail-gesture diff --git a/INSTALL b/INSTALL index 4e42ff7..caaad65 100644 --- a/INSTALL +++ b/INSTALL @@ -7,13 +7,6 @@ installed. Then, do ./configure make -To test the touch properties of an MT device at /dev/input/eventX, do - - sudo ./test/grail-touch /dev/input/eventX - -You should be able to see touch events in the terminal. After five -seconds of inactivity, the program exits. - To test gestures, do sudo ./test/grail-gesture 0xffffffff /dev/input/eventX diff --git a/Makefile.am b/Makefile.am index ec27340..9a16637 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,4 +1,4 @@ -SUBDIRS = src test +SUBDIRS = src test tools pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = utouch-grail.pc diff --git a/configure.ac b/configure.ac index 21f070e..0f75818 100644 --- a/configure.ac +++ b/configure.ac @@ -26,6 +26,7 @@ PKG_CHECK_MODULES([MTDEV], [mtdev >= 1.0]) AC_CONFIG_FILES([Makefile src/Makefile + tools/Makefile test/Makefile utouch-grail.pc]) AC_OUTPUT diff --git a/test/Makefile.am b/test/Makefile.am index 8ffbe09..e69de29 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -1,9 +0,0 @@ -bin_PROGRAMS = grail-touch grail-gesture - -INCLUDES=-I$(top_srcdir)/include/ - -grail_touch_SOURCES = grail-touch.c -grail_touch_LDFLAGS = -L$(top_builddir)/src/.libs/ -lutouch-grail -lmtdev -lm - -grail_gesture_SOURCES = grail-gesture.c -grail_gesture_LDFLAGS = -L$(top_builddir)/src/.libs/ -lutouch-grail -lmtdev -lm diff --git a/test/grail-gesture.c b/test/grail-gesture.c deleted file mode 100644 index 614bf1a..0000000 --- a/test/grail-gesture.c +++ /dev/null @@ -1,126 +0,0 @@ -/***************************************************************************** - * - * grail - Gesture Recognition And Instantiation Library - * - * Copyright (C) 2010 Canonical Ltd. - * - * This program is free software: you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - * - * Authors: - * Henrik Rydberg - * - ****************************************************************************/ - -#include -#include -#include -#include -#include - -static grail_mask_t flag_mask[DIM_GRAIL_TYPE_BYTES]; - -static int tp_get_clients(struct grail *ge, - struct grail_client_info *clients, int max_clients, - const struct grail_coord *coords, int num_coords, - const grail_mask_t *types, int type_bytes) -{ - memset(&clients[0], 0, sizeof(clients[0])); - clients[0].id.client = 345; - clients[0].id.root = 1; - clients[0].id.event = 2; - clients[0].id.child = 3; - memcpy(clients[0].mask, flag_mask, sizeof(flag_mask)); - return 1; -} - -static void tp_event(struct grail *ge, const struct input_event *ev) -{ - fprintf(stderr, "%lu.%06u %04x %04x %d\n", - ev->time.tv_sec, (unsigned)ev->time.tv_usec, - ev->type, ev->code, ev->value); -} - -static void tp_gesture(struct grail *ge, const struct grail_event *ev) -{ - struct grail_contact touch[32]; - int i, ntouch; - fprintf(stderr, "gesture %d %d %d %d - %f %f %d - %d\n", - ev->type, ev->id, ev->client_id.client, ev->client_id.event, - ev->pos.x, ev->pos.y, ev->ntouch, - ev->status); - ntouch = grail_get_contacts(ge, touch, 32); - for (i = 0; i < ntouch; i++) { - const struct grail_contact *t = &touch[i]; - fprintf(stderr, "\t%d: %d %d\n", i, t->id, t->tool_type); - fprintf(stderr, "\t %f %f\n", t->pos.x, t->pos.y); - fprintf(stderr, "\t %f %f %f %f\n", t->touch_major, - t->touch_minor, t->width_major, t->width_minor); - fprintf(stderr, "\t %f %f\n", t->angle, t->pressure); - } - for (i = 0; i < ev->nprop; i++) - fprintf(stderr, "\t%d: %f\n", i, ev->prop[i]); -} - -static void loop_device(struct grail *ge, int fd) -{ - while (!grail_idle(ge, fd, 5000)) - grail_pull(ge, fd); -} - -int main(int argc, char *argv[]) -{ - struct grail ge; - int i, fd; - - if (argc < 3) { - fprintf(stderr, "Usage: %s \n", argv[0]); - return -1; - } - - memset(&ge, 0, sizeof(ge)); - ge.get_clients = tp_get_clients; - ge.event = tp_event; - ge.gesture = tp_gesture; - - unsigned long mask = strtoull(argv[1], 0, 0); - for (i = 0; i < DIM_GRAIL_TYPE; i++) - if ((mask >> i) & 1) - grail_mask_set(flag_mask, i); - - fd = open(argv[2], O_RDONLY | O_NONBLOCK); - if (fd < 0) { - fprintf(stderr, "error: could not open device\n"); - return -1; - } - if (ioctl(fd, EVIOCGRAB, 1)) { - fprintf(stderr, "error: could not grab the device\n"); - return -1; - } - - if (grail_open(&ge, fd)) { - fprintf(stderr, "error: could not open touch device\n"); - return -1; - } - //grail_filter_abs_events(&ge, 1); - - struct grail_coord min = { -2, -1 }, max = { 2, 1 }; - grail_set_bbox(&ge, &min, &max); - - loop_device(&ge, fd); - grail_close(&ge, fd); - - ioctl(fd, EVIOCGRAB, 0); - close(fd); - return 0; -} diff --git a/test/grail-touch.c b/test/grail-touch.c deleted file mode 100644 index c5ecae3..0000000 --- a/test/grail-touch.c +++ /dev/null @@ -1,97 +0,0 @@ -/***************************************************************************** - * - * grail - Gesture Recognition And Instantiation Library - * - * Copyright (C) 2010 Canonical Ltd. - * - * This program is free software: you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - * - * Authors: - * Henrik Rydberg - * - ****************************************************************************/ - -#include -#include -#include -#include -#include - -static void tp_event(struct touch_dev *dev, - const struct input_event *ev) -{ - fprintf(stderr, "event %d 0x%x %d\n", ev->type, ev->code, ev->value); -} - -static void tp_sync(struct touch_dev *dev, - const struct input_event *syn) -{ - struct touch_frame *frame = &dev->frame; - int i, j; - for (i = 0; i < frame->nactive; i++) { - struct touch *t = frame->active[i]; - fprintf(stderr, "touch %d\n", i); - fprintf(stderr, " slot: %d\n", t->slot); - fprintf(stderr, " id: %d\n", t->id); - fprintf(stderr, " tool_type: %d\n", t->tool_type); - fprintf(stderr, " x: %d\n", t->x); - fprintf(stderr, " y: %d\n", t->y); - fprintf(stderr, " touch_major: %d\n", t->touch_major); - fprintf(stderr, " touch_minor: %d\n", t->touch_minor); - fprintf(stderr, " width_major: %d\n", t->width_major); - fprintf(stderr, " width_minor: %d\n", t->width_minor); - fprintf(stderr, " angle: %f\n", - touch_angle(dev, t->orientation)); - fprintf(stderr, " pressure: %f\n", - touch_pressure(dev, t->pressure)); - } - fprintf(stderr, "sync %d %lld %d %d\n", - frame->nactive, frame->time, frame->ncreate, frame->ndestroy); -} - -static void loop_device(struct touch_dev *dev, int fd) -{ - dev->event = tp_event; - dev->sync = tp_sync; - while (!touch_dev_idle(dev, fd, 5000)) - touch_dev_pull(dev, fd); -} - -int main(int argc, char *argv[]) -{ - struct touch_dev dev; - int fd; - if (argc < 2) { - fprintf(stderr, "Usage: %s \n", argv[0]); - return -1; - } - fd = open(argv[1], O_RDONLY | O_NONBLOCK); - if (fd < 0) { - fprintf(stderr, "error: could not open device\n"); - return -1; - } - if (ioctl(fd, EVIOCGRAB, 1)) { - fprintf(stderr, "error: could not grab the device\n"); - return -1; - } - if (touch_dev_open(&dev, fd)) { - fprintf(stderr, "error: could not open touch device\n"); - return -1; - } - loop_device(&dev, fd); - touch_dev_close(&dev, fd); - ioctl(fd, EVIOCGRAB, 0); - close(fd); - return 0; -} diff --git a/tools/Makefile.am b/tools/Makefile.am new file mode 100644 index 0000000..ae6866c --- /dev/null +++ b/tools/Makefile.am @@ -0,0 +1,7 @@ +bin_PROGRAMS = grail-gesture + +INCLUDES=-I$(top_srcdir)/include/ + +grail_gesture_SOURCES = grail-gesture.c +grail_gesture_LDFLAGS = -L$(top_builddir)/src/.libs/ \ + -lutouch-grail -lmtdev -lm diff --git a/tools/grail-gesture.c b/tools/grail-gesture.c new file mode 100644 index 0000000..614bf1a --- /dev/null +++ b/tools/grail-gesture.c @@ -0,0 +1,126 @@ +/***************************************************************************** + * + * grail - Gesture Recognition And Instantiation Library + * + * Copyright (C) 2010 Canonical Ltd. + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + * + * Authors: + * Henrik Rydberg + * + ****************************************************************************/ + +#include +#include +#include +#include +#include + +static grail_mask_t flag_mask[DIM_GRAIL_TYPE_BYTES]; + +static int tp_get_clients(struct grail *ge, + struct grail_client_info *clients, int max_clients, + const struct grail_coord *coords, int num_coords, + const grail_mask_t *types, int type_bytes) +{ + memset(&clients[0], 0, sizeof(clients[0])); + clients[0].id.client = 345; + clients[0].id.root = 1; + clients[0].id.event = 2; + clients[0].id.child = 3; + memcpy(clients[0].mask, flag_mask, sizeof(flag_mask)); + return 1; +} + +static void tp_event(struct grail *ge, const struct input_event *ev) +{ + fprintf(stderr, "%lu.%06u %04x %04x %d\n", + ev->time.tv_sec, (unsigned)ev->time.tv_usec, + ev->type, ev->code, ev->value); +} + +static void tp_gesture(struct grail *ge, const struct grail_event *ev) +{ + struct grail_contact touch[32]; + int i, ntouch; + fprintf(stderr, "gesture %d %d %d %d - %f %f %d - %d\n", + ev->type, ev->id, ev->client_id.client, ev->client_id.event, + ev->pos.x, ev->pos.y, ev->ntouch, + ev->status); + ntouch = grail_get_contacts(ge, touch, 32); + for (i = 0; i < ntouch; i++) { + const struct grail_contact *t = &touch[i]; + fprintf(stderr, "\t%d: %d %d\n", i, t->id, t->tool_type); + fprintf(stderr, "\t %f %f\n", t->pos.x, t->pos.y); + fprintf(stderr, "\t %f %f %f %f\n", t->touch_major, + t->touch_minor, t->width_major, t->width_minor); + fprintf(stderr, "\t %f %f\n", t->angle, t->pressure); + } + for (i = 0; i < ev->nprop; i++) + fprintf(stderr, "\t%d: %f\n", i, ev->prop[i]); +} + +static void loop_device(struct grail *ge, int fd) +{ + while (!grail_idle(ge, fd, 5000)) + grail_pull(ge, fd); +} + +int main(int argc, char *argv[]) +{ + struct grail ge; + int i, fd; + + if (argc < 3) { + fprintf(stderr, "Usage: %s \n", argv[0]); + return -1; + } + + memset(&ge, 0, sizeof(ge)); + ge.get_clients = tp_get_clients; + ge.event = tp_event; + ge.gesture = tp_gesture; + + unsigned long mask = strtoull(argv[1], 0, 0); + for (i = 0; i < DIM_GRAIL_TYPE; i++) + if ((mask >> i) & 1) + grail_mask_set(flag_mask, i); + + fd = open(argv[2], O_RDONLY | O_NONBLOCK); + if (fd < 0) { + fprintf(stderr, "error: could not open device\n"); + return -1; + } + if (ioctl(fd, EVIOCGRAB, 1)) { + fprintf(stderr, "error: could not grab the device\n"); + return -1; + } + + if (grail_open(&ge, fd)) { + fprintf(stderr, "error: could not open touch device\n"); + return -1; + } + //grail_filter_abs_events(&ge, 1); + + struct grail_coord min = { -2, -1 }, max = { 2, 1 }; + grail_set_bbox(&ge, &min, &max); + + loop_device(&ge, fd); + grail_close(&ge, fd); + + ioctl(fd, EVIOCGRAB, 0); + close(fd); + return 0; +} -- cgit v1.2.3