Skip to content
Snippets Groups Projects
Commit a4da667e authored by patacongo's avatar patacongo
Browse files

Add a simple touchscreen test

git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3995 42af7a65-404d-4744-a932-0658087f49c3
parent 22e969a1
No related branches found
No related tags found
No related merge requests found
......@@ -2110,4 +2110,11 @@
* fs/fat: Fix an error in the long file name logic: If the long file name
is an even multiple of 13 bytes in length, then it should not include a
NULL terminating character. Fix contributed by Kaushal Parikh.
* configs/sim/nx11 - Created a separate configuration to build the NX
example using the a simulated framebuffer driver on an X11 window. This
example has been verified on Ubuntu 9.09 (it does not work on Cygwin).
* arch/sim/src/up_touchscreen.c and up_x11eventloop.c - Adds support for a
simulated NuttX touchscreen device using mouse/pointer feedback from an
x11 window.
* configs/sim/touchscreen - Adds a configuration to verify the simulated
touchscreen driver (Does not work on Cygwin).
......@@ -81,7 +81,7 @@ endif
COBJS = $(CSRCS:.c=$(OBJEXT))
NXOBJS = $(AOBJS) $(COBJS)
NUTTXOBJS = $(AOBJS) $(COBJS)
HOSTOBJS = $(HOSTSRCS:.c=$(OBJEXT))
SRCS = $(ASRCS) $(CSRCS) $(HOSTSRCS)
......@@ -104,11 +104,22 @@ endif
STDLIBS += -lc
# Determine which NuttX libraries will need to be linked in
# Most are provided by LINKLIBS on the MAKE command line
LINKOBJS = up_head$(OBJEXT)
LINKLIBS =
LDPATHS = $(addprefix -L$(TOPDIR)/,$(dir $(LINKLIBS)))
LDLIBS = $(patsubst lib%,-l%,$(basename $(notdir $(LINKLIBS))))
# Add the board-specific library and directory
BOARDDIR = $(TOPDIR)/configs/sim/src
LDPATHS += -L $(BOARDDIR)
LDLIBS += -lboard
# Make targets begin here
all: up_head$(OBJEXT) libarch$(LIBEXT)
.PHONY: export_head clean distclean cleanrel depend
......@@ -123,11 +134,19 @@ $(HOSTOBJS): %$(OBJEXT): %.c
@$(CC) -c $(HOSTCFLAGS) $< -o $@
# The architecture-specific library
libarch$(LIBEXT): $(NXOBJS)
@( for obj in $(NXOBJS) ; do \
libarch$(LIBEXT): $(NUTTXOBJS)
@( for obj in $(NUTTXOBJS) ; do \
$(call ARCHIVE, $@, $${obj}); \
done ; )
# The "board"-specific library. Of course, there really are no boards in
# the simulation. However, this is a good place to keep parts of the simulation
# that are not hardware-related.
$(BOARDDIR)/libboard$(LIBEXT):
@$(MAKE) -C $(BOARDDIR) TOPDIR="$(TOPDIR)" libboard$(LIBEXT) EXTRADEFINES=$(EXTRADEFINES)
# A partially linked object containing only NuttX code (no interface to host OS)
# Change the names of most symbols that conflict with libc symbols.
......@@ -140,7 +159,7 @@ GNU/Linux-names.dat: GNU nuttx-names.dat
Cygwin-names.dat: nuttx-names.dat
@cat $^ | sed -e "s/^/_/g" >$@
nuttx.rel : libarch$(LIBEXT) $(HOSTOS)-names.dat $(LINKOBJS)
nuttx.rel : libarch$(LIBEXT) $(BOARDDIR)/libboard$(LIBEXT) $(HOSTOS)-names.dat $(LINKOBJS)
@echo "LD: nuttx.rel"
@$(LD) -r $(LDFLAGS) $(LDPATHS) -o $@ $(LINKOBJS) --start-group $(LDLIBS) --end-group $(EXTRA_LIBS)
@$(OBJCOPY) --redefine-syms=$(HOSTOS)-names.dat $@
......
......@@ -714,7 +714,7 @@ void sim_tcuninitialize(void)
(void)snprintf(devname, DEV_NAMELEN, DEV_FORMAT, priv->minor);
ivdbg("Un-registering %s\n", devname);
ret = runegister_driver(devname);
ret = unregister_driver(devname);
if (ret < 0)
{
idbg("uregister_driver() failed: %d\n", ret);
......
......@@ -208,7 +208,7 @@ nx
CONFIG_SIM_X11FB - Use X11 window for framebuffer
See the nx11 configuration below for more information.
See the "nx11" configuration below for more information.
Multi- and Single-User Modes
----------------------------
......@@ -267,7 +267,8 @@ nx11
CONFIG_SIM_TOUCHSCREEN=y
Then you must also have some application logic that will call
sim_tcinitializ(0) to register the touchscreen driver.
sim_tcinitialize(0) to register the touchscreen driver. See
also configuration "touchscreen"
NOTES:
......@@ -322,3 +323,24 @@ pashello
cd <nuttx-directory>/tools
./configure.sh sim/pashello
touchscreen
Description
-----------
This configuration uses the simple touchscreen test at
apps/examples/touchscreen. This test will create an empty X11 window
and will print the touchscreen output as it is received from the
simulated touchscreen driver. This configuration may
by selected as follows:
cd <nuttx-directory>/tools
./configure.sh sim/touchscreen
Since this example uses the simulated frame buffer driver, the
most of the configuration settings discussed for the "nx11"
configuration also apply here. See that discussion above.
See apps/examples/README.txt for further information about build
requirements and configuration settings.
############################################################################
# configs/sim/src/Makefile
#
# Copyright (C) 2007, 2008 Gregory Nutt. All rights reserved.
# Copyright (C) 2007, 2008, 2011 Gregory Nutt. All rights reserved.
# Author: Gregory Nutt <spudmonkey@racsa.co.cr>
#
# Redistribution and use in source and binary forms, with or without
......@@ -33,17 +33,23 @@
#
############################################################################
-include $(TOPDIR)/Make.defs
include $(TOPDIR)/Make.defs
CFLAGS += -I$(TOPDIR)/sched
CFLAGS += -I$(TOPDIR)/sched
ASRCS =
AOBJS = $(ASRCS:.S=$(OBJEXT))
CSRCS =
COBJS = $(CSRCS:.c=$(OBJEXT))
ASRCS =
AOBJS = $(ASRCS:.S=$(OBJEXT))
SRCS = $(ASRCS) $(CSRCS)
OBJS = $(AOBJS) $(COBJS)
CSRCS =
ifeq ($(CONFIG_SIM_X11FB),y)
ifeq ($(CONFIG_SIM_TOUCHSCREEN),y)
CSRCS += up_touchscreen.c
endif
endif
COBJS = $(CSRCS:.c=$(OBJEXT))
SRCS = $(ASRCS) $(CSRCS)
OBJS = $(AOBJS) $(COBJS)
all: libboard$(LIBEXT)
......@@ -54,9 +60,12 @@ $(COBJS) $(LINKOBJS): %$(OBJEXT): %.c
$(call COMPILE, $<, $@)
libboard$(LIBEXT): $(OBJS)
@$(AR) $@ # Create an empty archive
ifneq ($(OBJS),)
@( for obj in $(OBJS) ; do \
$(call ARCHIVE, $@, $${obj}); \
done ; )
endif
.depend: Makefile $(SRCS)
@$(MKDEP) $(CC) -- $(CFLAGS) -- $(SRCS) >Make.dep
......
/****************************************************************************
* config/sim/src/up_touchscreen.c
*
* Copyright (C) 2011 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* 3. Neither the name NuttX nor the names of its contributors may be
* used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
****************************************************************************/
/****************************************************************************
* Included Files
****************************************************************************/
#include <nuttx/config.h>
#include <sys/types.h>
#include <stdint.h>
#include <errno.h>
#include <debug.h>
#include <nuttx/fb.h>
#include <nuttx/input/touchscreen.h>
#include <nuttx/nx/nx.h>
#include <nuttx/nx/nxglib.h>
/****************************************************************************
* Pre-processor Definitions
****************************************************************************/
/* Configuration ************************************************************/
/* Pick a background color */
#ifndef CONFIG_EXAMPLES_TOUCHSCREEN_BGCOLOR
# define CONFIG_EXAMPLES_TOUCHSCREEN_BGCOLOR 0x007b68ee
#endif
/****************************************************************************
* Private Types
****************************************************************************/
struct sim_touchscreen_s
{
NXHANDLE hnx;
};
/****************************************************************************
* Private Data
****************************************************************************/
static struct sim_touchscreen_s g_simtc;
/****************************************************************************
* Private Functions
****************************************************************************/
/****************************************************************************
* Public Functions
****************************************************************************/
/****************************************************************************
* Name: arch_tcinitialize()
*
* Description:
* Perform architecuture-specific initialization of the touchscreen
* hardware. This interface must be provided by all configurations
* using apps/examples/touchscreen
*
****************************************************************************/
int arch_tcinitialize(int minor)
{
FAR NX_DRIVERTYPE *dev;
nxgl_mxpixel_t color;
int ret;
/* Initialize the simulated frame buffer device. We need to create an
* X11 window to support the mouse-driven touchscreen simulation.
*/
ivdbg("Initializing framebuffer\n");
ret = up_fbinitialize();
if (ret < 0)
{
idbg("up_fbinitialize failed: %d\n", -ret);
goto errout;
}
dev = up_fbgetvplane(0);
if (!dev)
{
idbg("up_fbgetvplane 0 failed\n");
ret = -ENODEV;
goto errout_with_fb;
}
/* Then open NX */
ivdbg("Open NX\n");
g_simtc.hnx = nx_open(dev);
if (!g_simtc.hnx)
{
ret = -errno;
idbg("nx_open failed: %d\n", ret);
goto errout_with_fb;
}
/* Set the background to the configured background color */
ivdbg("Set background color=%d\n", CONFIG_EXAMPLES_TOUCHSCREEN_BGCOLOR);
color = CONFIG_EXAMPLES_TOUCHSCREEN_BGCOLOR;
ret = nx_setbgcolor(g_simtc.hnx, &color);
if (ret < 0)
{
idbg("nx_setbgcolor failed: %d\n", ret);
goto errout_with_nx;
}
/* Finally, initialize the touchscreen simulation on the X window */
ret = sim_tcinitialize(minor);
if (ret < 0)
{
idbg("sim_tcinitialize failed: %d\n", ret);
goto errout_with_nx;
}
return OK;
errout_with_nx:
nx_close(g_simtc.hnx);
goto errout;
errout_with_fb:
fb_uninitialize();
errout:
return ret;
}
/****************************************************************************
* Name: arch_tcuninitialize()
*
* Description:
* Perform architecuture-specific un-initialization of the touchscreen
* hardware. This interface must be provided by all configurations
* using apps/examples/touchscreen
*
****************************************************************************/
void arch_tcuninitialize(void)
{
/* Shut down the touchscreen driver */
sim_tcuninitialize();
/* Close NX */
nx_close(g_simtc.hnx);
}
############################################################################
# configs/sim/touchscreen/Make.defs
#
# Copyright (C) 2011 Gregory Nutt. All rights reserved.
# Author: Gregory Nutt <spudmonkey@racsa.co.cr>
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in
# the documentation and/or other materials provided with the
# distribution.
# 3. Neither the name NuttX nor the names of its contributors may be
# used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
############################################################################
include ${TOPDIR}/.config
HOSTOS = ${shell uname -o 2>/dev/null || echo "Other"}
ifeq ($(CONFIG_DEBUG_SYMBOLS),y)
ARCHOPTIMIZATION = -g
else
ARCHOPTIMIZATION = -O2
endif
ARCHCPUFLAGS = -fno-builtin
ARCHPICFLAGS = -fpic
ARCHWARNINGS = -Wall -Wstrict-prototypes -Wshadow
ARCHDEFINES =
ARCHINCLUDES = -I. -isystem $(TOPDIR)/include
ARCHSCRIPT =
CROSSDEV =
CC = $(CROSSDEV)gcc
CPP = $(CROSSDEV)gcc -E
LD = $(CROSSDEV)ld
AR = $(CROSSDEV)ar rcs
NM = $(CROSSDEV)nm
OBJCOPY = $(CROSSDEV)objcopy
OBJDUMP = $(CROSSDEV)objdump
CFLAGS = $(ARCHWARNINGS) $(ARCHOPTIMIZATION) \
$(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES) -pipe
CPPFLAGS = $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES)
AFLAGS = $(CFLAGS) -D__ASSEMBLY__
OBJEXT = .o
LIBEXT = .a
ifeq ($(HOSTOS),Cygwin)
EXEEXT = .exe
else
EXEEXT =
endif
ifeq ("${CONFIG_DEBUG_SYMBOLS}","y")
LDFLAGS += -g
endif
define PREPROCESS
@echo "CPP: $1->$2"
@$(CPP) $(CPPFLAGS) $1 -o $2
endef
define COMPILE
@echo "CC: $1"
@$(CC) -c $(CFLAGS) $1 -o $2
endef
define ASSEMBLE
@echo "AS: $1"
@$(CC) -c $(AFLAGS) $1 -o $2
endef
define ARCHIVE
echo "AR: $2"; \
$(AR) $1 $2 || { echo "$(AR) $1 $2 FAILED!" ; exit 1 ; }
endef
define CLEAN
@rm -f *.o *.a
endef
MKDEP = $(TOPDIR)/tools/mkdeps.sh
HOSTCC = gcc
HOSTINCLUDES = -I.
HOSTCFLAGS = $(ARCHWARNINGS) $(ARCHOPTIMIZATION) \
$(ARCHCPUFLAGS) $(HOSTINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES) -pipe
HOSTLDFLAGS =
############################################################################
# configs/sim/touchscreen/appconfig
#
# Copyright (C) 2011 Gregory Nutt. All rights reserved.
# Author: Gregory Nutt <spudmonkey@racsa.co.cr>
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in
# the documentation and/or other materials provided with the
# distribution.
# 3. Neither the name NuttX nor the names of its contributors may be
# used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
############################################################################
# Path to example in apps/examples containing the user_start entry point
CONFIGURED_APPS += examples/touchscreen
This diff is collapsed.
#!/bin/bash
# sim/touchscreen/setenv.sh
#
# Copyright (C) 2011 Gregory Nutt. All rights reserved.
# Author: Gregory Nutt <spudmonkey@racsa.co.cr>
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in
# the documentation and/or other materials provided with the
# distribution.
# 3. Neither the name NuttX nor the names of its contributors may be
# used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
if [ "$(basename $0)" = "setenv.sh" ] ; then
echo "You must source this script, not run it!" 1>&2
exit 1
fi
if [ -z ${PATH_ORIG} ]; then export PATH_ORIG=${PATH}; fi
#export NUTTX_BIN=
#export PATH=${NUTTX_BIN}:/sbin:/usr/sbin:${PATH_ORIG}
echo "PATH : ${PATH}"
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment