summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NxWidgets/UnitTests/README.txt28
-rw-r--r--NxWidgets/UnitTests/nxwm/Makefile40
-rw-r--r--NxWidgets/UnitTests/nxwm/main.cxx22
-rw-r--r--NxWidgets/libnxwidgets/include/cnxserver.hxx20
-rw-r--r--NxWidgets/libnxwidgets/include/nxconfig.hxx44
-rw-r--r--NxWidgets/libnxwidgets/src/cnxserver.cxx89
-rw-r--r--NxWidgets/nxwm/include/capplicationwindow.hxx22
-rw-r--r--NxWidgets/nxwm/include/cnxconsole.hxx15
-rw-r--r--NxWidgets/nxwm/include/cstartwindow.hxx27
-rw-r--r--NxWidgets/nxwm/include/ctaskbar.hxx47
-rw-r--r--NxWidgets/nxwm/include/nxwmconfig.hxx97
-rw-r--r--NxWidgets/nxwm/src/cnxconsole.cxx203
-rw-r--r--NxWidgets/nxwm/src/ctaskbar.cxx158
-rw-r--r--NxWidgets/nxwm/src/glyph_minimize.cxx2
-rw-r--r--NxWidgets/nxwm/src/glyph_nsh.cxx2
-rw-r--r--NxWidgets/nxwm/src/glyph_start.cxx2
-rw-r--r--NxWidgets/nxwm/src/glyph_stop.cxx2
-rw-r--r--nuttx/ChangeLog4
-rw-r--r--nuttx/configs/sim/README.txt15
-rw-r--r--nuttx/configs/sim/nx11/defconfig6
-rw-r--r--nuttx/configs/sim/nxwm/Make.defs121
-rw-r--r--nuttx/configs/sim/nxwm/appconfig40
-rw-r--r--nuttx/configs/sim/nxwm/defconfig851
-rwxr-xr-xnuttx/configs/sim/nxwm/setenv.sh45
-rwxr-xr-xnuttx/include/cxx/cunistd70
25 files changed, 1715 insertions, 257 deletions
diff --git a/NxWidgets/UnitTests/README.txt b/NxWidgets/UnitTests/README.txt
index 8534efb9d..b19ed4462 100644
--- a/NxWidgets/UnitTests/README.txt
+++ b/NxWidgets/UnitTests/README.txt
@@ -35,6 +35,9 @@ Installing and Building the Unit Tests
for the STM3210E-EVAL available. However, the unit test can be run on
other configurations (see steps d and e below).
+ NOTE: The special configuratin sim/nxwm is recommended for unit-leveling
+ testing of NxWM because the configuration is more complex in that case.
+
We will assume the sim/nsh2 configuration in this discussion. The
sim/nsh2 configuration is installed as follows:
@@ -48,7 +51,7 @@ Installing and Building the Unit Tests
<nuttx-directory-path> is the full, absolute path to the NuttX build directory
If you are using the sim/nsh2 or stm3210e-eval configurations, then skip
- to step 2.
+ to step 2 (Hmmm.. better check 1d) too).
There may be certain requirements for the configuration that you select...
for example, certain widget tests may require touchscreen support or special
@@ -77,7 +80,12 @@ Installing and Building the Unit Tests
Then you can run the simulation using GDB or DDD which is a very powerful
debugging environment!
- d) Other nuttx/.config changes -- NSH configurations only.
+ d) Special configuration requirements for the nxwm unit test:
+
+ CONFIG_NXCONSOLE=y
+ CONFIG_NX_MULTIUSER=y
+
+ e) Other nuttx/.config changes -- NSH configurations only.
If the configuration that you are using supports NSH and NSH built-in tasks
then all is well. If it is an NSH configuration, then you will have to define
@@ -89,7 +97,7 @@ Installing and Building the Unit Tests
to change anything further in the nuttx/.config file if you are using either
of these configurations.
- e) Other apps/.config changes -- NON-NSH configurations only.
+ f) Other apps/.config changes -- NON-NSH configurations only.
For non-NSH configurations (such as the sim/touchscreen) you will have to
remove the CONFIGURED_APPS seting that contains the user_start function so
@@ -147,7 +155,15 @@ Installing and Building the Unit Tests
cd <nxwidgets-directory>/libnxwidgets
make TOPDIR=<nuttx-directory-path>
-6. Build NuttX including the unit test and the NXWidgets library
+6. Build the NxWM library.
+
+ The NxWM library (libnxwm.a) is required only for the NxWM unit test at
+ NxWidgets/UnitTests/nxwm. For other unit tests, skip to step 7.
+
+ cd <nxwidgets-directory>/nxwm
+ make TOPDIR=<nuttx-directory-path>
+
+7. Build NuttX including the unit test and the NXWidgets library
cd <nuttx-directory-path>
. ./setenv.sh
@@ -268,6 +284,10 @@ CTextBox
Exercises the CTextBox widget
Depends on CLabel
+nxwm
+ Exercises the NxWM window manager.
+ Use the special configuration nuttx/configs/sim/nxwm
+
Example
=======
diff --git a/NxWidgets/UnitTests/nxwm/Makefile b/NxWidgets/UnitTests/nxwm/Makefile
index d9cf2d051..9648ad807 100644
--- a/NxWidgets/UnitTests/nxwm/Makefile
+++ b/NxWidgets/UnitTests/nxwm/Makefile
@@ -54,12 +54,26 @@ else
CXXFLAGS += ${shell $(INCDIR) "$(CXX)" "$(NXWIDGETS_INC)"}
endif
+# Add the path to the NxWM include directory to the CFLAGS
+
+NXWM_DIR="$(TESTDIR)/../../nxwm"
+NXWM_INC="$(NXWM_DIR)/include"
+NXWM_LIB="$(NXWM_DIR)/libnxwm$(LIBEXT)"
+
+ifeq ($(WINTOOL),y)
+ CFLAGS += ${shell $(INCDIR) -w "$(CC)" "$(NXWM_INC)"}
+ CXXFLAGS += ${shell $(INCDIR) -w "$(CXX)" "$(NXWM_INC)"}
+else
+ CFLAGS += ${shell $(INCDIR) "$(CC)" "$(NXWM_INC)"}
+ CXXFLAGS += ${shell $(INCDIR) "$(CXX)" "$(NXWM_INC)"}
+endif
+
# Get the path to the archiver tool
TESTTOOL_DIR="$(TESTDIR)/../../tools"
ARCHIVER=$(TESTTOOL_DIR)/addobjs.sh
-# Hello, World! C++ Example
+# NxWM unit test
ASRCS =
CSRCS =
@@ -92,7 +106,7 @@ STACKSIZE = 2048
VPATH =
all: .built
-.PHONY: clean depend context disclean chkcxx chklib
+.PHONY: clean depend context disclean chkcxx chklibnxwidgets chklibnxwm
# Object file creation targets
@@ -121,7 +135,7 @@ endif
# Verify that the NXWidget library has been built
-chklib:
+chklibnxwidgets:
@( \
if [ ! -e "$(NXWIDGETS_LIB)" ]; then \
echo "$(NXWIDGETS_LIB) does not exist."; \
@@ -131,18 +145,34 @@ chklib:
fi; \
)
+# Verify that the NxWM library has been built
+
+chklibnxwm:
+ @( \
+ if [ ! -e "$(NXWM_LIB)" ]; then \
+ echo "$(NXWM_LIB) does not exist."; \
+ echo "Please go to $(NXWM_LIB)"; \
+ echo "and rebuild the library"; \
+ exit 1; \
+ fi; \
+ )
+
# Library creation targets
-$(NXWIDGETS_LIB): # Just to keep make happy. chklib does the work.
+$(NXWIDGETS_LIB): # Just to keep make happy. chklibnxwidgets does the work.
+
+$(NXWM_LIB): # Just to keep make happy. chklibnxwm does the work.
-.built: chkcxx chklib $(OBJS) $(NXWIDGETS_LIB)
+.built: chkcxx chklibnxwidgets chklibnxwm $(OBJS) $(NXWIDGETS_LIB)
@( for obj in $(OBJS) ; do \
$(call ARCHIVE, $(BIN), $${obj}); \
done ; )
ifeq ($(WINTOOL),y)
@$(ARCHIVER) -w -p "$(CROSSDEV)" $(BIN) $(NXWIDGETS_DIR)
+ @$(ARCHIVER) -w -p "$(CROSSDEV)" $(BIN) $(NXWM_DIR)
else
@$(ARCHIVER) -p "$(CROSSDEV)" $(BIN) $(NXWIDGETS_DIR)
+ @$(ARCHIVER) -p "$(CROSSDEV)" $(BIN) $(NXWM_DIR)
endif
@touch .built
diff --git a/NxWidgets/UnitTests/nxwm/main.cxx b/NxWidgets/UnitTests/nxwm/main.cxx
index b0792c1f4..d93d9b391 100644
--- a/NxWidgets/UnitTests/nxwm/main.cxx
+++ b/NxWidgets/UnitTests/nxwm/main.cxx
@@ -40,8 +40,12 @@
#include <nuttx/config.h>
#include <nuttx/arch.h>
+#include <cstdio>
+#include <cstdlib>
+
#include "ctaskbar.hxx"
#include "cstartwindow.hxx"
+#include "cnxconsole.hxx"
/////////////////////////////////////////////////////////////////////////////
// Pre-processor Definitions
@@ -61,7 +65,7 @@
// Private Types
/////////////////////////////////////////////////////////////////////////////
-struct nxwm_test_s
+struct SNxWmTest
{
NxWM::CTaskbar *taskbar; // The task bar
NxWM::CStartWindow *startwindow; // The start window
@@ -71,7 +75,7 @@ struct nxwm_test_s
// Private Data
/////////////////////////////////////////////////////////////////////////////
-static struct nxwm_test_s g_nxwmtest;
+static struct SNxWmTest g_nxwmtest;
/////////////////////////////////////////////////////////////////////////////
// Public Function Prototypes
@@ -109,7 +113,7 @@ int MAIN_NAME(int argc, char *argv[])
// 4. Call CTaskBar::startWindowManager to start the display with applications in place
printf(MAIN_STRING "Create CTaskbar instance\n");
- g_nxwmtest.taskbar = new CTaskbar();
+ g_nxwmtest.taskbar = new NxWM::CTaskbar();
if (!g_nxwmtest.taskbar)
{
printf(MAIN_STRING "ERROR: Failed to instantiate CTaskbar\n");
@@ -150,7 +154,7 @@ int MAIN_NAME(int argc, char *argv[])
// window application.
printf(MAIN_STRING "Opening the start window application window\n");
- CApplicationWindow *window = g_nxwmtest.taskbar->openApplicationWindow();
+ NxWM::CApplicationWindow *window = g_nxwmtest.taskbar->openApplicationWindow();
if (!window)
{
printf(MAIN_STRING "ERROR: Failed to create CApplicationWindow for the start window\n");
@@ -170,7 +174,8 @@ int MAIN_NAME(int argc, char *argv[])
// Add the NxConsole application to the start window
-#if 0
+ NxWM::CNxConsole *console = (NxWM::CNxConsole *)0; // Avoid compiler complaint
+
printf(MAIN_STRING "Opening the NxConsole application window\n");
window = g_nxwmtest.taskbar->openApplicationWindow();
if (!window)
@@ -180,7 +185,7 @@ int MAIN_NAME(int argc, char *argv[])
}
printf(MAIN_STRING "Creating the NxConsole application\n");
- NxWM::CNxConsole *console = new CNxConsole(window);
+ console = new NxWM::CNxConsole(g_nxwmtest.taskbar, window);
if (!console)
{
printf(MAIN_STRING "ERROR: Failed to instantiate CNxConsole\n");
@@ -196,11 +201,12 @@ int MAIN_NAME(int argc, char *argv[])
}
noconsole:
-#endif
// Add the calculator application to the start window
#if 0
+ NxWM::CCalculator *calculator = (NxWM::CCalculator *)0; // Avoid compiler complaint
+
printf(MAIN_STRING "Opening the calculator application window\n");
window = g_nxwmtest.taskbar->openApplicationWindow();
if (!window)
@@ -210,7 +216,7 @@ noconsole:
}
printf(MAIN_STRING "Creating the calculator application\n");
- NxWM::CCalculator *calculator = new CCalculator(window);
+ calculator = new NxWM::CCalculator(g_nxwmtest.taskbar, window);
if (!calculator)
{
printf(MAIN_STRING "ERROR: Failed to instantiate calculator\n");
diff --git a/NxWidgets/libnxwidgets/include/cnxserver.hxx b/NxWidgets/libnxwidgets/include/cnxserver.hxx
index 3043fd9e0..c6ca21bfc 100644
--- a/NxWidgets/libnxwidgets/include/cnxserver.hxx
+++ b/NxWidgets/libnxwidgets/include/cnxserver.hxx
@@ -44,6 +44,7 @@
#include <stdint.h>
#include <stdbool.h>
+#include <semaphore.h>
#include <nuttx/nx/nx.h>
@@ -79,21 +80,28 @@ namespace NXWidgets
class CNxServer
{
private:
-#ifndef CONFIG_NX_MULTIUSER
FAR NX_DRIVERTYPE *m_hDevice; /**< LCD/Framebuffer device handle */
-#endif
NXHANDLE m_hNxServer; /**< NX server handle */
#ifdef CONFIG_NX_MULTIUSER
- voilatile bool m_running; /**< True: The listener thread is running */
- voilatile bool m_connected; /**< True: Connected to the server */
+ volatile bool m_running; /**< True: The listener thread is running */
+ volatile bool m_connected; /**< True: Connected to the server */
volatile bool m_stop; /**< True: Waiting for the listener thread to stop */
sem_t m_connsem; /**< Wait for server connection */
#endif
static uint8_t m_nServers; /**< The number of NX server instances */
/**
- * This is the entry point of a thread that listeners for and dispatches
- * events from the NX server.
+ * NX server thread. This is the entry point into the server thread that
+ * serializes the multi-threaded accesses to the display.
+ */
+
+#ifdef CONFIG_NX_MULTIUSER
+ static int server(int argc, char *argv[]);
+#endif
+
+ /**
+ * NX listener thread. This is the entry point of a thread that listeners for and
+ * dispatches events from the NX server.
*/
#ifdef CONFIG_NX_MULTIUSER
diff --git a/NxWidgets/libnxwidgets/include/nxconfig.hxx b/NxWidgets/libnxwidgets/include/nxconfig.hxx
index 2f38c7c26..682eadb82 100644
--- a/NxWidgets/libnxwidgets/include/nxconfig.hxx
+++ b/NxWidgets/libnxwidgets/include/nxconfig.hxx
@@ -52,13 +52,20 @@
* Pre-Processor Definitions
****************************************************************************/
/* NX Configuration *********************************************************/
+/**
+ * C++ support is required
+ */
+
+#ifndef CONFIG_HAVE_CXX
+# error "C++ support is required (CONFIG_HAVE_CXX)"
+#endif
/**
* Required to enabled NX graphics support
*/
#ifndef CONFIG_NX
-# error "NX mouse/touchscreen support is required (CONFIG_NX_MOUSE)"
+# error "NX graphics support is required (CONFIG_NX)"
#endif
/**
@@ -112,7 +119,19 @@
*/
#ifndef CONFIG_NXWIDGETS_SERVERPRIO
-# define CONFIG_NXWIDGETS_SERVERPRIO 50
+# define CONFIG_NXWIDGETS_SERVERPRIO SCHED_PRIORITY_DEFAULT
+#endif
+
+#ifndef CONFIG_NXWIDGETS_CLIENTPRIO
+# define CONFIG_NXWIDGETS_CLIENTPRIO SCHED_PRIORITY_DEFAULT
+#endif
+
+/**
+ * NX server thread stack size (in multi-user mode)
+ */
+
+#ifndef CONFIG_NXWIDGETS_SERVERSTACK
+# define CONFIG_NXWIDGETS_SERVERSTACK 2048
#endif
/**
@@ -120,30 +139,35 @@
*/
#ifndef CONFIG_NXWIDGETS_LISTENERPRIO
-# define CONFIG_NXWIDGETS_LISTENERPRIO 50
+# define CONFIG_NXWIDGETS_LISTENERPRIO SCHED_PRIORITY_DEFAULT
#endif
/**
- * NX server/listener thread stack size (in multi-user mode)
+ * NX listener thread stack size (in multi-user mode)
*/
-#ifndef CONFIG_NXWIDGETS_STACKSIZE
-# define CONFIG_NXWIDGETS_STACKSIZE 4096
+#ifndef CONFIG_NXWIDGETS_LISTENERSTACK
+# define CONFIG_NXWIDGETS_LISTENERSTACK 2048
#endif
/* NXWidget Configuration ***************************************************/
-/* NX Server/Device Configuration
+/**
+ * NX Server/Device Configuration
*
* CONFIG_NXWIDGETS_DEVNO - LCD device number (in case there are more than
* one LCDs connected. Default: 0
* CONFIG_NXWIDGETS_VPLANE - Only a single video plane is supported. Default: 0
* CONFIG_NXWIDGETS_SERVERPRIO - Priority of the NX server (in multi-user mode).
* Default: 50
- * CONFIG_NXWIDGETS_SERVERPRIO
+ * CONFIG_NXWIDGETS_CLIENTPRIO
* CONFIG_NXWIDGETS_LISTENERPRIO - Priority of the NX event listener thread (in
* multi-user mode). Default: 50
- * CONFIG_NXWIDGETS_STACKSIZE - Priority of the NX server/listener thread
- * stack size (in multi-user mode). Default: 4096
+ * CONFIG_NXWIDGETS_EXTERNINIT - Define to support external display
+ * initialization.
+ * CONFIG_NXWIDGETS_SERVERSTACK - NX server thread stack size (in multi-user
+ * mode). Default 2048
+ * CONFIG_NXWIDGETS_LISTENERSTACK - NX listener thread stack size (in multi-user
+ * mode). Default 2048
*
* NXWidget Configuration
*
diff --git a/NxWidgets/libnxwidgets/src/cnxserver.cxx b/NxWidgets/libnxwidgets/src/cnxserver.cxx
index ef71deb44..69b1c5c4e 100644
--- a/NxWidgets/libnxwidgets/src/cnxserver.cxx
+++ b/NxWidgets/libnxwidgets/src/cnxserver.cxx
@@ -42,6 +42,8 @@
#include <sys/types.h>
#include <stdint.h>
#include <stdbool.h>
+#include <unistd.h>
+#include <cstdlib>
#include <cerrno>
#include <debug.h>
@@ -212,12 +214,12 @@ bool CNxServer::connect(void)
// Start the server task
- message("NxServer::connect: Starting nx_servertask task\n");
+ gvdbg("NxServer::connect: Starting server task\n");
serverId = task_create("NX Server", CONFIG_NXWIDGETS_SERVERPRIO,
- CONFIG_NXWIDGETS_STACKSIZE, nx_servertask, NULL);
+ CONFIG_NXWIDGETS_SERVERSTACK, server, (FAR const char **)0);
if (serverId < 0)
{
- message("NxServer::connect: Failed to create nx_servertask task: %d\n", errno);
+ gdbg("NxServer::connect: Failed to create nx_servertask task: %d\n", errno);
return false;
}
@@ -239,7 +241,7 @@ bool CNxServer::connect(void)
(void)pthread_attr_init(&attr);
param.sched_priority = CONFIG_NXWIDGETS_LISTENERPRIO;
(void)pthread_attr_setschedparam(&attr, &param);
- (void)pthread_attr_setstacksize(&attr, CONFIG_NXWIDGETS_STACKSIZE);
+ (void)pthread_attr_setstacksize(&attr, CONFIG_NXWIDGETS_LISTENERSTACK);
m_stop = false;
m_running = true;
@@ -247,7 +249,7 @@ bool CNxServer::connect(void)
ret = pthread_create(&thread, &attr, listener, (FAR void *)this);
if (ret != 0)
{
- printf("NxServer::connect: pthread_create failed: %d\n", ret);
+ gdbg("NxServer::connect: pthread_create failed: %d\n", ret);
m_running = false;
disconnect();
return false;
@@ -266,7 +268,7 @@ bool CNxServer::connect(void)
// In the successful case, the listener is still running (m_running)
// and the server is connected (m_connected). Anything else is a failure.
- if (!m_connected !! !m_running)
+ if (!m_connected || !m_running)
{
disconnect();
return false;
@@ -333,6 +335,75 @@ void CNxServer::disconnect(void)
#endif
/**
+ * NX server thread. This is the entry point into the server thread that
+ * serializes the multi-threaded accesses to the display.
+ */
+
+#ifdef CONFIG_NX_MULTIUSER
+int CNxServer::server(int argc, char *argv[])
+{
+ FAR NX_DRIVERTYPE *dev;
+ int ret;
+
+#if defined(CONFIG_NXWIDGETS_EXTERNINIT)
+ /* Use external graphics driver initialization */
+
+ dev = up_nxdrvinit(CONFIG_NXWIDGETS_DEVNO);
+ if (!dev)
+ {
+ gdbg("up_nxdrvinit failed, devno=%d\n", CONFIG_NXWIDGETS_DEVNO);
+ return EXIT_FAILURE;
+ }
+
+#elif defined(CONFIG_NX_LCDDRIVER)
+ /* Initialize the LCD device */
+
+ ret = up_lcdinitialize();
+ if (ret < 0)
+ {
+ gdbg("up_lcdinitialize failed: %d\n", -ret);
+ return EXIT_FAILURE;
+ }
+
+ /* Get the device instance */
+
+ dev = up_lcdgetdev(CONFIG_NXWIDGETS_DEVNO);
+ if (!dev)
+ {
+ gdbg("up_lcdgetdev failed, devno=%d\n", CONFIG_NXWIDGETS_DEVNO);
+ return EXIT_FAILURE;
+ }
+
+ /* Turn the LCD on at 75% power */
+
+ (void)dev->setpower(dev, ((3*CONFIG_LCD_MAXPOWER + 3)/4));
+#else
+ /* Initialize the frame buffer device */
+
+ ret = up_fbinitialize();
+ if (ret < 0)
+ {
+ gdbg("nxcon_server: up_fbinitialize failed: %d\n", -ret);
+ return EXIT_FAILURE;
+ }
+
+ dev = up_fbgetvplane(CONFIG_NXWIDGETS_VPLANE);
+ if (!dev)
+ {
+ gdbg("up_fbgetvplane failed, vplane=%d\n", CONFIG_NXWIDGETS_VPLANE);
+ return 2;
+ }
+#endif
+
+ /* Then start the server */
+
+ ret = nx_run(dev);
+ gvdbg("nx_run returned: %d\n", errno);
+ return EXIT_FAILURE;
+}
+#endif
+
+/**
* This is the entry point of a thread that listeners for and dispatches
* events from the NX server.
*/
@@ -342,7 +413,7 @@ FAR void *CNxServer::listener(FAR void *arg)
{
// The argument must be the CNxServer instance
- CNxServer *This = (CNxServer*)pvArg;
+ CNxServer *This = (CNxServer*)arg;
// Process events forever
@@ -361,7 +432,7 @@ FAR void *CNxServer::listener(FAR void *arg)
// An error occurred... assume that we have lost connection with
// the server.
- gdbg("CNxServer::listener: Lost server connection: %d\n", errno);
+ gdbg("Lost server connection: %d\n", errno);
break;
}
@@ -371,7 +442,7 @@ FAR void *CNxServer::listener(FAR void *arg)
{
This->m_connected = true;
sem_post(&This->m_connsem);
- gdbg("CNxServer::listener: Connected\n");
+ gvdbg("Connected\n");
}
}
diff --git a/NxWidgets/nxwm/include/capplicationwindow.hxx b/NxWidgets/nxwm/include/capplicationwindow.hxx
index 3d868e576..adeac30dc 100644
--- a/NxWidgets/nxwm/include/capplicationwindow.hxx
+++ b/NxWidgets/nxwm/include/capplicationwindow.hxx
@@ -165,7 +165,27 @@ namespace NxWM
{
m_callback = callback;
}
- };
+
+ /**
+ * Simulate a mouse click on the minimize icon. This inline method is only
+ * used during automated testing of NxWM.
+ */
+
+ inline void clickMinimizeIcon(int index)
+ {
+ m_minimizeImage->click(0,0);
+ }
+
+ /**
+ * Simulate a mouse click on the stop applicaiton icon. This inline method is only
+ * used during automated testing of NxWM.
+ */
+
+ inline void clickStopIcon(int index)
+ {
+ m_stopImage->click(0,0);
+ }
+ };
}
#endif // __cplusplus
diff --git a/NxWidgets/nxwm/include/cnxconsole.hxx b/NxWidgets/nxwm/include/cnxconsole.hxx
index 99a9b92f2..7754276a7 100644
--- a/NxWidgets/nxwm/include/cnxconsole.hxx
+++ b/NxWidgets/nxwm/include/cnxconsole.hxx
@@ -33,8 +33,8 @@
*
****************************************************************************/
-#ifndef __INCLUDE_CNXCONSOLE_NXX
-#define __INCLUDE_CNXCONSOLE_NXX
+#ifndef __INCLUDE_CNXCONSOLE_HXX
+#define __INCLUDE_CNXCONSOLE_HXX
/****************************************************************************
* Included Files
@@ -77,12 +77,19 @@ namespace NxWM
class CNxConsole : public IApplication, private IApplicationCallback
{
- protected:
+ private:
CTaskbar *m_taskbar; /**< Reference to the "parent" taskbar */
CApplicationWindow *m_window; /**< Reference to the application window */
NXCONSOLE m_nxcon; /**< NxConsole handle */
pid_t m_pid; /**< Task ID of the NxConsole thread */
+ /**
+ * This is the NxConsole task. This function first redirects output to the
+ * console window.
+ */
+
+ static int nxconsole(int argc, char *argv[]);
+
/**
* Called when the window minimize button is pressed.
*/
@@ -170,4 +177,4 @@ namespace NxWM
}
#endif // __cplusplus
-#endif // __INCLUDE_CNXCONSOLE_NXX
+#endif // __INCLUDE_CNXCONSOLE_HXX
diff --git a/NxWidgets/nxwm/include/cstartwindow.hxx b/NxWidgets/nxwm/include/cstartwindow.hxx
index ab6b6f926..649bf3247 100644
--- a/NxWidgets/nxwm/include/cstartwindow.hxx
+++ b/NxWidgets/nxwm/include/cstartwindow.hxx
@@ -116,12 +116,6 @@ namespace NxWM
void handleClickEvent(const NXWidgets::CWidgetEventArgs &e);
- /**
- * CStartWindow Constructor
- */
-
- ~CStartWindow(void);
-
public:
/**
@@ -134,6 +128,12 @@ namespace NxWM
CStartWindow(CTaskbar *taskbar, CApplicationWindow *window);
/**
+ * CStartWindow Constructor
+ */
+
+ ~CStartWindow(void);
+
+ /**
* Each implementation of IApplication must provide a method to recover
* the contained CApplicationWindow instance.
*/
@@ -185,7 +185,7 @@ namespace NxWM
* CTaskbar when the application window must be displayed
*/
- virtual void redraw(void) = 0;
+ void redraw(void);
/**
* Add the application to the start window. The general sequence for
@@ -203,6 +203,19 @@ namespace NxWM
*/
bool addApplication(IApplication *app);
+
+ /**
+ * Simulate a mouse click on the icon at index. This inline method is only
+ * used during automated testing of NxWM.
+ */
+
+ inline void clickIcon(int index)
+ {
+ if (index < m_slots.size())
+ {
+ m_slots.at(index).image->click(0,0);
+ }
+ }
};
}
diff --git a/NxWidgets/nxwm/include/ctaskbar.hxx b/NxWidgets/nxwm/include/ctaskbar.hxx
index 1de4a7491..f5bef2054 100644
--- a/NxWidgets/nxwm/include/ctaskbar.hxx
+++ b/NxWidgets/nxwm/include/ctaskbar.hxx
@@ -101,18 +101,6 @@ namespace NxWM
TNxArray<struct STaskbarSlot> m_slots; /**< List of application slots in the task bar */
/**
- * Connect to the server
- */
-
- bool connect(void);
-
- /**
- * Disconnect from the server
- */
-
- void disconnect(void);
-
- /**
* Create a raw window.
*
* 1) Create a dumb CWigetControl instance
@@ -202,20 +190,32 @@ namespace NxWM
void handleClickEvent(const NXWidgets::CWidgetEventArgs &e);
+ public:
+ /**
+ * CTaskbar Constructor
+ *
+ * @param hWnd - NX server handle
+ */
+
+ CTaskbar(void);
+
/**
* CTaskbar Destructor
*/
~CTaskbar(void);
- public:
/**
- * CTaskbar Constructor
- *
- * @param hWnd - NX server handle
+ * Connect to the server
*/
+
+ bool connect(void);
- CTaskbar(void);
+ /**
+ * Disconnect from the server
+ */
+
+ void disconnect(void);
/**
* Initialize task bar. Task bar initialization is separate from
@@ -341,6 +341,19 @@ namespace NxWM
*/
bool stopApplication(IApplication *app);
+
+ /**
+ * Simulate a mouse click on the icon at index. This inline method is only
+ * used duringautomated testing of NxWM.
+ */
+
+ inline void clickIcon(int index)
+ {
+ if (index < m_slots.size())
+ {
+ m_slots.at(index).image->click(0,0);
+ }
+ }
};
}
diff --git a/NxWidgets/nxwm/include/nxwmconfig.hxx b/NxWidgets/nxwm/include/nxwmconfig.hxx
index a683dbd5f..d76b08098 100644
--- a/NxWidgets/nxwm/include/nxwmconfig.hxx
+++ b/NxWidgets/nxwm/include/nxwmconfig.hxx
@@ -50,11 +50,41 @@
****************************************************************************/
/* General Configuration ****************************************************/
/**
+ * Required settings:
+ *
+ * CONFIG_HAVE_CXX : C++ support is required
+ * CONFIG_NX : NX must enabled
+ * CONFIG_NX_MULTIUSER=y : NX must be configured in multiuse mode
+ * CONFIG_NXCONSOLE=y : For NxConsole support
+ *
+ * General settings:
+ *
+ * CONFIG_NXWM_DEFAULT_FONTID - the NxWM default font ID. Default:
+ * NXFONT_DEFAULT
+ */
+
+#ifndef CONFIG_HAVE_CXX
+# error "C++ support is required (CONFIG_HAVE_CXX)"
+#endif
+
+/**
* NX Multi-user support is required
*/
+#ifndef CONFIG_NX
+# error "NX support is required (CONFIG_NX)"
+#endif
+
#ifndef CONFIG_NX_MULTIUSER
-# warning "NX multi-user support is required (CONFIG_NX_MULTIUSER)"
+# error "NX multi-user support is required (CONFIG_NX_MULTIUSER)"
+#endif
+
+/**
+ * NxConsole support is (probably) required
+ */
+
+#ifndef CONFIG_NXCONSOLE
+# warning "NxConsole support may be needed (CONFIG_NXCONSOLE)"
#endif
/**
@@ -67,6 +97,27 @@
/* Colors *******************************************************************/
/**
+ * Color configuration
+ *
+ * CONFIG_NXWM_DEFAULT_BACKGROUNDCOLOR - Normal background color. Default:
+ * MKRGB(160,160,160)
+ * CONFIG_NXWM_DEFAULT_SELECTEDBACKGROUNDCOLOR - Select background color.
+ * Default: MKRGB(120,192,192)
+ * CONFIG_NXWM_DEFAULT_FOREGROUNDCOLOR - Normal "foreground" color. Default:
+ * MKRGB(192,192,192)
+ * CONFIG_NXWM_DEFAULT_SELECTEDFOREGROUNDCOLOR - Selected "foreground" color.
+ * Default: MKRGB(192,192,192)
+ * CONFIG_NXWM_DEFAULT_SHINEEDGECOLOR - Color of the bright edge of a border.
+ * Default: MKRGB(255,255,255)
+ * CONFIG_NXWM_DEFAULT_SHADOWEDGECOLOR - Color of the shadowed edge of a border.
+ * Default: MKRGB(0,0,0)
+ * CONFIG_NXWM_DEFAULT_FONTCOLOR - Default fong color. Default:
+ * MKRGB(0,0,0)
+ * CONFIG_NXWM_TRANSPARENT_COLOR - The "transparent" color. Default:
+ * MKRGB(0,0,0)
+ */
+
+/**
* Normal background color
*/
@@ -129,6 +180,23 @@
/* Task Bar Configuation ***************************************************/
/**
* Horizontal and vertical spacing of icons in the task bar.
+ *
+ * CONFIG_NXWM_TASKBAR_VSPACING - Vertical spacing. Default: 2 pixels
+ * CONFIG_NXWM_TASKBAR_HSPACING - Horizontal spacing. Default: 2 rows
+ *
+ * Task bar location. Default is CONFIG_NXWM_TASKBAR_TOP.
+ *
+ * CONFIG_NXWM_TASKBAR_TOP - Task bar is at the top of the display
+ * CONFIG_NXWM_TASKBAR_BOTTOM - Task bar is at the bottom of the display
+ * CONFIG_NXWM_TASKBAR_LEFT - Task bar is on the left side of the display
+ * CONFIG_NXWM_TASKBAR_RIGHT - Task bar is on the right side of the display
+ *
+ * CONFIG_NXWM_TASKBAR_WIDTH - Task bar thickness (either vertical or
+ * horizontal). Default: 25 + 2*spacing
+ */
+
+/**
+ * Horizontal and vertical spacing of icons in the task bar.
*/
#ifndef CONFIG_NXWM_TASKBAR_VSPACING
@@ -152,7 +220,7 @@
# warning "Multiple task bar positions specified"
# endif
#elif defined(CONFIG_NXWM_TASKBAR_LEFT)
-# if defined defined (CONFIG_NXWM_TASKBAR_RIGHT)
+# if defined (CONFIG_NXWM_TASKBAR_RIGHT)
# warning "Multiple task bar positions specified"
# endif
#elif !defined(CONFIG_NXWM_TASKBAR_RIGHT)
@@ -174,12 +242,20 @@
#endif
/* Tool Bar Configuration ***************************************************/
+/**
+ * CONFIG_NXWM_TOOLBAR_HEIGHT. The height of the tool bar in each
+ * application window. Default: Same as the thickness of the task bar.
+ */
#ifndef CONFIG_NXWM_TOOLBAR_HEIGHT
# define CONFIG_NXWM_TOOLBAR_HEIGHT CONFIG_NXWM_TASKBAR_WIDTH
#endif
/* Background Image **********************************************************/
+/**
+ * CONFIG_NXWM_BACKGROUND_IMAGE - The name of the image to use in the
+ * background window. Default:NXWidgets::g_nuttxBitmap
+ */
#ifndef CONFIG_NXWM_BACKGROUND_IMAGE
# define CONFIG_NXWM_BACKGROUND_IMAGE NXWidgets::g_nuttxBitmap
@@ -188,6 +264,9 @@
/* Start Window Configuration ***********************************************/
/**
* Horizontal and vertical spacing of icons in the task bar.
+ *
+ * CONFIG_NXWM_STARTWINDOW_VSPACING - Vertical spacing. Default: 2 pixels
+ * CONFIG_NXWM_STARTWINDOW_HSPACING - Horizontal spacing. Default: 2 rows
*/
#ifndef CONFIG_NXWM_STARTWINDOW_VSPACING
@@ -199,6 +278,20 @@
#endif
/* NxConsole Window *********************************************************/
+/**
+ * NxConsole Window Configuration
+ *
+ * CONFIG_NXWM_NXCONSOLE_PRIO - Priority of the NxConsole task. Default:
+ * SCHED_PRIORITY_DEFAULT
+ * CONFIG_NXWM_NXCONSOLE_STACKSIZE - The stack size to use when starting the
+ * NxConsole task. Default: 2048 bytes.
+ * CONFIG_NXWM_NXCONSOLE_WCOLOR - The color of the NxConsole window background.
+ * Default: MKRGB(192,192,192)
+ * CONFIG_NXWM_NXCONSOLE_FONTCOLOR - The color of the fonts to use in the
+ * NxConsole window. Default: MKRGB(0,0,0)
+ * CONFIG_NXWM_NXCONSOLE_FONTID - The ID of the font to use in the NxConsole
+ * window. Default: CONFIG_NXWM_DEFAULT_FONTID
+ */
#ifndef CONFIG_NXWM_NXCONSOLE_PRIO
# define CONFIG_NXWM_NXCONSOLE_PRIO SCHED_PRIORITY_DEFAULT
diff --git a/NxWidgets/nxwm/src/cnxconsole.cxx b/NxWidgets/nxwm/src/cnxconsole.cxx
index 857b67983..5fe81d844 100644
--- a/NxWidgets/nxwm/src/cnxconsole.cxx
+++ b/NxWidgets/nxwm/src/cnxconsole.cxx
@@ -41,9 +41,9 @@
#include <cstdio>
#include <cstdlib>
+#include <cunistd>
#include <ctime>
-#include <unistd.h>
#include <fcntl.h>
#include <semaphore.h>
#include <sched.h>
@@ -53,8 +53,8 @@
#include "cwidgetcontrol.hxx"
#include "nxwmconfig.hxx"
-#include "cnxconsole.hxx"
#include "nxwmglyphs.hxx"
+#include "cnxconsole.hxx"
/********************************************************************************************
* Pre-Processor Definitions
@@ -66,119 +66,36 @@
namespace NxWM
{
- /**
- * This structure is used to pass start up parameters to nxcon_task and to assure the
- * the NxConsole is successfully started.
- */
+ /**
+ * This structure is used to pass start up parameters to the NxConsole task and to assure the
+ * the NxConsole is successfully started.
+ */
- struct nxcon_task_s
- {
- sem_t sem; // Sem that will be posted when the task is successfully initialized
- NXTKWINDOW hwnd; // Window handle
- NXCONSOLE nxcon; // NxConsole handle
- int minor; // Next device minor number
- bool result; // True if successfully initialized
- };
+ struct SNxConsole
+ {
+ sem_t sem; /**< Sem that will be posted when the task is successfully initialized */
+ NXTKWINDOW hwnd; /**< Window handle */
+ NXCONSOLE nxcon; /**< NxConsole handle */
+ int minor; /**< Next device minor number */
+ bool result; /**< True if successfully initialized */
+ };
/********************************************************************************************
* Private Data
********************************************************************************************/
/**
- * This global data structure is used to pass start parameters to nxcon_task and to
+ * This global data structure is used to pass start parameters to NxConsole task and to
* assure that the NxConsole is successfully started.
*/
- static struct nxcon_task_s g_nxconvars;
+ static struct SNxConsole g_nxconvars;
+}
/********************************************************************************************
* Private Functions
********************************************************************************************/
- /**
- * This is the NxConsole task. This function first redirects output to the console window.
- */
-
- static int nxcon_task(int argc, char *argv[])
- {
- // Configure NxConsole
-
- struct nxcon_window_s wndo; /* Describes the window */
- wndo.wcolor[0] = CONFIG_NXWM_NXCONSOLE_WCOLOR;
- wndo.fcolor[0] = CONFIG_NXWM_NXCONSOLE_FONTCOLOR;
- wndo.fontid = CONFIG_NXWM_NXCONSOLE_FONTID;
-
- // To stop compiler complaining about "jump to label crosses initialization of 'int fd'
-
- int fd = -1;
-
- // Use the window handle to create the NX console
-
- g_nxconvars.nxcon = nxtk_register(g_nxconvars.hwnd, &wndo, g_nxconvars.minor);
- if (!g_nxconvars.nxcon)
- {
- goto errout;
- }
-
- // Construct the driver name using this minor number
-
- char devname[32];
- snprintf(devname, 32, "/dev/nxcon%d", g_nxconvars.minor);
-
- // Increment the minor number while it is protect by the semaphore
-
- g_nxconvars.minor++;
-
- // Open the NxConsole driver
-
- fd = open(devname, O_WRONLY);
- if (fd < 0)
- {
- goto errout_with_nxcon;
- }
-
- // Now re-direct stdout and stderr so that they use the NX console driver.
- // Note that stdin is retained (file descriptor 0, probably the the serial console).
-
- (void)fflush(stdout);
- (void)fflush(stderr);
-
- (void)fclose(stdout);
- (void)fclose(stderr);
-
- (void)dup2(fd, 1);
- (void)dup2(fd, 2);
-
- // And we can close our original driver file descriptor
-
- close(fd);
-
- // Inform the parent thread that we successfully initialize
-
- g_nxconvars.result = true;
- sem_post(&g_nxconvars.sem);
-
- // Run the NSH console
-
-#ifdef CONFIG_NSH_CONSOLE
- (void)nsh_consolemain(argc, argv);
-#endif
-
- // We get here if console exits
-#warning "Missing logic"
- return EXIT_SUCCESS;
-
- errout_with_nxcon:
- nxcon_unregister(g_nxconvars.nxcon);
-
- errout:
- g_nxconvars.nxcon = 0;
- g_nxconvars.result = false;
- sem_post(&g_nxconvars.sem);
- return EXIT_FAILURE;
- }
-}
-
/********************************************************************************************
* CNxConsole Method Implementations
********************************************************************************************/
@@ -328,7 +245,7 @@ bool CNxConsole::run(void)
sched_lock();
m_pid = TASK_CREATE("NxConsole", CONFIG_NXWM_NXCONSOLE_PRIO,
- CONFIG_NXWM_NXCONSOLE_STACKSIZE, nxcon_task,
+ CONFIG_NXWM_NXCONSOLE_STACKSIZE, nxconsole,
(FAR const char **)0);
// Did we successfully start the NxConsole task?
@@ -424,6 +341,90 @@ void CNxConsole::redraw(void)
}
/**
+ * This is the NxConsole task. This function first redirects output to the
+ * console window.
+ */
+
+int CNxConsole::nxconsole(int argc, char *argv[])
+{
+ // Configure NxConsole
+
+ struct nxcon_window_s wndo; /* Describes the window */
+ wndo.wcolor[0] = CONFIG_NXWM_NXCONSOLE_WCOLOR;
+ wndo.fcolor[0] = CONFIG_NXWM_NXCONSOLE_FONTCOLOR;
+ wndo.fontid = CONFIG_NXWM_NXCONSOLE_FONTID;
+
+ // To stop compiler complaining about "jump to label crosses initialization of 'int fd'
+
+ int fd = -1;
+
+ // Use the window handle to create the NX console
+
+ g_nxconvars.nxcon = nxtk_register(g_nxconvars.hwnd, &wndo, g_nxconvars.minor);
+ if (!g_nxconvars.nxcon)
+ {
+ goto errout;
+ }
+
+ // Construct the driver name using this minor number
+
+ char devname[32];
+ snprintf(devname, 32, "/dev/nxcon%d", g_nxconvars.minor);
+
+ // Increment the minor number while it is protect by the semaphore
+
+ g_nxconvars.minor++;
+
+ // Open the NxConsole driver
+
+ fd = open(devname, O_WRONLY);
+ if (fd < 0)
+ {
+ goto errout_with_nxcon;
+ }
+
+ // Now re-direct stdout and stderr so that they use the NX console driver.
+ // Note that stdin is retained (file descriptor 0, probably the the serial console).
+
+ (void)std::fflush(stdout);
+ (void)std::fflush(stderr);
+
+ (void)std::fclose(stdout);
+ (void)std::fclose(stderr);
+
+ (void)std::dup2(fd, 1);
+ (void)std::dup2(fd, 2);
+
+ // And we can close our original driver file descriptor
+
+ std::close(fd);
+
+ // Inform the parent thread that we successfully initialize
+
+ g_nxconvars.result = true;
+ sem_post(&g_nxconvars.sem);
+
+ // Run the NSH console
+
+#ifdef CONFIG_NSH_CONSOLE
+ (void)nsh_consolemain(argc, argv);
+#endif
+
+ // We get here if console exits
+#warning "Missing logic"
+ return EXIT_SUCCESS;
+
+errout_with_nxcon:
+ nxcon_unregister(g_nxconvars.nxcon);
+
+errout:
+ g_nxconvars.nxcon = 0;
+ g_nxconvars.result = false;
+ sem_post(&g_nxconvars.sem);
+ return EXIT_FAILURE;
+}
+
+/**
* Called when the window minimize button is pressed.
*/
diff --git a/NxWidgets/nxwm/src/ctaskbar.cxx b/NxWidgets/nxwm/src/ctaskbar.cxx
index 8d2907266..faac2fa76 100644
--- a/NxWidgets/nxwm/src/ctaskbar.cxx
+++ b/NxWidgets/nxwm/src/ctaskbar.cxx
@@ -83,6 +83,84 @@ CTaskbar::~CTaskbar(void)
}
/**
+ * Connect to the server
+ */
+
+bool CTaskbar::connect(void)
+{
+ // Connect to the server
+
+ bool nxConnected = CNxServer::connect();
+ if (nxConnected)
+ {
+ // Set the background color
+
+ if (!setBackgroundColor(CONFIG_NXWM_DEFAULT_BACKGROUNDCOLOR))
+ {
+ // Failed
+ }
+ }
+
+ return nxConnected;
+}
+
+/**
+ * Disconnect from the server
+ */
+
+void CTaskbar::disconnect(void)
+{
+ // Stop all applications and remove them from the task bar. Clearly, there
+ // are some ordering issues here... On an orderly system shutdown, disconnection
+ // should really occur priority to deleting instances
+
+ while (!m_slots.empty())
+ {
+ IApplication *app = m_slots.at(0).app;
+ stopApplication(app);
+ }
+
+ // Close the windows
+
+ NXWidgets::CWidgetControl *control;
+ if (m_taskbar)
+ {
+ // Delete the contained widget control. We are responsible for it
+ // because we created it
+
+ control = m_taskbar->getWidgetControl();
+ if (control)
+ {
+ delete control;
+ }
+
+ // Then delete the task bar window
+
+ delete m_taskbar;
+ }
+
+ if (m_background)
+ {
+ // Delete the contained widget control. We are responsible for it
+ // because we created it
+
+ control = m_background->getWidgetControl();
+ if (control)
+ {
+ delete control;
+ }
+
+ // Then delete the background
+
+ delete m_background;
+ }
+
+ // And disconnect from the server
+
+ CNxServer::disconnect();
+}
+
+/**
* Initialize task bar. Task bar initialization is separate from
* object instantiation so that failures can be reported. The window
* manager start-up sequence is:
@@ -427,84 +505,6 @@ bool CTaskbar::stopApplication(IApplication *app)
}
/**
- * Connect to the server
- */
-
-bool CTaskbar::connect(void)
-{
- // Connect to the server
-
- bool nxConnected = CNxServer::connect();
- if (nxConnected)
- {
- // Set the background color
-
- if (!setBackgroundColor(CONFIG_NXWM_DEFAULT_BACKGROUNDCOLOR))
- {
- // Failed
- }
- }
-
- return nxConnected;
-}
-
-/**
- * Disconnect from the server
- */
-
-void CTaskbar::disconnect(void)
-{
- // Stop all applications and remove them from the task bar. Clearly, there
- // are some ordering issues here... On an orderly system shutdown, disconnection
- // should really occur priority to deleting instances
-
- while (!m_slots.empty())
- {
- IApplication *app = m_slots.at(0).app;
- stopApplication(app);
- }
-
- // Close the windows
-
- NXWidgets::CWidgetControl *control;
- if (m_taskbar)
- {
- // Delete the contained widget control. We are responsible for it
- // because we created it
-
- control = m_taskbar->getWidgetControl();
- if (control)
- {
- delete control;
- }
-
- // Then delete the task bar window
-
- delete m_taskbar;
- }
-
- if (m_background)
- {
- // Delete the contained widget control. We are responsible for it
- // because we created it
-
- control = m_background->getWidgetControl();
- if (control)
- {
- delete control;
- }
-
- // Then delete the background
-
- delete m_background;
- }
-
- // And disconnect from the server
-
- CNxServer::disconnect();
-}
-
-/**
* Create a raw window.
*
* 1) Create a dumb CWigetControl instance
@@ -893,7 +893,7 @@ bool CTaskbar::redrawTaskbarWindow(void)
// For vertical task bars, the icons will be centered horizontally
iconPos.x = (windowSize.w - rect.getWidth()) >> 1;
- iconPos.y = taskbarPos.y
+ iconPos.y = taskbarPos.y;
#endif
// Set the position of the icon bitmap
diff --git a/NxWidgets/nxwm/src/glyph_minimize.cxx b/NxWidgets/nxwm/src/glyph_minimize.cxx
index 8c4228279..f86015367 100644
--- a/NxWidgets/nxwm/src/glyph_minimize.cxx
+++ b/NxWidgets/nxwm/src/glyph_minimize.cxx
@@ -170,7 +170,7 @@ static const struct NXWidgets::SRlePaletteBitmapEntry g_minimizeRleEntries[] =
* Public Bitmap Structure Defintions
********************************************************************************************/
-const struct NXWidgets::SRlePaletteBitmap g_minimizeBitmap =
+const struct NXWidgets::SRlePaletteBitmap NxWM::g_minimizeBitmap =
{
CONFIG_NXWIDGETS_BPP, // bpp - Bits per pixel
CONFIG_NXWIDGETS_FMT, // fmt - Color format
diff --git a/NxWidgets/nxwm/src/glyph_nsh.cxx b/NxWidgets/nxwm/src/glyph_nsh.cxx
index 8e9b0746d..5ddeb9008 100644
--- a/NxWidgets/nxwm/src/glyph_nsh.cxx
+++ b/NxWidgets/nxwm/src/glyph_nsh.cxx
@@ -196,7 +196,7 @@ static const struct NXWidgets::SRlePaletteBitmapEntry g_nshRleEntries[] =
* Public Bitmap Structure Defintions
********************************************************************************************/
-const struct NXWidgets::SRlePaletteBitmap g_nshBitmap =
+const struct NXWidgets::SRlePaletteBitmap NxWM::g_nshBitmap =
{
CONFIG_NXWIDGETS_BPP, // bpp - Bits per pixel
CONFIG_NXWIDGETS_FMT, // fmt - Color format
diff --git a/NxWidgets/nxwm/src/glyph_start.cxx b/NxWidgets/nxwm/src/glyph_start.cxx
index a81d6b19f..85457799d 100644
--- a/NxWidgets/nxwm/src/glyph_start.cxx
+++ b/NxWidgets/nxwm/src/glyph_start.cxx
@@ -197,7 +197,7 @@ static const struct NXWidgets::SRlePaletteBitmapEntry g_startRleEntries[] =
* Public Bitmap Structure Defintions
********************************************************************************************/
-const struct NXWidgets::SRlePaletteBitmap g_startBitmap =
+const struct NXWidgets::SRlePaletteBitmap NxWM::g_startBitmap =
{
CONFIG_NXWIDGETS_BPP, // bpp - Bits per pixel
CONFIG_NXWIDGETS_FMT, // fmt - Color format
diff --git a/NxWidgets/nxwm/src/glyph_stop.cxx b/NxWidgets/nxwm/src/glyph_stop.cxx
index 5c4c5477e..fdb08fa51 100644
--- a/NxWidgets/nxwm/src/glyph_stop.cxx
+++ b/NxWidgets/nxwm/src/glyph_stop.cxx
@@ -209,7 +209,7 @@ static const struct NXWidgets::SRlePaletteBitmapEntry g_stopRleEntries[] =
* Public Bitmap Structure Defintions
********************************************************************************************/
-const struct NXWidgets::SRlePaletteBitmap g_stopBitmap =
+const struct NXWidgets::SRlePaletteBitmap NxWM::g_stopBitmap =
{
CONFIG_NXWIDGETS_BPP, // bpp - Bits per pixel
CONFIG_NXWIDGETS_FMT, // fmt - Color format
diff --git a/nuttx/ChangeLog b/nuttx/ChangeLog
index d1e113c58..a01b93c44 100644
--- a/nuttx/ChangeLog
+++ b/nuttx/ChangeLog
@@ -2693,3 +2693,7 @@
* configs/ubw32/up_buttons.c: Added button support for Bit Whacker board.
* configs/stm3240g-eval/nxconsole: Added a configuration to run the NSH
shell in an NX window for the STM3240G-EVAL board.
+ * include/cxx/cunistd: C++ header file to make sure that everything in
+ unistd.h is in the std:: namespace.
+ * configs/sim/nxwm: Added a configuration for testing the NuttX Window Manager
+ (NxWM) \ No newline at end of file
diff --git a/nuttx/configs/sim/README.txt b/nuttx/configs/sim/README.txt
index 854cf585b..2ad8099f9 100644
--- a/nuttx/configs/sim/README.txt
+++ b/nuttx/configs/sim/README.txt
@@ -389,6 +389,21 @@ nx11
See apps/examples/README.txt for further details.
+nxwm
+
+ This is a special configuration setup for the NxWM window manager
+ UnitTest. The NxWM window manager can be found here:
+
+ trunk/NxWidgets/nxwm
+
+ The NxWM unit test can be found at:
+
+ trunk/NxWidgets/UnitTests/nxwm
+
+ Documentation for installing the NxWM unit test can be found here:
+
+ trunk/NxWidgets/UnitTests/READEM.txt
+
ostest
Description
diff --git a/nuttx/configs/sim/nx11/defconfig b/nuttx/configs/sim/nx11/defconfig
index 7866cc1b2..5b23678d6 100644
--- a/nuttx/configs/sim/nx11/defconfig
+++ b/nuttx/configs/sim/nx11/defconfig
@@ -73,6 +73,10 @@ CONFIG_SIM_TOUCHSCREEN=n
# CONFIG_DEBUG_VERBOSE - enables verbose debug output
# CONFIG_DEBUG_SYMBOLS - build without optimization and with
# debug symbols (needed for use with a debugger).
+# CONFIG_HAVE_CXX - Enable support for C++
+# CONFIG_HAVE_CXXINITIALIZE - The platform-specific logic includes support
+# for initialization of static C++ instances for this architecture
+# and for the selected toolchain (via up_cxxinitialize()).
# CONFIG_MM_REGIONS - If the architecture includes multiple
# regions of memory to allocate from, this specifies the
# number of memory regions that the memory manager must
@@ -134,6 +138,8 @@ CONFIG_DEBUG=y
CONFIG_DEBUG_VERBOSE=y
CONFIG_DEBUG_SYMBOLS=n
CONFIG_DEBUG_GRAPHICS=y
+CONFIG_HAVE_CXX=n
+CONFIG_HAVE_CXXINITIALIZE=n
CONFIG_MM_REGIONS=1
CONFIG_ARCH_LOWPUTC=y
CONFIG_RR_INTERVAL=0
diff --git a/nuttx/configs/sim/nxwm/Make.defs b/nuttx/configs/sim/nxwm/Make.defs
new file mode 100644
index 000000000..89fc79cd3
--- /dev/null
+++ b/nuttx/configs/sim/nxwm/Make.defs
@@ -0,0 +1,121 @@
+############################################################################
+# configs/sim/nxwm/Make.defs
+#
+# Copyright (C) 2012 Gregory Nutt. All rights reserved.
+# Author: Gregory Nutt <gnutt@nuttx.org>
+#
+# 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
+ARCHCPUFLAGSXX = -fno-builtin -fno-exceptions -fno-rtti
+ARCHPICFLAGS = -fpic
+ARCHWARNINGS = -Wall -Wstrict-prototypes -Wshadow
+ARCHWARNINGSXX = -Wall -Wshadow
+ARCHDEFINES =
+ARCHINCLUDES = -I. -isystem $(TOPDIR)/include
+ARCHINCLUDESXX = -I. -isystem $(TOPDIR)/include -isystem $(TOPDIR)/include/cxx
+ARCHSCRIPT =
+
+CROSSDEV =
+CC = $(CROSSDEV)gcc
+CXX = $(CROSSDEV)g++
+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
+CXXFLAGS = $(ARCHWARNINGSXX) $(ARCHOPTIMIZATION) \
+ $(ARCHCPUFLAGSXX) $(ARCHINCLUDESXX) $(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 COMPILEXX
+ @echo "CXX: $1"
+ @$(CXX) -c $(CXXFLAGS) $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 =
diff --git a/nuttx/configs/sim/nxwm/appconfig b/nuttx/configs/sim/nxwm/appconfig
new file mode 100644
index 000000000..47c290dfe
--- /dev/null
+++ b/nuttx/configs/sim/nxwm/appconfig
@@ -0,0 +1,40 @@
+############################################################################
+# configs/sim/nxwm/appconfig
+#
+# Copyright (C) 2012 Gregory Nutt. All rights reserved.
+# Author: Gregory Nutt <gnutt@nuttx.org>
+#
+# 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.
+#
+############################################################################
+
+# The NSH Library
+
+CONFIGURED_APPS += system/readline
+CONFIGURED_APPS += nshlib
+
diff --git a/nuttx/configs/sim/nxwm/defconfig b/nuttx/configs/sim/nxwm/defconfig
new file mode 100644
index 000000000..24996e895
--- /dev/null
+++ b/nuttx/configs/sim/nxwm/defconfig
@@ -0,0 +1,851 @@
+############################################################################
+# sim/nxwm/defconfig
+#
+# Copyright (C) 2012 Gregory Nutt. All rights reserved.
+# Author: Gregory Nutt <gnutt@nuttx.org>
+#
+# 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.
+#
+############################################################################
+CONFIG_NXWM_TASKBAR_LEFT=y
+#
+# Architecture selection
+#
+# CONFIG_ARCH - identifies the arch subdirectory and, hence, the
+# processor architecture.
+# CONFIG_ARCH_name - for use in C code. This identifies the particular
+# processor architecture (CONFIG_ARCH_SIM).
+# CONFIG_ARCH_BOARD - identifies the configs subdirectory and, hence,
+# the board that supports the particular chip or SoC.
+# CONFIG_ARCH_BOARD_name - for use in C code
+# CONFIG_ENDIAN_BIG - define if big endian (default is little endian)
+#
+CONFIG_ARCH=sim
+CONFIG_ARCH_SIM=y
+CONFIG_ARCH_BOARD=sim
+CONFIG_ARCH_BOARD_SIM=y
+
+#
+# Framebuffer driver options
+#
+CONFIG_FB_CMAP=n
+CONFIG_FB_HWCURSOR=n
+CONFIG_FB_HWCURSORIMAGE=n
+#CONFIG_FB_HWCURSORSIZE
+#CONFIG_FB_TRANSPARENCY
+
+#
+# Simulated framebuffer configuration
+#
+CONFIG_SIM_X11FB=y
+CONFIG_SIM_FBWIDTH=480
+CONFIG_SIM_FBHEIGHT=240
+CONFIG_SIM_FBBPP=32
+
+#
+# Simulated touchscreen configuration
+# (Set both of the following to 'y' to enable)
+#
+CONFIG_INPUT=n
+CONFIG_SIM_TOUCHSCREEN=n
+
+#
+# General OS setup
+#
+# CONFIG_APPS_DIR - Identifies the relative path to the directory
+# that builds the application to link with NuttX. Default: ../apps
+# CONFIG_DEBUG - enables built-in debug options
+# CONFIG_DEBUG_VERBOSE - enables verbose debug output
+# CONFIG_DEBUG_SYMBOLS - build without optimization and with
+# debug symbols (needed for use with a debugger).
+# debug symbols (needed for use with a debugger).
+# CONFIG_HAVE_CXX - Enable support for C++
+# CONFIG_HAVE_CXXINITIALIZE - The platform-specific logic includes support
+# for initialization of static C++ instances for this architecture
+# and for the selected toolchain (via up_cxxinitialize()).
+# CONFIG_MM_REGIONS - If the architecture includes multiple
+# regions of memory to allocate from, this specifies the
+# number of memory regions that the memory manager must
+# handle and enables the API mm_addregion(start, end);
+# CONFIG_ARCH_LOWPUTC - architecture supports low-level, boot
+# time console output
+# CONFIG_MSEC_PER_TICK - The default system timer is 100Hz
+# or MSEC_PER_TICK=10. This setting may be defined to
+# inform NuttX that the processor hardware is providing
+# system timer interrupts at some interrupt interval other
+# than 10 msec.
+# CONFIG_RR_INTERVAL - The round robin timeslice will be set
+# this number of milliseconds; Round robin scheduling can
+# be disabled by setting this value to zero.
+# CONFIG_SCHED_INSTRUMENTATION - enables instrumentation in
+# scheduler to monitor system performance
+# CONFIG_TASK_NAME_SIZE - Spcifies that maximum size of a
+# task name to save in the TCB. Useful if scheduler
+# instrumentation is selected. Set to zero to disable.
+# CONFIG_JULIAN_TIME - Enables Julian time conversions
+# CONFIG_START_YEAR, CONFIG_START_MONTH, CONFIG_START_DAY -
+# Used to initialize the internal time logic.
+# CONFIG_DEV_CONSOLE - Set if architecture-specific logic
+# provides /dev/console. Enables stdout, stderr, stdin.
+# CONFIG_DEV_LOWCONSOLE - Use the simple, low-level serial console
+# driver (minimul support)
+# CONFIG_MUTEX_TYPES: Set to enable support for recursive and
+# errorcheck mutexes. Enables pthread_mutexattr_settype().
+# CONFIG_PRIORITY_INHERITANCE : Set to enable support for priority
+# inheritance on mutexes and semaphores.
+# CONFIG_SEM_PREALLOCHOLDERS: This setting is only used if priority
+# inheritance is enabled. It defines the maximum number of
+# different threads (minus one) that can take counts on a
+# semaphore with priority inheritance support. This may be
+# set to zero if priority inheritance is disabled OR if you
+# are only using semaphores as mutexes (only one holder) OR
+# if no more than two threads participate using a counting
+# semaphore.
+# CONFIG_SEM_NNESTPRIO. If priority inheritance is enabled,
+# then this setting is the maximum number of higher priority
+# threads (minus 1) than can be waiting for another thread
+# to release a count on a semaphore. This value may be set
+# to zero if no more than one thread is expected to wait for
+# a semaphore.
+# CONFIG_FDCLONE_DISABLE. Disable cloning of all file descriptors
+# by task_create() when a new task is started. If set, all
+# files/drivers will appear to be closed in the new task.
+# CONFIG_FDCLONE_STDIO. Disable cloning of all but the first
+# three file descriptors (stdin, stdout, stderr) by task_create()
+# when a new task is started. If set, all files/drivers will
+# appear to be closed in the new task except for stdin, stdout,
+# and stderr.
+# CONFIG_SDCLONE_DISABLE. Disable cloning of all socket
+# desciptors by task_create() when a new task is started. If
+# set, all sockets will appear to be closed in the new task.
+# CONFIG_SCHED_WORKQUEUE. Create a dedicated "worker" thread to
+# handle delayed processing from interrupt handlers. This feature
+# is required for some drivers but, if there are not complaints,
+# can be safely disabled. The worker thread also performs
+# garbage collection -- completing any delayed memory deallocations
+# from interrupt handlers. If the worker thread is disabled,
+# then that clean will be performed by the IDLE thread instead
+# (which runs at the lowest of priority and may not be appropriate
+# if memory reclamation is of high priority). If CONFIG_SCHED_WORKQUEUE
+# is enabled, then the following options can also be used:
+# CONFIG_SCHED_WORKPRIORITY - The execution priority of the worker
+# thread. Default: 50
+# CONFIG_SCHED_WORKPERIOD - How often the worker thread checks for
+# work in units of microseconds. Default: 50*1000 (50 MS).
+# CONFIG_SCHED_WORKSTACKSIZE - The stack size allocated for the worker
+# thread. Default: CONFIG_IDLETHREAD_STACKSIZE.
+# CONFIG_SIG_SIGWORK - The signal number that will be used to wake-up
+# the worker thread. Default: 4
+# CONFIG_SCHED_WAITPID - Enable the waitpid() API
+# CONFIG_SCHED_ATEXIT - Enabled the atexit() API
+#
+#CONFIG_APPS_DIR=
+CONFIG_DEBUG=n
+CONFIG_DEBUG_VERBOSE=n
+CONFIG_DEBUG_SYMBOLS=y
+CONFIG_DEBUG_GRAPHICS=n
+CONFIG_HAVE_CXX=y
+CONFIG_HAVE_CXXINITIALIZE=n
+CONFIG_MM_REGIONS=1
+CONFIG_ARCH_LOWPUTC=y
+CONFIG_RR_INTERVAL=0
+CONFIG_SCHED_INSTRUMENTATION=n
+CONFIG_TASK_NAME_SIZE=32
+CONFIG_START_YEAR=2012
+CONFIG_START_MONTH=5
+CONFIG_START_DAY=1
+CONFIG_JULIAN_TIME=n
+CONFIG_DEV_CONSOLE=y
+CONFIG_DEV_LOWCONSOLE=n
+CONFIG_MUTEX_TYPES=n
+CONFIG_PRIORITY_INHERITANCE=n
+CONFIG_SEM_PREALLOCHOLDERS=0
+CONFIG_SEM_NNESTPRIO=0
+CONFIG_FDCLONE_DISABLE=n
+CONFIG_FDCLONE_STDIO=n
+CONFIG_SDCLONE_DISABLE=y
+CONFIG_SIG_SIGWORK=4
+CONFIG_SCHED_WORKQUEUE=n
+CONFIG_SCHED_WORKPRIORITY=192
+CONFIG_SCHED_WORKPERIOD=(50*1000)
+CONFIG_SCHED_WORKSTACKSIZE=8192
+CONFIG_SCHED_WAITPID=y
+CONFIG_SCHED_ATEXIT=n
+
+#
+# The following can be used to disable categories of
+# APIs supported by the OS. If the compiler supports
+# weak functions, then it should not be necessary to
+# disable functions unless you want to restrict usage
+# of those APIs.
+#
+# There are certain dependency relationships in these
+# features.
+#
+# o mq_notify logic depends on signals to awaken tasks
+# waiting for queues to become full or empty.
+# o pthread_condtimedwait() depends on signals to wake
+# up waiting tasks.
+#
+CONFIG_DISABLE_CLOCK=n
+CONFIG_DISABLE_POSIX_TIMERS=y
+CONFIG_DISABLE_PTHREAD=n
+CONFIG_DISABLE_SIGNALS=n
+CONFIG_DISABLE_MQUEUE=n
+CONFIG_DISABLE_MOUNTPOINT=n
+CONFIG_DISABLE_ENVIRON=n
+CONFIG_DISABLE_POLL=y
+
+#
+# Misc libc settings
+#
+# CONFIG_NOPRINTF_FIELDWIDTH - sprintf-related logic is a
+# little smaller if we do not support fieldwidthes
+#
+CONFIG_NOPRINTF_FIELDWIDTH=n
+
+#
+# Allow for architecture optimized implementations
+#
+# The architecture can provide optimized versions of the
+# following to improve sysem performance
+#
+CONFIG_ARCH_MEMCPY=n
+CONFIG_ARCH_MEMCMP=n
+CONFIG_ARCH_MEMMOVE=n
+CONFIG_ARCH_MEMSET=n
+CONFIG_ARCH_STRCMP=n
+CONFIG_ARCH_STRCPY=n
+CONFIG_ARCH_STRNCPY=n
+CONFIG_ARCH_STRLEN=n
+CONFIG_ARCH_STRNLEN=n
+CONFIG_ARCH_BZERO=n
+
+#
+# General build options
+#
+# CONFIG_RRLOAD_BINARY - make the rrload binary format used with
+# BSPs from www.ridgerun.com using the tools/mkimage.sh script
+# CONFIG_INTELHEX_BINARY - make the Intel HEX binary format
+# used with many different loaders using the GNU objcopy program
+# Should not be selected if you are not using the GNU toolchain.
+# CONFIG_RAW_BINARY - make a raw binary format file used with many
+# different loaders using the GNU objcopy program. This option
+# should not be selected if you are not using the GNU toolchain.
+# CONFIG_HAVE_LIBM - toolchain supports libm.a
+#
+CONFIG_RRLOAD_BINARY=n
+CONFIG_INTELHEX_BINARY=n
+CONFIG_RAW_BINARY=n
+CONFIG_HAVE_LIBM=y
+
+#
+# Sizes of configurable things (0 disables)
+#
+# CONFIG_MAX_TASKS - The maximum number of simultaneously
+# active tasks. This value must be a power of two.
+# CONFIG_MAX_TASK_ARGS - This controls the maximum number of
+# of parameters that a task may receive (i.e., maxmum value
+# of 'argc')
+# CONFIG_NPTHREAD_KEYS - The number of items of thread-
+# specific data that can be retained
+# CONFIG_NFILE_DESCRIPTORS - The maximum number of file
+# descriptors (one for each open)
+# CONFIG_NFILE_STREAMS - The maximum number of streams that
+# can be fopen'ed
+# CONFIG_NAME_MAX - The maximum size of a file name.
+# CONFIG_STDIO_BUFFER_SIZE - Size of the buffer to allocate
+# on fopen. (Only if CONFIG_NFILE_STREAMS > 0)
+# CONFIG_NUNGET_CHARS - Number of characters that can be
+# buffered by ungetc() (Only if CONFIG_NFILE_STREAMS > 0)
+# CONFIG_PREALLOC_MQ_MSGS - The number of pre-allocated message
+# structures. The system manages a pool of preallocated
+# message structures to minimize dynamic allocations
+# CONFIG_MQ_MAXMSGSIZE - Message structures are allocated with
+# a fixed payload size given by this settin (does not include
+# other message structure overhead.
+# CONFIG_MAX_WDOGPARMS - Maximum number of parameters that
+# can be passed to a watchdog handler
+# CONFIG_PREALLOC_WDOGS - The number of pre-allocated watchdog
+# structures. The system manages a pool of preallocated
+# watchdog structures to minimize dynamic allocations
+# CONFIG_PREALLOC_TIMERS - The number of pre-allocated POSIX
+# timer structures. The system manages a pool of preallocated
+# timer structures to minimize dynamic allocations. Set to
+# zero for all dynamic allocations.
+#
+CONFIG_MAX_TASKS=16
+CONFIG_MAX_TASK_ARGS=4
+CONFIG_NPTHREAD_KEYS=4
+CONFIG_NFILE_DESCRIPTORS=16
+CONFIG_NFILE_STREAMS=16
+CONFIG_NAME_MAX=32
+CONFIG_STDIO_BUFFER_SIZE=1024
+CONFIG_NUNGET_CHARS=2
+CONFIG_PREALLOC_MQ_MSGS=32
+CONFIG_MQ_MAXMSGSIZE=32
+CONFIG_MAX_WDOGPARMS=4
+CONFIG_PREALLOC_WDOGS=32
+CONFIG_PREALLOC_TIMERS=8
+
+#
+# Filesystem configuration
+#
+# CONFIG_FS_FAT - Enable FAT filesystem support
+# CONFIG_FAT_SECTORSIZE - Max supported sector size
+# CONFIG_FAT_LCNAMES - Enable use of the NT-style upper/lower case 8.3
+# file name support.
+# CONFIG_FAT_LFN - Enable FAT long file names. NOTE: Microsoft claims
+# patents on FAT long file name technology. Please read the
+# disclaimer in the top-level COPYING file and only enable this
+# feature if you understand these issues.
+# CONFIG_FAT_MAXFNAME - If CONFIG_FAT_LFN is defined, then the
+# default, maximum long file name is 255 bytes. This can eat up
+# a lot of memory (especially stack space). If you are willing
+# to live with some non-standard, short long file names, then
+# define this value. A good choice would be the same value as
+# selected for CONFIG_NAME_MAX which will limit the visibility
+# of longer file names anyway.
+# CONFIG_FS_NXFFS: Enable NuttX FLASH file system (NXFF) support.
+# CONFIG_NXFFS_ERASEDSTATE: The erased state of FLASH.
+# This must have one of the values of 0xff or 0x00.
+# Default: 0xff.
+# CONFIG_NXFFS_PACKTHRESHOLD: When packing flash file data,
+# don't both with file chunks smaller than this number of data bytes.
+# CONFIG_NXFFS_MAXNAMLEN: The maximum size of an NXFFS file name.
+# Default: 255.
+# CONFIG_NXFFS_PACKTHRESHOLD: When packing flash file data,
+# don't both with file chunks smaller than this number of data bytes.
+# Default: 32.
+# CONFIG_NXFFS_TAILTHRESHOLD: clean-up can either mean
+# packing files together toward the end of the file or, if file are
+# deleted at the end of the file, clean up can simply mean erasing
+# the end of FLASH memory so that it can be re-used again. However,
+# doing this can also harm the life of the FLASH part because it can
+# mean that the tail end of the FLASH is re-used too often. This
+# threshold determines if/when it is worth erased the tail end of FLASH
+# and making it available for re-use (and possible over-wear).
+# Default: 8192.
+# CONFIG_FS_ROMFS - Enable ROMFS filesystem support
+# CONFIG_FS_RAMMAP - For file systems that do not support XIP, this
+# option will enable a limited form of memory mapping that is
+# implemented by copying whole files into memory.
+#
+CONFIG_FS_FAT=y
+CONFIG_FAT_LCNAMES=y
+CONFIG_FAT_LFN=y
+CONFIG_FAT_MAXFNAME=32
+CONFIG_FS_NXFFS=n
+CONFIG_FS_ROMFS=y
+
+#
+# TCP/IP and UDP support via uIP
+#
+# CONFIG_NET - Enable or disable all network features
+# CONFIG_NET_IPv6 - Build in support for IPv6
+# CONFIG_NSOCKET_DESCRIPTORS - Maximum number of socket descriptors per task/thread.
+# CONFIG_NET_SOCKOPTS - Enable or disable support for socket options
+# CONFIG_NET_BUFSIZE - uIP buffer size
+# CONFIG_NET_TCP - TCP support on or off
+# CONFIG_NET_TCP_CONNS - Maximum number of TCP connections (all tasks)
+# CONFIG_NET_TCP_READAHEAD_BUFSIZE - Size of TCP read-ahead buffers
+# CONFIG_NET_NTCP_READAHEAD_BUFFERS - Number of TCP read-ahead buffers (may be zero)
+# CONFIG_NET_TCPBACKLOG - Incoming connections pend in a backlog until
+# accept() is called. The size of the backlog is selected when listen() is called.
+# CONFIG_NET_MAX_LISTENPORTS - Maximum number of listening TCP ports (all tasks)
+# CONFIG_NET_UDP - UDP support on or off
+# CONFIG_NET_UDP_CHECKSUMS - UDP checksums on or off
+# CONFIG_NET_UDP_CONNS - The maximum amount of concurrent UDP connections
+# CONFIG_NET_ICMP - ICMP ping response support on or off
+# CONFIG_NET_ICMP_PING - ICMP ping request support on or off
+# CONFIG_NET_PINGADDRCONF - Use "ping" packet for setting IP address
+# CONFIG_NET_STATISTICS - uIP statistics on or off
+# CONFIG_NET_RECEIVE_WINDOW - The size of the advertised receiver's window
+# CONFIG_NET_ARPTAB_SIZE - The size of the ARP table
+# CONFIG_NET_BROADCAST - Broadcast support
+# CONFIG_NET_FWCACHE_SIZE - number of packets to remember when looking for duplicates
+#
+CONFIG_NET=n
+CONFIG_NET_IPv6=n
+CONFIG_NSOCKET_DESCRIPTORS=0
+CONFIG_NET_SOCKOPTS=y
+CONFIG_NET_BUFSIZE=420
+CONFIG_NET_TCP=n
+CONFIG_NET_TCP_CONNS=40
+CONFIG_NET_MAX_LISTENPORTS=40
+CONFIG_NET_UDP=n
+CONFIG_NET_UDP_CHECKSUMS=y
+#CONFIG_NET_UDP_CONNS=10
+CONFIG_NET_ICMP=n
+CONFIG_NET_ICMP_PING=n
+#CONFIG_NET_PINGADDRCONF=0
+CONFIG_NET_STATISTICS=y
+#CONFIG_NET_RECEIVE_WINDOW=
+#CONFIG_NET_ARPTAB_SIZE=8
+CONFIG_NET_BROADCAST=n
+#CONFIG_NET_FWCACHE_SIZE=2
+
+#
+# UIP Network Utilities
+#
+# CONFIG_NET_DHCP_LIGHT - Reduces size of DHCP
+# CONFIG_NET_RESOLV_ENTRIES - Number of resolver entries
+#
+CONFIG_NET_DHCP_LIGHT=n
+CONFIG_NET_RESOLV_ENTRIES=4
+
+#
+# Graphics related configuration settings
+#
+# CONFIG_NX
+# Enables overall support for graphics library and NX
+# CONFIG_NX_MULTIUSER
+# Configures NX in multi-user mode
+# CONFIG_NX_NPLANES
+# Some YUV color formats requires support for multiple planes,
+# one for each color component. Unless you have such special
+# hardware, this value should be undefined or set to 1
+# CONFIG_NX_DISABLE_1BPP, CONFIG_NX_DISABLE_2BPP,
+# CONFIG_NX_DISABLE_4BPP, CONFIG_NX_DISABLE_8BPP,
+# CONFIG_NX_DISABLE_16BPP, CONFIG_NX_DISABLE_24BPP, and
+# CONFIG_NX_DISABLE_32BPP
+# NX supports a variety of pixel depths. You can save some
+# memory by disabling support for unused color depths.
+# CONFIG_NX_PACKEDMSFIRST
+# If a pixel depth of less than 8-bits is used, then NX needs
+# to know if the pixels pack from the MS to LS or from LS to MS
+# CONFIG_NX_MOUSE
+# Build in support for mouse input
+# CONFIG_NX_KBD
+# Build in support of keypad/keyboard input
+# CONFIG_NXTK_BORDERWIDTH
+# Specifies with with of the border (in pixels) used with
+# framed windows. The default is 4.
+# CONFIG_NXTK_BORDERCOLOR1 and CONFIG_NXTK_BORDERCOLOR2
+# Specify the colors of the border used with framed windows.
+# CONFIG_NXTK_BORDERCOLOR2 is the shadow side color and so
+# is normally darker. The default is medium and dark grey,
+# respectively
+# CONFIG_NXTK_AUTORAISE
+# If set, a window will be raised to the top if the mouse position
+# is over a visible portion of the window. Default: A mouse
+# button must be clicked over a visible portion of the window.
+# CONFIG_NXFONTS_CHARBITS
+# The number of bits in the character set. Current options are
+# only 7 and 8. The default is 7.
+# CONFIG_NXFONT_SANS23X27
+# This option enables support for a tiny, 23x27 san serif font
+# (font ID FONTID_SANS23X27 == 1).
+# CONFIG_NXFONT_SANS22X29
+# This option enables support for a small, 22x29 san serif font
+# (font ID FONTID_SANS22X29 == 2).
+# CONFIG_NXFONT_SANS28X37
+# This option enables support for a medium, 28x37 san serif font
+# (font ID FONTID_SANS28X37 == 3).
+# CONFIG_NXFONT_SANS39X48
+# This option enables support for a large, 39x48 san serif font
+# (font ID FONTID_SANS39X48 == 4).
+# CONFIG_NXFONT_SANS22X29B
+# This option enables support for a small, 22x29 san serif bold font
+# (font ID FONTID_SANS22X29B == 5).
+# CONFIG_NXFONT_SANS28X37B
+# This option enables support for a medium, 28x37 san serif bold font
+# (font ID FONTID_SANS28X37B == 6).
+# CONFIG_NXFONT_SANS40X49B
+# This option enables support for a large, 40x49 san serif bold font
+# (font ID FONTID_SANS40X49B == 7).
+# CONFIG_NXFONT_SERIF22X29
+# This option enables support for a small, 22x29 font (with serifs)
+# (font ID FONTID_SERIF22X29 == 8).
+# CONFIG_NXFONT_SERIF29X37
+# This option enables support for a medium, 29x37 font (with serifs)
+# (font ID FONTID_SERIF29X37 == 9).
+# CONFIG_NXFONT_SERIF38X48
+# This option enables support for a large, 38x48 font (with serifs)
+# (font ID FONTID_SERIF38X48 == 10).
+# CONFIG_NXFONT_SERIF22X28B
+# This option enables support for a small, 27x38 bold font (with serifs)
+# (font ID FONTID_SERIF22X28B == 11).
+# CONFIG_NXFONT_SERIF27X38B
+# This option enables support for a medium, 27x38 bold font (with serifs)
+# (font ID FONTID_SERIF27X38B == 12).
+# CONFIG_NXFONT_SERIF38X49B
+# This option enables support for a large, 38x49 bold font (with serifs)
+# (font ID FONTID_SERIF38X49B == 13).
+#
+# NX Multi-user only options:
+#
+# CONFIG_NX_BLOCKING
+# Open the client message queues in blocking mode. In this case,
+# nx_eventhandler() will not return until a message is received and processed.
+# CONFIG_NX_MXSERVERMSGS and CONFIG_NX_MXCLIENTMSGS
+# Specifies the maximum number of messages that can fit in
+# the message queues. No additional resources are allocated, but
+# this can be set to prevent flooding of the client or server with
+# too many messages (CONFIG_PREALLOC_MQ_MSGS controls how many
+# messages are pre-allocated).
+#
+CONFIG_NX=y
+CONFIG_NX_MULTIUSER=y
+CONFIG_NX_NPLANES=1
+CONFIG_NX_DISABLE_1BPP=y
+CONFIG_NX_DISABLE_2BPP=y
+CONFIG_NX_DISABLE_4BPP=y
+CONFIG_NX_DISABLE_8BPP=y
+CONFIG_NX_DISABLE_16BPP=y
+CONFIG_NX_DISABLE_24BPP=y
+CONFIG_NX_DISABLE_32BPP=n
+CONFIG_NX_PACKEDMSFIRST=n
+CONFIG_NX_MOUSE=y
+CONFIG_NX_KBD=y
+#CONFIG_NXTK_BORDERWIDTH=4
+#CONFIG_NXTK_BORDERCOLOR1
+#CONFIG_NXTK_BORDERCOLOR2
+CONFIG_NXTK_AUTORAISE=n
+CONFIG_NXFONT_SANS22X29=n
+CONFIG_NXFONT_SANS23X27=y
+CONFIG_NXFONT_SANS28X37=n
+CONFIG_NXFONT_SANS22X29B=n
+CONFIG_NXFONT_SANS28X37B=y
+CONFIG_NXFONT_SANS40X49B=n
+CONFIG_NXFONT_SERIF22X29=n
+CONFIG_NXFONT_SERIF29X37=n
+CONFIG_NXFONT_SERIF38X48=n
+CONFIG_NXFONT_SERIF22X28B=n
+CONFIG_NXFONT_SERIF27X38B=n
+CONFIG_NXFONT_SERIF38X49B=n
+CONFIG_NXFONTS_CHARBITS=7
+CONFIG_NX_BLOCKING=y
+CONFIG_NX_MXSERVERMSGS=32
+CONFIG_NX_MXCLIENTMSGS=16
+
+#
+# NxWidgets
+#
+CONFIG_NXWIDGETS_SERVERSTACK=16384
+CONFIG_NXWIDGETS_LISTENERSTACK=8192
+
+#
+# NxConsole Configuration Settings:
+#
+# CONFIG_NXCONSOLE
+# Enables building of the NxConsole driver.
+# CONFIG_NXCONSOLE_BPP
+# Currently, NxConsole supports only a single pixel depth. This
+# configuration setting must be provided to support that single pixel depth.
+# Default: The smallest enabled pixel depth. (see CONFIG_NX_DISABLE_*BPP)
+# CONFIG_NXCONSOLE_NOGETRUN
+# NxConsole needs to know if it can read from the LCD or not. If reading
+# from the LCD is supported, then NxConsole can do more efficient
+# scrolling. Default: Supported
+# CONFIG_NXCONSOLE_MXCHARS
+# NxConsole needs to remember every character written to the console so
+# that it can redraw the window. This setting determines the size of some
+# internal memory allocations used to hold the character data. Default: 128.
+# CONFIG_NXCONSOLE_CACHESIZE
+# NxConsole supports caching of rendered fonts. This font caching is required
+# for two reasons: (1) First, it improves text performance, but more
+# importantly (2) it preserves the font memory. Since the NX server runs on
+# a separate server thread, it requires that the rendered font memory persist
+# until the server has a chance to render the font. (NOTE: There is still
+# inherently a race condition in this!). Unfortunately, the font cache would
+# be quite large if all fonts were saved. The CONFIG_NXCONSOLE_CACHESIZE setting
+# will control the size of the font cache (in number of glyphs). Only that
+# number of the most recently used glyphs will be retained. Default: 16.
+# CONFIG_NXCONSOLE_LINESEPARATION
+# This the space (in rows) between each row of test. Default: 2
+# CONFIG_NXCONSOLE_NOWRAP
+# By default, lines will wrap when the test reaches the right hand side
+# of the window. This setting can be defining to change this behavior so
+# that the text is simply truncated until a new line is encountered.
+#
+CONFIG_NXCONSOLE=y
+CONFIG_NXCONSOLE_BPP=32
+# CONFIG_NXCONSOLE_NOGETRUN
+CONFIG_NXCONSOLE_MXCHARS=256
+# CONFIG_NXCONSOLE_CACHESIZE
+# CONFIG_NXCONSOLE_LINESEPARATION
+# CONFIG_NXCONSOLE_NOWRAP
+
+#
+# Settings for examples/uip
+#
+CONFIG_EXAMPLE_UIP_IPADDR=(192<<24|168<<16|0<<8|128)
+CONFIG_EXAMPLE_UIP_DRIPADDR=(192<<24|168<<16|0<<8|1)
+CONFIG_EXAMPLE_UIP_NETMASK=(255<<24|255<<16|255<<8|0)
+CONFIG_EXAMPLE_UIP_DHCPC=n
+
+#
+# Settings for examples/nettest
+#
+CONFIG_EXAMPLE_NETTEST_SERVER=n
+CONFIG_EXAMPLE_NETTEST_PERFORMANCE=n
+CONFIG_EXAMPLE_NETTEST_NOMAC=n
+CONFIG_EXAMPLE_NETTEST_IPADDR=(192<<24|168<<16|0<<8|128)
+CONFIG_EXAMPLE_NETTEST_DRIPADDR=(192<<24|168<<16|0<<8|1)
+CONFIG_EXAMPLE_NETTEST_NETMASK=(255<<24|255<<16|255<<8|0)
+CONFIG_EXAMPLE_NETTEST_CLIENTIP=(192<<24|168<<16|0<<8|106)
+
+#
+# Settings for examples/ostest
+#
+CONFIG_EXAMPLES_OSTEST_LOOPS=100
+CONFIG_EXAMPLES_OSTEST_STACKSIZE=8192
+
+#
+# Settings for apps/nshlib
+#
+# CONFIG_NSH_BUILTIN_APPS - Support external registered,
+# "named" applications that can be executed from the NSH
+# command line (see apps/README.txt for more information).
+# CONFIG_NSH_FILEIOSIZE - Size of a static I/O buffer
+# CONFIG_NSH_STRERROR - Use strerror(errno)
+# CONFIG_NSH_LINELEN - Maximum length of one command line
+# CONFIG_NSH_NESTDEPTH - Max number of nested if-then[-else]-fi
+# CONFIG_NSH_DISABLESCRIPT - Disable scripting support
+# CONFIG_NSH_DISABLEBG - Disable background commands
+# CONFIG_NSH_ROMFSETC - Use startup script in /etc
+# CONFIG_NSH_CONSOLE - Use serial console front end
+# CONFIG_NSH_TELNET - Use telnetd console front end
+#
+# If CONFIG_NSH_TELNET is selected:
+# CONFIG_NSH_IOBUFFER_SIZE -- Telnetd I/O buffer size
+# CONFIG_NSH_DHCPC - Obtain address using DHCP
+# CONFIG_NSH_IPADDR - Provides static IP address
+# CONFIG_NSH_DRIPADDR - Provides static router IP address
+# CONFIG_NSH_NETMASK - Provides static network mask
+# CONFIG_NSH_NOMAC - Use a bogus MAC address
+#
+# If CONFIG_NSH_ROMFSETC is selected:
+# CONFIG_NSH_ROMFSMOUNTPT - ROMFS mountpoint
+# CONFIG_NSH_INITSCRIPT - Relative path to init script
+# CONFIG_NSH_ROMFSDEVNO - ROMFS RAM device minor
+# CONFIG_NSH_ROMFSSECTSIZE - ROMF sector size
+# CONFIG_NSH_FATDEVNO - FAT FS RAM device minor
+# CONFIG_NSH_FATSECTSIZE - FAT FS sector size
+# CONFIG_NSH_FATNSECTORS - FAT FS number of sectors
+# CONFIG_NSH_FATMOUNTPT - FAT FS mountpoint
+#
+CONFIG_NSH_BUILTIN_APPS=n
+CONFIG_NSH_FILEIOSIZE=1024
+CONFIG_NSH_STRERROR=n
+CONFIG_NSH_LINELEN=80
+CONFIG_NSH_NESTDEPTH=3
+CONFIG_NSH_DISABLESCRIPT=n
+CONFIG_NSH_DISABLEBG=n
+CONFIG_NSH_ROMFSETC=y
+CONFIG_NSH_CONSOLE=y
+CONFIG_NSH_TELNET=n
+CONFIG_NSH_IOBUFFER_SIZE=512
+CONFIG_NSH_DHCPC=n
+CONFIG_NSH_NOMAC=n
+CONFIG_NSH_IPADDR=(10<<24|0<<16|0<<8|2)
+CONFIG_NSH_DRIPADDR=(10<<24|0<<16|0<<8|1)
+CONFIG_NSH_NETMASK=(255<<24|255<<16|255<<8|0)
+CONFIG_NSH_ROMFSMOUNTPT="/etc"
+CONFIG_NSH_INITSCRIPT="init.d/rcS"
+CONFIG_NSH_ROMFSDEVNO=1
+CONFIG_NSH_ROMFSSECTSIZE=64
+CONFIG_NSH_FATDEVNO=2
+CONFIG_NSH_FATSECTSIZE=512
+CONFIG_NSH_FATNSECTORS=1024
+CONFIG_NSH_FATMOUNTPT=/tmp
+
+#
+# Settings for examples/nx
+#
+# CONFIG_EXAMPLES_NX_BUILTIN -- Build the NX example as a "built-in"
+# that can be executed from the NSH command line
+# CONFIG_EXAMPLES_NX_VPLANE -- The plane to select from the frame-
+# buffer driver for use in the test. Default: 0
+# CONFIG_EXAMPLES_NX_BGCOLOR -- The color of the background. Default depends on
+# CONFIG_EXAMPLES_NX_BPP.
+# CONFIG_EXAMPLES_NX_COLOR1 -- The color of window 1. Default depends on
+# CONFIG_EXAMPLES_NX_BPP.
+# CONFIG_EXAMPLES_NX_COLOR2 -- The color of window 2. Default depends on
+# CONFIG_EXAMPLES_NX_BPP.
+# CONFIG_EXAMPLES_NX_TBCOLOR -- The color of the toolbar. Default depends on
+# CONFIG_EXAMPLES_NX_BPP.
+# CONFIG_EXAMPLES_NX_FONTCOLOR -- The color of the toolbar. Default depends on
+# CONFIG_EXAMPLES_NX_BPP.
+# CONFIG_EXAMPLES_NX_BPP -- Pixels per pixel to use. Valid options
+# include 2, 4, 8, 16, 24, and 32. Default is 32.
+# CONFIG_EXAMPLES_NX_RAWWINDOWS -- Use raw windows; Default is to
+# use pretty, framed NXTK windows with toolbars.
+# CONFIG_EXAMPLES_NX_STACKSIZE -- The stacksize to use when creating
+# the NX server. Default 2048
+# CONFIG_EXAMPLES_NX_CLIENTPRIO -- The client priority. Default: 80
+# CONFIG_EXAMPLES_NX_SERVERPRIO -- The server priority. Default: 120
+# CONFIG_EXAMPLES_NX_NOTIFYSIGNO -- The signal number to use with
+# nx_eventnotify(). Default: 4
+#
+CONFIG_EXAMPLES_NX_BUILTIN=n
+CONFIG_EXAMPLES_NX_VPLANE=0
+#CONFIG_EXAMPLES_NX_BGCOLOR
+#CONFIG_EXAMPLES_NX_COLOR1
+#CONFIG_EXAMPLES_NX_COLOR2
+#CONFIG_EXAMPLES_NX_TBCOLOR
+#CONFIG_EXAMPLES_NX_FONTCOLOR
+CONFIG_EXAMPLES_NX_BPP=CONFIG_SIM_FBBPP
+CONFIG_EXAMPLES_NX_RAWWINDOWS=n
+CONFIG_EXAMPLES_NX_STACKSIZE=8192
+CONFIG_EXAMPLES_NX_CLIENTPRIO=80
+CONFIG_EXAMPLES_NX_SERVERPRIO=120
+CONFIG_EXAMPLES_NX_NOTIFYSIGNO=4
+
+#
+# Settings for examples/nxhello
+#
+# CONFIG_EXAMPLES_NXHELLO_BUILTIN -- Build the NXHELLO example as a "built-in"
+# that can be executed from the NSH command line
+# CONFIG_EXAMPLES_NXHELLO_VPLANE -- The plane to select from the frame-
+# buffer driver for use in the test. Default: 0
+# CONFIG_EXAMPLES_NXHELLO_BGCOLOR -- The color of the background. Default
+# depends on CONFIG_EXAMPLES_NXHELLO_BPP.
+# CONFIG_EXAMPLES_NXHELLO_FONTID - Selects the font (see font ID numbers in
+# include/nuttx/nx/nxfonts.h)
+# CONFIG_EXAMPLES_NXHELLO_FONTCOLOR -- The color of the fonts used in the
+# background window. Default depends on CONFIG_EXAMPLES_NXHELLO_BPP.
+# CONFIG_EXAMPLES_NXHELLO_BPP -- Pixels per pixel to use. Valid options
+# include 2, 4, 8, 16, 24, and 32. Default is 32.
+# CONFIG_EXAMPLES_NXHELLO_EXTERNINIT - The driver for the graphics device on
+# this platform requires some unusual initialization. This is the
+# for, for example, SPI LCD/OLED devices. If this configuration is
+# selected, then the platform code must provide an LCD initialization
+# function.
+#
+CONFIG_EXAMPLES_NXHELLO_BUILTIN=y
+CONFIG_EXAMPLES_NXHELLO_VPLANE=0
+#CONFIG_EXAMPLES_NXHELLO_BGCOLOR
+CONFIG_EXAMPLES_NXHELLO_FONTID=6
+#CONFIG_EXAMPLES_NXHELLO_FONTCOLOR
+CONFIG_EXAMPLES_NXHELLO_BPP=CONFIG_SIM_FBBPP
+CONFIG_EXAMPLES_NXHELLO_EXTERNINIT=n
+
+#
+# Settings for examples/nxlines
+#
+# CONFIG_EXAMPLES_NXLINES_BUILTIN -- Build the NXLINES example as a "built-in"
+# that can be executed from the NSH command line
+# CONFIG_EXAMPLES_NXLINES_VPLANE -- The plane to select from the frame-
+# buffer driver for use in the test. Default: 0
+# CONFIG_EXAMPLES_NXLINES_BGCOLOR -- The color of the background. Default
+# depends on CONFIG_EXAMPLES_NXLINES_BPP.
+# CONFIG_EXAMPLES_NXLINES_LINEWIDTH - Selects the width of the lines in
+# pixels (default: 16)
+# CONFIG_EXAMPLES_NXLINES_LINECOLOR -- The color of the central lines drawn
+# in the background window. Default depends on CONFIG_EXAMPLES_NXLINES_BPP
+# (there really is no meaningful default).
+# CONFIG_EXAMPLES_NXLINES_BORDERWIDTH -- The width of the circular border
+# drawn in the background window. (default: 4).
+# CONFIG_EXAMPLES_NXLINES_BORDERCOLOR -- The color of the circular border
+# drawn in the background window. Default depends on CONFIG_EXAMPLES_NXLINES_BPP
+# (there really is no meaningful default).
+# CONFIG_EXAMPLES_NXLINES_CIRCLECOLOR -- The color of the circular region
+# filled in the background window. Default depends on CONFIG_EXAMPLES_NXLINES_BPP
+# (there really is no meaningful default).
+# CONFIG_EXAMPLES_NXLINES_BPP -- Pixels per pixel to use. Valid options
+# include 2, 4, 8, 16, 24, and 32. Default is 16.
+# CONFIG_EXAMPLES_NXLINES_EXTERNINIT - The driver for the graphics device on
+# this platform requires some unusual initialization. This is the
+# for, for example, SPI LCD/OLED devices. If this configuration is
+# selected, then the platform code must provide an LCD initialization
+# function.
+#
+CONFIG_EXAMPLES_NXLINES_BUILTIN=n
+CONFIG_EXAMPLES_NXLINES_VPLANE=0
+#CONFIG_EXAMPLES_NXLINES_BGCOLOR
+CONFIG_EXAMPLES_NXLINES_LINEWIDTH=16
+#CONFIG_EXAMPLES_NXLINES_LINECOLOR
+CONFIG_EXAMPLES_NXLINES_BORDERWIDTH=4
+#CONFIG_EXAMPLES_NXLINES_BORDERCOLOR
+#CONFIG_EXAMPLES_NXLINES_CIRCLECOLOR
+CONFIG_EXAMPLES_NXLINES_BPP=CONFIG_SIM_FBBPP
+CONFIG_EXAMPLES_NXLINES_EXTERNINIT=n
+
+#
+# Settings for examples/touchscreen
+#
+# CONFIG_EXAMPLES_TOUCHSCREEN_BUILTIN - Build the touchscreen test as
+# an NSH built-in function. Default: Built as a standalone problem
+# CONFIG_EXAMPLES_TOUCHSCREEN_MINOR - The minor device number. Minor=N
+# correspnds to touchscreen device /dev/input0. Note this value must
+# with CONFIG_EXAMPLES_TOUCHSCREEN_DEVPATH. Default 0.
+# CONFIG_EXAMPLES_TOUCHSCREEN_DEVPATH - The path to the touchscreen
+# device. This must be consistent with CONFIG_EXAMPLES_TOUCHSCREEN_MINOR.
+# Default: "/dev/input0"
+# CONFIG_EXAMPLES_TOUCHSCREEN_NSAMPLES - If CONFIG_EXAMPLES_TOUCHSCREEN_BUILTIN
+# is defined, then the number of samples is provided on the command line
+# and this value is ignored. Otherwise, this number of samples is
+# collected and the program terminates. Default: Samples are collected
+# indefinitely.
+#
+CONFIG_EXAMPLES_TOUCHSCREEN_BUILTIN=y
+CONFIG_EXAMPLES_TOUCHSCREEN_MINOR=0
+CONFIG_EXAMPLES_TOUCHSCREEN_DEVPATH="/dev/input0"
+CONFIG_EXAMPLES_TOUCHSCREEN_NSAMPLES=25
+
+#
+# Settings for examples/mount
+#
+CONFIG_EXAMPLES_MOUNT_DEVNAME="/dev/ram0"
+#CONFIG_EXAMPLES_MOUNT_NSECTORS=2048
+#CONFIG_EXAMPLES_MOUNT_SECTORSIZE=512
+#CONFIG_EXAMPLES_MOUNT_RAMDEVNO=1
+
+#
+# Stack and heap information
+#
+# CONFIG_BOOT_RUNFROMFLASH - Some configurations support XIP
+# operation from FLASH but must copy initialized .data sections to RAM.
+# CONFIG_BOOT_COPYTORAM - Some configurations boot in FLASH
+# but copy themselves entirely into RAM for better performance.
+# CONFIG_CUSTOM_STACK - The up_ implementation will handle
+# all stack operations outside of the nuttx model.
+# CONFIG_STACK_POINTER - The initial stack pointer
+# CONFIG_IDLETHREAD_STACKSIZE - The size of the initial stack.
+# This is the thread that (1) performs the inital boot of the system up
+# to the point where user_start() is spawned, and (2) there after is the
+# IDLE thread that executes only when there is no other thread ready to
+# run.
+# CONFIG_USERMAIN_STACKSIZE - The size of the stack to allocate
+# for the main user thread that begins at the user_start() entry point.
+# CONFIG_PTHREAD_STACK_MIN - Minimum pthread stack size
+# CONFIG_PTHREAD_STACK_DEFAULT - Default pthread stack size
+# CONFIG_HEAP_BASE - The beginning of the heap
+# CONFIG_HEAP_SIZE - The size of the heap
+#
+CONFIG_BOOT_RUNFROMFLASH=n
+CONFIG_BOOT_COPYTORAM=n
+CONFIG_CUSTOM_STACK=n
+CONFIG_IDLETHREAD_STACKSIZE=8192
+CONFIG_USERMAIN_STACKSIZE=8192
+CONFIG_PTHREAD_STACK_MIN=256
+CONFIG_PTHREAD_STACK_DEFAULT=8192
+CONFIG_HEAP_BASE=
+CONFIG_HEAP_SIZE=
diff --git a/nuttx/configs/sim/nxwm/setenv.sh b/nuttx/configs/sim/nxwm/setenv.sh
new file mode 100755
index 000000000..a3e949cda
--- /dev/null
+++ b/nuttx/configs/sim/nxwm/setenv.sh
@@ -0,0 +1,45 @@
+#!/bin/bash
+# sim/nxwm/setenv.sh
+#
+# Copyright (C) 2012 Gregory Nutt. All rights reserved.
+# Author: Gregory Nutt <gnutt@nuttx.org>
+#
+# 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}"
diff --git a/nuttx/include/cxx/cunistd b/nuttx/include/cxx/cunistd
new file mode 100755
index 000000000..2ddc84144
--- /dev/null
+++ b/nuttx/include/cxx/cunistd
@@ -0,0 +1,70 @@
+//***************************************************************************
+// include/cxx/cunistd
+//
+// Copyright (C) 2012 Gregory Nutt. All rights reserved.
+// Author: Gregory Nutt <gnutt@nuttx.org>
+//
+// 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.
+//
+//***************************************************************************
+
+#ifndef __INCLUDE_CXX_CUNISTD
+#define __INCLUDE_CXX_CUNISTD
+
+//***************************************************************************
+// Included Files
+//***************************************************************************
+
+#include <unistd.h>
+//***************************************************************************
+// Namespace
+//***************************************************************************
+
+namespace std
+{
+ using ::getpid;
+ using ::_exit;
+ using ::close;
+ using ::dup;
+ using ::dup2;
+ using ::fsync;
+ using ::lseek;
+ using ::read;
+ using ::write;
+ using ::pipe;
+ using ::chdir;
+ using ::getcwd;
+ using ::unlink;
+ using ::rmdir;
+ using ::getopt;
+ using ::getoptargp;
+ using ::getopindgp;
+ using ::getoptoptp;
+}
+
+#endif // __INCLUDE_CXX_CUNISTD