summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/Makefile.am6
-rw-r--r--tests/test-send_event.c530
2 files changed, 1 insertions, 535 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 5e15f3a..b3c8aa4 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -6,12 +6,11 @@ AM_CFLAGS = $(GCC_CFLAGS)
AM_CPPFLAGS = -I$(top_srcdir)/src -DUNIT_TEST $(COMPOSITOR_CFLAGS)
noinst_PROGRAMS = \
- test-send_event \
test-homescreen \
test-client
check_LTLIBRARIES = $(TESTS)
-check_PROGRAMS = test-homescreen test-client test-send_event
+check_PROGRAMS = test-homescreen test-client
AM_LDFLAGS = -module -avoid-version -rpath $(libdir) -lwayland-egl -lEGL -lGLESv2
AM_CFLAGS = $(wayland_ivi_client_inc) $(GCC_CFLAGS)
@@ -21,9 +20,6 @@ test_wayland_client = -lwayland-client
wayland_ivi_client_lib = -lico-uxf-weston-plugin
wayland_ivi_client_inc = -I/usr/include/ico-uxf-weston-plugin
-test_send_event_SOURCES = test-send_event.c $(test_common_src)
-test_send_event_LDADD = $(SIMPLE_CLIENT_LIBS) $(test_wayland_client)
-
test_homescreen_SOURCES = test-homescreen.c $(test_common_src)
test_homescreen_LDADD = $(SIMPLE_CLIENT_LIBS) $(wayland_ivi_client_lib) $(test_wayland_client)
diff --git a/tests/test-send_event.c b/tests/test-send_event.c
deleted file mode 100644
index 6aa0b7b..0000000
--- a/tests/test-send_event.c
+++ /dev/null
@@ -1,530 +0,0 @@
-/*
- * Copyright © 2013 TOYOTA MOTOR CORPORATION.
- *
- * 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
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of the copyright holders not be used in
- * advertising or publicity pertaining to distribution of the software
- * without specific, written prior permission. The copyright holders make
- * no representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
- * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-/**
- * @brief System Test Tool for send device input event
- *
- * @date Feb-20-2013
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-#include <errno.h>
-#include <pthread.h>
-#include <sys/ioctl.h>
-#include <sys/ipc.h>
-#include <sys/msg.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <signal.h>
-#include <fcntl.h>
-#include <linux/input.h>
-#include <linux/uinput.h>
-#include <linux/joystick.h>
-#include "test-common.h"
-
-#define DEV_TOUCH 0
-#define DEV_JS 1
-#define SPECIALTYPE_XY 9991
-
-static const struct {
- char *prop;
- short devtype;
- short type;
- short code;
- short value;
-} event_key[] = {
- { "X", DEV_TOUCH, EV_ABS, ABS_X, -1 },
- { "Y", DEV_TOUCH, EV_ABS, ABS_Y, -1 },
- { "Down", DEV_TOUCH, EV_KEY, BTN_TOUCH, 1 },
- { "Up", DEV_TOUCH, EV_KEY, BTN_TOUCH, 0 },
- { "Touch", DEV_TOUCH, EV_KEY, BTN_TOUCH, -1 },
- { "XY", DEV_TOUCH, SPECIALTYPE_XY, 0, -1 },
- { "SYN", DEV_TOUCH, 0, 0, 0 },
- { "Button", DEV_TOUCH, EV_KEY, BTN_LEFT, -1 },
- { "ButtonOn", DEV_TOUCH, EV_KEY, BTN_LEFT, 1 },
- { "ButtonOff", DEV_TOUCH, EV_KEY, BTN_LEFT, 0 },
-
- { "UpDown", DEV_JS, 2, 3, 1 },
- { "UD", DEV_JS, 2, 3, 1 },
- { "LeftRight", DEV_JS, 2, 2, 2 },
- { "LR", DEV_JS, 2, 2, 2 },
- { "Cross", DEV_JS, 1, 0, 3 },
- { "Squere", DEV_JS, 1, 1, 4 },
- { "Circle", DEV_JS, 1, 2, 5 },
- { "Triangle", DEV_JS, 1, 3, 6 },
- { "\0", 0, 0, 0, 0 } };
-
-static int uifd = -1;
-static int mqid = -1;
-static int mDebug = 0;
-static int mRun = 1;
-static int mTouch = 1;
-
-static void
-term_signal(const int signo)
-{
- mRun = 0;
-}
-
-static void
-init_mq(const int mqkey)
-{
- char dummy[256];
-
- if (mqkey == 0) {
- mqid = -1;
- }
- else {
- mqid = msgget(mqkey, 0);
- if (mqid < 0) {
- mqid = msgget(mqkey, IPC_CREAT);
- }
- if (mqid < 0) {
- print_log("Can not create message queue(%d(0x%x))[%d]",
- mqkey, mqkey, errno);
- fflush(stderr);
- return;
- }
- while (msgrcv(mqid, dummy, sizeof(dummy)-sizeof(long), 0, IPC_NOWAIT) > 0) ;
- }
-}
-
-static void
-init_device(const char *device)
-{
- int fd;
- int ii;
- char devFile[64];
- char devName[64];
- struct uinput_user_dev uinputDevice;
- uifd = open("/dev/uinput", O_RDWR);
-
- if (uifd < 0) {
- print_log("/dev/uinput open error[%d]", errno);
- fflush(stderr);
- exit(1);
- }
-
- memset(&uinputDevice, 0, sizeof(uinputDevice));
- strcpy(uinputDevice.name, device);
- uinputDevice.absmax[ABS_X] = 1920;
- uinputDevice.absmax[ABS_Y] = 1080;
-
- /* uinput device configuration */
- if (write(uifd, &uinputDevice, sizeof(uinputDevice)) < (int)sizeof(uinputDevice)) {
- print_log("/dev/uinput regist error[%d]", errno);
- fflush(stderr);
- close(uifd);
- exit(1);
- }
-
- /* uinput set event bits */
- ioctl(uifd, UI_SET_EVBIT, EV_SYN);
-
- if ((mTouch != 0) && (mTouch != 3)) {
- ioctl(uifd, UI_SET_EVBIT, EV_ABS);
- ioctl(uifd, UI_SET_ABSBIT, ABS_X);
- ioctl(uifd, UI_SET_ABSBIT, ABS_Y);
- ioctl(uifd, UI_SET_EVBIT, EV_KEY);
- if (mTouch == 1) {
- ioctl(uifd, UI_SET_KEYBIT, BTN_LEFT);
- }
- else {
- ioctl(uifd, UI_SET_KEYBIT, BTN_TOUCH);
- ioctl(uifd, UI_SET_KEYBIT, BTN_TOOL_PEN);
- }
- }
- else {
- ioctl(uifd, UI_SET_EVBIT, EV_REL);
- ioctl(uifd, UI_SET_RELBIT, REL_X);
- ioctl(uifd, UI_SET_RELBIT, REL_Y);
- ioctl(uifd, UI_SET_RELBIT, REL_Z);
- ioctl(uifd, UI_SET_RELBIT, REL_RX);
- ioctl(uifd, UI_SET_RELBIT, REL_RY);
- ioctl(uifd, UI_SET_RELBIT, REL_RZ);
- ioctl(uifd, UI_SET_EVBIT, EV_KEY);
- ioctl(uifd, UI_SET_KEYBIT, KEY_RESERVED);
- ioctl(uifd, UI_SET_KEYBIT, KEY_ESC);
- ioctl(uifd, UI_SET_KEYBIT, KEY_1);
- ioctl(uifd, UI_SET_KEYBIT, KEY_2);
- ioctl(uifd, UI_SET_KEYBIT, KEY_3);
- ioctl(uifd, UI_SET_KEYBIT, KEY_4);
- ioctl(uifd, UI_SET_KEYBIT, KEY_5);
- ioctl(uifd, UI_SET_KEYBIT, KEY_6);
- ioctl(uifd, UI_SET_KEYBIT, KEY_7);
- ioctl(uifd, UI_SET_KEYBIT, KEY_8);
- ioctl(uifd, UI_SET_KEYBIT, KEY_9);
- ioctl(uifd, UI_SET_KEYBIT, KEY_0);
- }
-
- ioctl(uifd, UI_SET_EVBIT, EV_MSC);
- ioctl(uifd, UI_SET_MSCBIT, MSC_SCAN);
-
- /* create event device */
- if (ioctl(uifd, UI_DEV_CREATE, NULL) < 0) {
- print_log("/dev/uinput create error[%d]", errno);
- fflush(stderr);
- close(uifd);
- exit(1);
- }
- print_log("## created event device %s", device);
-
- for (ii = 0; ii < 16; ii++) {
- snprintf(devFile, 64, "/dev/input/event%d", ii);
- fd = open(devFile, O_RDONLY);
- if (fd < 0) continue;
-
- memset(devName, 0, sizeof(devName));
- ioctl(fd, EVIOCGNAME(sizeof(devName)), devName);
- close(fd);
- print_log("%d.event device(%s) is %s", ii+1, devFile, devName);
- }
-}
-
-static int
-convert_value(const char *value, char **errp, int base)
-{
- int i;
-
- for (i = 0; value[i]; i++) {
- if ((value[i] == ',') || (value[i] == ';') ||
- (value[i] == ';') || (value[i] == ' ')) {
- break;
- }
- }
- if (errp) {
- *errp = (char *)&value[i];
- }
-
- if ((strncasecmp(value, "on", i) == 0) ||
- (strncasecmp(value, "true", i) == 0) ||
- (strncasecmp(value, "push", i) == 0) ||
- (strncasecmp(value, "down", i) == 0) ||
- (strncasecmp(value, "right", i) == 0)) {
- return 1;
- }
- else if ((strncasecmp(value, "off", i) == 0) ||
- (strncasecmp(value, "false", i) == 0) ||
- (strncasecmp(value, "pop", i) == 0) ||
- (strncasecmp(value, "up", i) == 0) ||
- (strncasecmp(value, "left", i) == 0)) {
- return 0;
- }
- return strtol(value, (char **)0, 0);
-}
-
-static void
-send_event(const char *cmd)
-{
- int i, j;
- int key;
- char prop[64];
- char value[128];
- int sec, msec;
- char *errp;
- struct input_event event;
- struct js_event js;
-
- j = 0;
- for (i = 0; cmd[i]; i++) {
- if ((cmd[i] == '=') || (cmd[i] == ' ')) break;
- if (j < (int)(sizeof(prop)-1)) {
- prop[j++] = cmd[i];
- }
- }
-
- prop[j] = 0;
- j = 0;
- if (cmd[i] != 0) {
- for (i++; cmd[i]; i++) {
- if (cmd[i] == ' ') continue;
- if (j < (int)(sizeof(value)-1)) {
- value[j++] = cmd[i];
- }
- }
- }
- value[j] = 0;
-
- if (strcasecmp(prop, "sleep") == 0) {
- sec = 0;
- msec = 0;
- for (i = 0; value[i]; i++) {
- if (value[i] == '.') break;
- sec = sec * 10 + (value[i] & 0x0f);
- }
- if (value[i] == '.') {
- i++;
- if (value[i] != 0) {
- msec = (value[i] & 0x0f) * 100;
- i++;
- }
- if (value[i] != 0) {
- msec = msec + (value[i] & 0x0f) * 10;
- i++;
- }
- if (value[i] != 0) {
- msec = msec + (value[i] & 0x0f);
- }
- }
- if (sec > 0) sleep(sec);
- if (msec > 0) usleep(msec * 1000);
-
- return;
- }
-
- for (key = 0; event_key[key].prop[0]; key++) {
- if (strcasecmp(prop, event_key[key].prop) == 0) break;
- }
- if (! event_key[key].prop[0]) {
- print_log("UnKnown Event name[%s]", prop);
- return;
- }
-
- if (mTouch != 0) {
- memset(&event, 0, sizeof(event));
- gettimeofday(&event.time, NULL);
- if (event_key[key].type == SPECIALTYPE_XY) {
- event.type = EV_ABS;
- event.code = ABS_X;
- event.value = convert_value(value, &errp, 0);
- if (mDebug) {
- print_log("Send Event ABS_X=%d\t# %d.%03d", event.value,
- (int)event.time.tv_sec, (int)(event.time.tv_usec/1000));
- fflush(stderr);
- }
- if (write(uifd, &event, sizeof(struct input_event)) < 0) {
- print_log("event write error 1[%d]", errno);
- fflush(stderr);
- return;
- }
- event.code = ABS_Y;
- if (*errp == ',') {
- event.value = convert_value(errp + 1, (char **)0, 0);
- }
- else {
- event.value = 0;
- }
- event.time.tv_usec += 200;
- if (event.time.tv_usec >= 1000000) {
- event.time.tv_sec ++;
- event.time.tv_usec -= 1000000;
- }
- if (mDebug) {
- print_log("Send Event ABS_Y=%d\t# %d.%03d", event.value,
- (int)event.time.tv_sec, (int)(event.time.tv_usec/1000));
- fflush(stderr);
- }
- }
- else {
- event.type = event_key[key].type;
-
- if (event_key[key].code == -1) {
- event.code = convert_value(value, (char **)0, 0);
- }
- else {
- event.code = event_key[key].code;
- event.value = convert_value(value, (char **)0, 0);
- }
- if (mDebug) {
- if ((event.type == EV_ABS) && (event.code == ABS_X)) {
- print_log("Send Event X=%d\t# %d.%03d", event.value,
- (int)event.time.tv_sec, (int)(event.time.tv_usec/1000));
- }
- else if ((event.type == EV_ABS) && (event.code == ABS_Y)) {
- print_log("Send Event Y=%d\t %d.%03d", event.value,
- (int)event.time.tv_sec, (int)(event.time.tv_usec/1000));
- }
- else if ((event.type == EV_KEY) &&
- (event.code == BTN_LEFT) && (event.value == 1)) {
- print_log("Send Event BTN_LEFT=Down\t# %d.%03d",
- (int)event.time.tv_sec, (int)(event.time.tv_usec/1000));
- }
- else if ((event.type == EV_KEY) &&
- (event.code == BTN_LEFT) && (event.value == 0)) {
- print_log("Send Event BTN_LEFT=Up\t# %d.%03d",
- (int)event.time.tv_sec, (int)(event.time.tv_usec/1000));
- }
- else {
- if ((event.type == EV_REL) && (event.value == 0)) {
- event.value = 9;
- }
- else if ((event.type == EV_KEY) && (event.code == 0)) {
- event.code = 9;
- }
- print_log("Send Event type=%d code=%d value=%d\t# %d.%03d",
- event.type, event.code, event.value,
- (int)event.time.tv_sec, (int)(event.time.tv_usec/1000));
- }
- fflush(stderr);
- }
- }
- if (write(uifd, &event, sizeof(struct input_event)) < 0) {
- print_log("event write error 2[%d]", errno);
- fflush(stderr);
- }
- else {
- /* send EV_SYN */
- memset(&event, 0, sizeof(event));
- gettimeofday(&event.time, NULL);
- event.type = EV_SYN;
- event.code = SYN_REPORT;
- if (write(uifd, &event, sizeof(struct input_event)) < 0) {
- print_log("syn event write error 3[%d]", errno);
- }
- }
- }
- else {
- memset(&js, 0, sizeof(js));
- gettimeofday(&event.time, NULL);
- js.time = (event.time.tv_sec * 1000) + (event.time.tv_usec / 1000);
- js.type = event_key[key].type;
- js.number = event_key[key].code;
- js.value = convert_value(value, (char **)0, 0);
- if (mDebug) {
- print_log("Send Event JS=%d,%d,%d\t# %d",
- (int)js.type, (int)js.number, (int)js.value, (int)js.time);
- }
- if (write(uifd, &js, sizeof(struct js_event)) < 0) {
- print_log("event write error 4[%d]", errno);
- fflush(stderr);
- }
- }
-}
-
-static void
-usage(const char *prog)
-{
- fprintf(stderr, "Usage: %s [-device=device] [{-m/-t/-j}] [-mq[=key]] "
- "[-d] [event=value] [event=value] ...\n", prog);
- exit(0);
-}
-
-int
-main(int argc, char *argv[])
-{
- int i, j, k;
- int mqkey = 0;
- struct {
- long mtype;
- char buf[240];
- } mqbuf;
- char buf[240];
-
- j = 0;
- strcpy(buf, "ico_test_device");
- for (i = 1; i < argc; i++) {
- if (argv[i][0] == '-') {
- if (strncasecmp(argv[i], "-device=", 8) == 0) {
- strcpy(buf, &argv[i][8]);
- }
- else if (strcasecmp(argv[i], "-m") == 0) {
- mTouch = 1; /* Simulate mouse */
- }
- else if (strcasecmp(argv[i], "-t") == 0) {
- mTouch = 2; /* Simulate touch-panel */
- }
- else if (strcmp(argv[i], "-j") == 0) {
- mTouch = 0; /* Simulate joystick */
- }
- else if (strcmp(argv[i], "-J") == 0) {
- mTouch = 3; /* Simulate joystick, but event is mouse */
- }
- else if (strncasecmp(argv[i], "-mq", 3) == 0) {
- if (argv[i][3] == '=') {
- mqkey = strtol(&argv[i][4], (char **)0, 0);
- }
- else {
- mqkey = 55551; /* default message queue key */
- }
- }
- else if (strcasecmp(argv[i], "-d") == 0) {
- mDebug = 1;
- }
- else {
- usage(argv[0]);
- }
- }
- else {
- j++;
- }
- }
-
- init_mq(mqkey);
-
- init_device(buf);
-
- mRun = 1;
-
- signal(SIGTERM, term_signal);
- signal(SIGINT, term_signal);
-
- if (mqid >= 0) {
- while (mRun) {
- memset(&mqbuf, 0, sizeof(mqbuf));
- if (msgrcv(mqid, &mqbuf, sizeof(mqbuf)-sizeof(long), 0, 0) < 0) {
- if (errno == EINTR) continue;
- print_log("test-send_event: mq(%d) receive error[%d]",
- mqkey, errno);
- fflush(stderr);
- break;
- }
- k = 0;
- j = -1;
- for (i = 0; mqbuf.buf[i]; i++) {
- if ((mqbuf.buf[i] == '#') || (mqbuf.buf[i] == '\n')
- || (mqbuf.buf[i] == '\r')) break;
- if (mqbuf.buf[i] == '\t') buf[k++] = ' ';
- else buf[k++] = mqbuf.buf[i];
- if ((j < 0) && (mqbuf.buf[i] != ' ')) j = i;
- }
- if (j < 0) continue;
- buf[k] = 0;
- send_event(&buf[j]);
- }
- msgctl(mqid, IPC_RMID, NULL);
- }
- else if (j <= 0) {
- while ((mRun != 0) && (fgets(buf, sizeof(buf), stdin) != NULL)) {
- j = -1;
- for (i = 0; buf[i]; i++) {
- if ((buf[i] == '#') || (buf[i] == '\n') || (buf[i] == '\r')) break;
- if (buf[i] == '\t') buf[i] = ' ';
- if ((j < 0) && (buf[i] != ' ')) j = i;
- }
- if (j < 0) continue;
- buf[i] = 0;
- send_event(&buf[j]);
- }
- }
- else {
- for (i = 1; i < argc; i++) {
- if (argv[i][0] == '-') continue;
- if (mRun == 0) break;
- send_event(argv[i]);
- }
- }
- exit(0);
-}
-