From 3d4f74955cb247b249555dfd677e6642bb205553 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Mon, 14 Mar 2011 16:18:10 +0000 Subject: 2011-03-14 Joel Sherrill * Makefile.am, configure.ac: Add test for Mouse Parser Engine (Microsoft Mouse paths) and Serial Mouse Driver. * mouse01/.cvsignore, mouse01/Makefile.am, mouse01/init.c, mouse01/mouse01.doc, mouse01/mouse01.scn, mouse01/msmouse.c, mouse01/serial_mouse_config.c: New files. --- testsuites/libtests/ChangeLog | 8 ++ testsuites/libtests/Makefile.am | 3 +- testsuites/libtests/configure.ac | 1 + testsuites/libtests/mouse01/.cvsignore | 2 + testsuites/libtests/mouse01/Makefile.am | 28 ++++ testsuites/libtests/mouse01/init.c | 159 ++++++++++++++++++++++ testsuites/libtests/mouse01/mouse01.doc | 26 ++++ testsuites/libtests/mouse01/mouse01.scn | 13 ++ testsuites/libtests/mouse01/msmouse.c | 35 +++++ testsuites/libtests/mouse01/serial_mouse_config.c | 32 +++++ 10 files changed, 306 insertions(+), 1 deletion(-) create mode 100644 testsuites/libtests/mouse01/.cvsignore create mode 100644 testsuites/libtests/mouse01/Makefile.am create mode 100644 testsuites/libtests/mouse01/init.c create mode 100644 testsuites/libtests/mouse01/mouse01.doc create mode 100644 testsuites/libtests/mouse01/mouse01.scn create mode 100644 testsuites/libtests/mouse01/msmouse.c create mode 100644 testsuites/libtests/mouse01/serial_mouse_config.c (limited to 'testsuites/libtests') diff --git a/testsuites/libtests/ChangeLog b/testsuites/libtests/ChangeLog index 96a8f88c50..480bafdb0d 100644 --- a/testsuites/libtests/ChangeLog +++ b/testsuites/libtests/ChangeLog @@ -1,3 +1,11 @@ +2011-03-14 Joel Sherrill + + * Makefile.am, configure.ac: Add test for Mouse Parser Engine + (Microsoft Mouse paths) and Serial Mouse Driver. + * mouse01/.cvsignore, mouse01/Makefile.am, mouse01/init.c, + mouse01/mouse01.doc, mouse01/mouse01.scn, mouse01/msmouse.c, + mouse01/serial_mouse_config.c: New files. + 2011-03-10 Sebastian Huber * heapwalk/init.c: Improve coverage. diff --git a/testsuites/libtests/Makefile.am b/testsuites/libtests/Makefile.am index 2a59d6d25e..98c3a30034 100644 --- a/testsuites/libtests/Makefile.am +++ b/testsuites/libtests/Makefile.am @@ -15,7 +15,8 @@ SUBDIRS += bspcmdline01 cpuuse devfs01 devfs02 devfs03 devfs04 \ rtems++ tztest block01 block02 block03 block04 block05 block06 block07 \ block08 block09 block10 stringto01 \ tar01 tar02 tar03 \ - math mathf mathl complex + math mathf mathl complex \ + mouse01 include $(top_srcdir)/../automake/subdirs.am include $(top_srcdir)/../automake/local.am diff --git a/testsuites/libtests/configure.ac b/testsuites/libtests/configure.ac index 8909ec3ea5..a01cfca2a1 100644 --- a/testsuites/libtests/configure.ac +++ b/testsuites/libtests/configure.ac @@ -69,6 +69,7 @@ malloc04/Makefile malloc05/Makefile monitor/Makefile monitor02/Makefile +mouse01/Makefile putenvtest/Makefile rtems++/Makefile rtmonuse/Makefile diff --git a/testsuites/libtests/mouse01/.cvsignore b/testsuites/libtests/mouse01/.cvsignore new file mode 100644 index 0000000000..282522db03 --- /dev/null +++ b/testsuites/libtests/mouse01/.cvsignore @@ -0,0 +1,2 @@ +Makefile +Makefile.in diff --git a/testsuites/libtests/mouse01/Makefile.am b/testsuites/libtests/mouse01/Makefile.am new file mode 100644 index 0000000000..df71b65d11 --- /dev/null +++ b/testsuites/libtests/mouse01/Makefile.am @@ -0,0 +1,28 @@ +## +## $Id$ +## + +MANAGERS = all + +rtems_tests_PROGRAMS = mouse01 +mouse01_SOURCES = init.c serial_mouse_config.c msmouse.c\ + ../termios04/termios_testdriver_intr.c + +dist_rtems_tests_DATA = mouse01.scn +dist_rtems_tests_DATA += mouse01.doc + +include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg +include $(top_srcdir)/../automake/compile.am +include $(top_srcdir)/../automake/leaf.am + +AM_CPPFLAGS += -I$(top_srcdir)/../support/include +AM_CPPFLAGS += -I$(top_srcdir)/termios04 + +LINK_OBJS = $(mouse01_OBJECTS) $(mouse01_LDADD) +LINK_LIBS = $(mouse01_LDLIBS) + +mouse01$(EXEEXT): $(mouse01_OBJECTS) $(mouse01_DEPENDENCIES) + @rm -f mouse01$(EXEEXT) + $(make-exe) + +include $(top_srcdir)/../automake/local.am diff --git a/testsuites/libtests/mouse01/init.c b/testsuites/libtests/mouse01/init.c new file mode 100644 index 0000000000..c4d35a8a83 --- /dev/null +++ b/testsuites/libtests/mouse01/init.c @@ -0,0 +1,159 @@ +/* + * COPYRIGHT (c) 1989-2011. + * On-Line Applications Research Corporation (OAR). + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + * + * $Id$ + */ + +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include "termios_testdriver_intr.h" +#include "tmacros.h" + +extern const char *Mouse_Type_Long; +extern const char *Mouse_Type_Short; +extern const unsigned char Mouse_Actions[]; +extern const size_t Mouse_Actions_Size; +extern const size_t Mouse_Actions_Per_Iteration; + +int Mouse_Index = 0; + +bool enqueue_next_action( + const unsigned char *actions, + size_t max, + size_t to_enqueue +) +{ + if ( (Mouse_Index + to_enqueue) > max ) + return false; + + termios_test_driver_set_rx_enqueue_now( true ); + + termios_test_driver_set_rx( &actions[Mouse_Index], to_enqueue ); + Mouse_Index += to_enqueue; + + return true; +} + +int Test_fd; + +void open_it(void) +{ + /* open the file */ + puts( "open(/dev/mouse) - OK " ); + Test_fd = open( "/dev/mouse", O_RDONLY ); + rtems_test_assert( Test_fd != -1 ); +} + +void register_it(void) +{ + int rc; + char name[5] = "mous"; + + printf( "uid_open_queue() - mouse queue\n" ); + rc = uid_open_queue( name, 0, 10 ); + rtems_test_assert( rc == 0 ); + + printf( "uid_register_device() - OK\n"); + rc = uid_register_device( Test_fd, name ); + rtems_test_assert( rc == 0 ); +} + +void printf_uid_message( + struct MW_UID_MESSAGE *uid +) +{ + uid_print_message_with_plugin( + stdout, + (rtems_printk_plugin_t)fprintf, + uid + ); +} + +void receive_uid_message(void) +{ + int rc; + struct MW_UID_MESSAGE uid; + + rc = uid_read_message( &uid, 0 ); + if ( rc != sizeof(struct MW_UID_MESSAGE) ) + return; + printf_uid_message( &uid ); +} + +void close_it(void) +{ + int rc; + + printf( "uid_unregister_device() - OK\n" ); + rc = uid_unregister_device( Test_fd ); + rtems_test_assert( rc == 0 ); + + puts( "close(/dev/mouse) - OK " ); + rc = close( Test_fd ); + rtems_test_assert( rc == 0 ); +} + +rtems_task Init( + rtems_task_argument ignored +) +{ + bool more_data; + + printf( "\n\n*** %s TEST ***\n", Mouse_Type_Long ); + + open_it(); + register_it(); + do { + more_data = enqueue_next_action( + Mouse_Actions, + Mouse_Actions_Size, + Mouse_Actions_Per_Iteration + ); + receive_uid_message(); + } while (more_data); + close_it(); + printf( "*** END OF %s TEST ***\n", Mouse_Type_Long ); + rtems_test_exit( 0 ); +} + +/* configuration information */ + +#include +#include "termios_testdriver_intr.h" + +/* NOTICE: the clock driver is explicitly disabled */ +#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER +#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER +#define CONFIGURE_APPLICATION_EXTRA_DRIVERS \ + TERMIOS_TEST_DRIVER_TABLE_ENTRY, \ + SERIAL_MOUSE_DRIVER_TABLE_ENTRY + +/* one for the console and one for the test port */ +#define CONFIGURE_NUMBER_OF_TERMIOS_PORTS 2 + +/* we need to be able to open the test device and mouse */ +#define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 5 +#define CONFIGURE_MAXIMUM_TASKS 1 +#define CONFIGURE_MAXIMUM_TIMERS 2 +#define CONFIGURE_MAXIMUM_MESSAGE_QUEUES 1 + +#define CONFIGURE_RTEMS_INIT_TASKS_TABLE +#define CONFIGURE_INIT + +#include + +/* end of file */ diff --git a/testsuites/libtests/mouse01/mouse01.doc b/testsuites/libtests/mouse01/mouse01.doc new file mode 100644 index 0000000000..fa48f6fdd1 --- /dev/null +++ b/testsuites/libtests/mouse01/mouse01.doc @@ -0,0 +1,26 @@ +# +# $Id$ +# +# COPYRIGHT (c) 2011. +# On-Line Applications Research Corporation (OAR). +# +# The license and distribution terms for this file may be +# found in the file LICENSE in this distribution or at +# http://www.rtems.com/license/LICENSE. +# + +This file describes the directives and concepts tested by this test set. + +test set name: mouse01 + +directives: + + None + + Mouse Parser Engine (cpukit/libmisc/mouse) + + Generic Serial Mouse Driver (cpukit/libmisc/mouse) + +concepts: + ++ The purpose of this test is to exercise paths in the Mouse Parser Engine + related to parsing the input from a Microsoft Serial Mouse. + ++ This test also exercises the serial mouse driver. diff --git a/testsuites/libtests/mouse01/mouse01.scn b/testsuites/libtests/mouse01/mouse01.scn new file mode 100644 index 0000000000..a23c95a251 --- /dev/null +++ b/testsuites/libtests/mouse01/mouse01.scn @@ -0,0 +1,13 @@ +*** Microsoft Mouse TEST *** +open(/dev/mouse) - OK +uid_open_queue() - mouse queue +uid_register_device() - OK +SerialMouse: reg=mous +Device: /dev/mouse -- mouse type is: ms +MV_UID_REL_POS - LEFT=down CENTER=up RIGHT=up x=1 y=2 z=0 +MV_UID_REL_POS - LEFT=up CENTER=up RIGHT=down x=1 y=2 z=0 +MV_UID_REL_POS - LEFT=up CENTER=up RIGHT=up x=-1 y=2 z=0 +MV_UID_REL_POS - LEFT=up CENTER=up RIGHT=up x=1 y=63 z=0 +uid_unregister_device() - OK +close(/dev/mouse) - OK +*** END OF Microsoft Mouse TEST *** diff --git a/testsuites/libtests/mouse01/msmouse.c b/testsuites/libtests/mouse01/msmouse.c new file mode 100644 index 0000000000..dc7ad36a09 --- /dev/null +++ b/testsuites/libtests/mouse01/msmouse.c @@ -0,0 +1,35 @@ +/* + * COPYRIGHT (c) 1989-2011. + * On-Line Applications Research Corporation (OAR). + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + * + * $Id$ + */ + +#include + +const char *Mouse_Type_Long = "Microsoft Mouse"; +const char *Mouse_Type_Short = "ms"; + +#define PRESSED 1 +#define NOT_PRESSED 0 + +#define MS_MOUSE_BYTES( _lb, _rb, _x, _y ) \ + (0x40 | ((_lb) ? 0x20 : 0x00) | ((_rb) ? 0x10 : 0x00) | \ + ((_y & 0xC) >> 4) | (_x >> 6)), \ + (_x & 0x3F), \ + (_y & 0x3F) + +const unsigned char Mouse_Actions[] = { + MS_MOUSE_BYTES( PRESSED, NOT_PRESSED, 1, 2), + MS_MOUSE_BYTES( NOT_PRESSED, PRESSED, 1, 2), + MS_MOUSE_BYTES( NOT_PRESSED, NOT_PRESSED, 0xff, 2), + MS_MOUSE_BYTES( NOT_PRESSED, NOT_PRESSED, 1, 0xff) +}; + +const size_t Mouse_Actions_Size = sizeof(Mouse_Actions); +const size_t Mouse_Actions_Per_Iteration = 3; + diff --git a/testsuites/libtests/mouse01/serial_mouse_config.c b/testsuites/libtests/mouse01/serial_mouse_config.c new file mode 100644 index 0000000000..57dba87f31 --- /dev/null +++ b/testsuites/libtests/mouse01/serial_mouse_config.c @@ -0,0 +1,32 @@ +/* + * + * $Id$ + * + * MODULE DESCRIPTION: + * This module implements the RTEMS drivers for the PC serial ports + * as /dev/ttyS1 for COM1 and /dev/ttyS2 as COM2. If one of the ports + * is used as the console, this driver would fail to initialize. + * + * This code was based on the console driver. It is based on the + * current termios framework. This is just a shell around the + * termios support. + * + */ + +#include "tmacros.h" +#include +#include "termios_testdriver_intr.h" + +extern const char *Mouse_Type_Short; + +bool bsp_get_serial_mouse_device( + const char **name, + const char **type +) +{ + *name = TERMIOS_TEST_DRIVER_DEVICE_NAME; + *type = Mouse_Type_Short; + + printf("Mouse Device: name=%s type=%s\n", *name, *type ); + return true; +} -- cgit v1.2.3