mirror of
https://github.com/PX4/PX4-Autopilot.git
synced 2026-06-01 02:55:07 +08:00
More NxWM support
git-svn-id: https://nuttx.svn.sourceforge.net/svnroot/nuttx/trunk@4682 7fd9a85b-ad96-42d3-883c-3090e2eb8679
This commit is contained in:
@@ -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
|
||||
=======
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
.built: chkcxx chklib $(OBJS) $(NXWIDGETS_LIB)
|
||||
$(NXWM_LIB): # Just to keep make happy. chklibnxwm does the work.
|
||||
|
||||
.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
|
||||
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
*
|
||||
|
||||
@@ -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, ¶m);
|
||||
(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;
|
||||
@@ -332,6 +334,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");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -116,12 +116,6 @@ namespace NxWM
|
||||
|
||||
void handleClickEvent(const NXWidgets::CWidgetEventArgs &e);
|
||||
|
||||
/**
|
||||
* CStartWindow Constructor
|
||||
*/
|
||||
|
||||
~CStartWindow(void);
|
||||
|
||||
public:
|
||||
|
||||
/**
|
||||
@@ -133,6 +127,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);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -100,18 +100,6 @@ namespace NxWM
|
||||
IApplication *m_topapp; /**< The top application in the hierarchy */
|
||||
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.
|
||||
*
|
||||
@@ -202,12 +190,6 @@ namespace NxWM
|
||||
|
||||
void handleClickEvent(const NXWidgets::CWidgetEventArgs &e);
|
||||
|
||||
/**
|
||||
* CTaskbar Destructor
|
||||
*/
|
||||
|
||||
~CTaskbar(void);
|
||||
|
||||
public:
|
||||
/**
|
||||
* CTaskbar Constructor
|
||||
@@ -217,6 +199,24 @@ namespace NxWM
|
||||
|
||||
CTaskbar(void);
|
||||
|
||||
/**
|
||||
* CTaskbar Destructor
|
||||
*/
|
||||
|
||||
~CTaskbar(void);
|
||||
|
||||
/**
|
||||
* Connect to the server
|
||||
*/
|
||||
|
||||
bool connect(void);
|
||||
|
||||
/**
|
||||
* Disconnect from the server
|
||||
*/
|
||||
|
||||
void disconnect(void);
|
||||
|
||||
/**
|
||||
* Initialize task bar. Task bar initialization is separate from
|
||||
* object instantiation so that failures can be reported. The window
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -49,12 +49,42 @@
|
||||
* Pre-Processor Definitions
|
||||
****************************************************************************/
|
||||
/* 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
|
||||
|
||||
/**
|
||||
@@ -66,6 +96,27 @@
|
||||
#endif
|
||||
|
||||
/* 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
|
||||
*/
|
||||
@@ -127,6 +178,23 @@
|
||||
#endif
|
||||
|
||||
/* 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.
|
||||
*/
|
||||
@@ -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
|
||||
|
||||
+102
-101
@@ -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?
|
||||
@@ -423,6 +340,90 @@ void CNxConsole::redraw(void)
|
||||
nxcon_redraw(m_nxcon, &rect, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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.
|
||||
*/
|
||||
|
||||
@@ -82,6 +82,84 @@ CTaskbar::~CTaskbar(void)
|
||||
disconnect();
|
||||
}
|
||||
|
||||
/**
|
||||
* 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
|
||||
@@ -426,84 +504,6 @@ bool CTaskbar::stopApplication(IApplication *app)
|
||||
return redrawTaskbarWindow();
|
||||
}
|
||||
|
||||
/**
|
||||
* 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.
|
||||
*
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 =
|
||||
@@ -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
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Executable
+45
@@ -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}"
|
||||
Executable
+70
@@ -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
|
||||
Reference in New Issue
Block a user