From 67b3d1c514e4c375f5ae54c4ba07d0560661c5fb Mon Sep 17 00:00:00 2001 From: Gregory Nutt Date: Mon, 8 Dec 2014 10:54:58 -0600 Subject: Extend the simulator to provide special initialization for the Traveler game --- apps/graphics/traveler/src/trv_world.c | 3 +- nuttx/configs/sim/src/Makefile | 7 +- nuttx/configs/sim/src/sim_boot.c | 92 ++++++++++++++++ nuttx/configs/sim/src/sim_touchscreen.c | 182 ++++++++++++++++++++++++++++++++ nuttx/configs/sim/src/up_touchscreen.c | 182 -------------------------------- 5 files changed, 282 insertions(+), 184 deletions(-) create mode 100644 nuttx/configs/sim/src/sim_boot.c create mode 100644 nuttx/configs/sim/src/sim_touchscreen.c delete mode 100644 nuttx/configs/sim/src/up_touchscreen.c diff --git a/apps/graphics/traveler/src/trv_world.c b/apps/graphics/traveler/src/trv_world.c index f48e23f2a..76a837d0b 100644 --- a/apps/graphics/traveler/src/trv_world.c +++ b/apps/graphics/traveler/src/trv_world.c @@ -449,7 +449,8 @@ int trv_world_create(FAR const char *wldpath, FAR const char *wldfile) if (!inihandle) { - fprintf(stderr, "ERROR: Could not open INI file=\"%s\"\n", fullpath); + fprintf(stderr, "ERROR: Could not open INI file=\"%s/%s\"\n", + wldpath, wldfile); return -ENOENT; } diff --git a/nuttx/configs/sim/src/Makefile b/nuttx/configs/sim/src/Makefile index 3dcbe6af3..73de2f5b5 100644 --- a/nuttx/configs/sim/src/Makefile +++ b/nuttx/configs/sim/src/Makefile @@ -41,9 +41,14 @@ ASRCS = AOBJS = $(ASRCS:.S=$(OBJEXT)) CSRCS = + +ifeq ($(CONFIG_BOARD_INITIALIZE),y) + CSRCS += sim_boot.c +endif + ifeq ($(CONFIG_SIM_X11FB),y) ifeq ($(CONFIG_SIM_TOUCHSCREEN),y) - CSRCS += up_touchscreen.c + CSRCS += sim_touchscreen.c endif endif COBJS = $(CSRCS:.c=$(OBJEXT)) diff --git a/nuttx/configs/sim/src/sim_boot.c b/nuttx/configs/sim/src/sim_boot.c new file mode 100644 index 000000000..ef84a689e --- /dev/null +++ b/nuttx/configs/sim/src/sim_boot.c @@ -0,0 +1,92 @@ +/**************************************************************************** + * config/sim/src/sim_boot.c + * + * Copyright (C) 2014 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt + * + * 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 +#include + +#ifdef CONFIG_GRAPHICS_TRAVELER_ROMFSDEMO +int trv_mount_world(int minor, FAR const char *mountpoint); +#endif + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/**************************************************************************** + * Private Types + ****************************************************************************/ + +/**************************************************************************** + * Private Data + ****************************************************************************/ + +/**************************************************************************** + * Private Functions + ****************************************************************************/ + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: board_initialize + * + * Description: + * If CONFIG_BOARD_INITIALIZE is selected, then an additional + * initialization call will be performed in the boot-up sequence to a + * function called board_initialize(). board_initialize() will be + * called immediately after up_intiialize() is called and just before the + * initial application is started. This additional initialization phase + * may be used, for example, to initialize board-specific device drivers. + * + ****************************************************************************/ + +#ifdef CONFIG_BOARD_INITIALIZE +void board_initialize(void) +{ +#ifdef CONFIG_GRAPHICS_TRAVELER_ROMFSDEMO + /* Special initialization for the Traveler game simulation */ + + (void)trv_mount_world(0, CONFIG_GRAPHICS_TRAVELER_DEFPATH); + +#endif + +} +#endif /* CONFIG_BOARD_INITIALIZE */ + diff --git a/nuttx/configs/sim/src/sim_touchscreen.c b/nuttx/configs/sim/src/sim_touchscreen.c new file mode 100644 index 000000000..f91674c44 --- /dev/null +++ b/nuttx/configs/sim/src/sim_touchscreen.c @@ -0,0 +1,182 @@ +/**************************************************************************** + * config/sim/src/sim_touchscreen.c + * + * Copyright (C) 2011 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt + * + * 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 + +#include +#include +#include +#include + +#include +#include +#include +#include + +/**************************************************************************** + * 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 = arch_tcinitialize(minor); + if (ret < 0) + { + idbg("arch_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); +} diff --git a/nuttx/configs/sim/src/up_touchscreen.c b/nuttx/configs/sim/src/up_touchscreen.c deleted file mode 100644 index 0c102f212..000000000 --- a/nuttx/configs/sim/src/up_touchscreen.c +++ /dev/null @@ -1,182 +0,0 @@ -/**************************************************************************** - * config/sim/src/up_touchscreen.c - * - * Copyright (C) 2011 Gregory Nutt. All rights reserved. - * Author: Gregory Nutt - * - * 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 - -#include -#include -#include -#include - -#include -#include -#include -#include - -/**************************************************************************** - * 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 = arch_tcinitialize(minor); - if (ret < 0) - { - idbg("arch_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); -} -- cgit v1.2.3