diff --git a/nuttx/ChangeLog b/nuttx/ChangeLog index 84828503b..0e53645e7 100644 --- a/nuttx/ChangeLog +++ b/nuttx/ChangeLog @@ -2596,5 +2596,5 @@ Assis, and Stefan Richter. * arch/arm/src/lpc17xx: Several fixes for error that have crept in for the LPC17xx DAC. Contriburted by by Lzzy. - - + * graphics/nxconsole: Add a character driver that can be used as a console output + device for text output (still under development on initial check-in). diff --git a/nuttx/Documentation/NXGraphicsSubsystem.html b/nuttx/Documentation/NXGraphicsSubsystem.html index e2aa088cf..be86502ab 100644 --- a/nuttx/Documentation/NXGraphicsSubsystem.html +++ b/nuttx/Documentation/NXGraphicsSubsystem.html @@ -12,7 +12,7 @@

NX Graphics Subsystem

-

Last Updated: December 1, 2011

+

Last Updated: March 25, 2012

@@ -44,7 +44,7 @@ 1.3.2 NX (NXSU and NXMU)
1.3.3 NX Tool Kit (NXTK)
1.3.4 NX Fonts Support (NXFONTS)
- 1.3.5 NX Widgets (NXWIDGETS) + 1.3.5 NX Widgets (NxWidgets)

@@ -349,7 +349,7 @@ larger multi-user implentation (NXMU as described below). Both conform to the same APIs as defined in include/nuttx/nx/nx.h and, hence, are interchangable1. - NX can be used without NXWIDGETS and without NXTOOLKIT for raw window displays. + NX can be used without NxWidgets and without NXTOOLKIT for raw window displays.

@@ -381,7 +381,7 @@ NXTK is a s set of C graphics tools that provide higher-level window drawing operations. This is the module where the framed windows and toolbar logic is implemented. - NXTK is built on top of NX and does not depend on NXWIDGETS. + NXTK is built on top of NX and does not depend on NxWidgets.

1.3.4 NX Fonts Support (NXFONTS)

@@ -393,19 +393,12 @@ NXFONTS does not depend on any NX module other than some utilities and types from NXGLIB.

-

1.3.5 NX Widgets (NXWIDGETS)

+

1.3.5 NX Widgets (NxWidgets)

- I had originally planned a high level, C++, object-oriented library for - object-oriented access to graphics widgets. - However, C++ compilers are not available for some of the targets supported by NuttX. - So I have decided to implement the entire solution in C. - That decision makes the solution somewhat more difficult to work with, but supports all platforms. -

-

- At this point, the amount of C in the implementation would make conversion to C++ a - more difficult job. - I leave the C++ widget interface to any contributor who may have an interest in such things. + NxWidgets is a higher level, C++, object-oriented library for object-oriented access to graphical "widgets." + NxWidgets is provided as a separate package. + NxWidgets is built on top of the core NuttX graphics subsystem, but is not a part of the core graphics subystems.

@@ -427,8 +420,6 @@
Describe the NXTOOLKIT C interfaces
include/nutt/nxfont.h
Describe sthe NXFONT C interfaces -
include/nuttx/nx/nxwidgets.h -
Will describe the NXWIDGETS classes (no longer planned)

2.2 NX Graphics Library (NXGL)

@@ -3190,8 +3181,9 @@ int nxf_convert_32bpp(FAR uint32_t *dest, uint16_t height, multi-user NX version. See include/nuttx/nx/nxtk.h. -
graphics/nxwidgets -
At one time, I planned to put NXWIDGETS implementation here, but not anymore. +
nuttx/../nxwidgets +
The NxWidgets code is provided as a separate package located outside of the + NuttX source tree (probably at this location). diff --git a/nuttx/Documentation/NuttXCommercial.html b/nuttx/Documentation/NuttXCommercial.html index ea60fda2e..a3d4766f9 100644 --- a/nuttx/Documentation/NuttXCommercial.html +++ b/nuttx/Documentation/NuttXCommercial.html @@ -53,7 +53,6 @@
  • 2G Engineering
  • ISOTEL Research
  • DSPWorks
  • -
  • NXWidgets
  • diff --git a/nuttx/graphics/Makefile b/nuttx/graphics/Makefile index d64b7661f..590e41ffa 100644 --- a/nuttx/graphics/Makefile +++ b/nuttx/graphics/Makefile @@ -68,10 +68,14 @@ include nxfonts/Make.defs DEPPATH += --dep-path nxfonts CFLAGS += ${shell $(TOPDIR)/tools/incdir.sh $(INCDIROPT) "$(CC)" $(TOPDIR)/graphics/nxfonts} -ASRCS = $(NXGLIB_ASRCS) $(NXBE_ASRCS) $(NX_ASRCS) $(NXTK_ASRCS) $(NXFONTS_ASRCS) +include nxconsole/Make.defs +DEPPATH += --dep-path nxconsole +CFLAGS += ${shell $(TOPDIR)/tools/incdir.sh $(INCDIROPT) "$(CC)" $(TOPDIR)/graphics/nxconsole} + +ASRCS = $(NXGLIB_ASRCS) $(NXBE_ASRCS) $(NX_ASRCS) $(NXTK_ASRCS) $(NXFONTS_ASRCS) $(NXCON_ASRCS) AOBJS = $(ASRCS:.S=$(OBJEXT)) -CSRCS = $(NXGLIB_CSRCS) $(NXBE_CSRCS) $(NX_CSRCS) $(NXTK_CSRCS) $(NXFONTS_CSRCS) +CSRCS = $(NXGLIB_CSRCS) $(NXBE_CSRCS) $(NX_CSRCS) $(NXTK_CSRCS) $(NXFONTS_CSRCS) $(NXCON_CSRCS) COBJS = $(CSRCS:.c=$(OBJEXT)) SRCS = $(ASRCS) $(CSRCS) @@ -80,9 +84,9 @@ OBJS = $(AOBJS) $(COBJS) BIN = libgraphics$(LIBEXT) ifeq ($(CONFIG_NX_MULTIUSER),y) -VPATH = nxglib:nxbe:nxmu:nxtk:nxfonts +VPATH = nxglib:nxbe:nxmu:nxtk:nxfonts:nxconsole else -VPATH = nxglib:nxbe:nxsu:nxtk:nxfonts +VPATH = nxglib:nxbe:nxsu:nxtk:nxfonts:nxconsole endif all: mklibgraphics diff --git a/nuttx/graphics/README.txt b/nuttx/graphics/README.txt index 446756f1a..356386f84 100644 --- a/nuttx/graphics/README.txt +++ b/nuttx/graphics/README.txt @@ -18,20 +18,19 @@ Roadmap This directory holds NuttX graphic packages. Not all of these packages are implemented at the present, but here is the longer term roadmap: - NXWIDGETS - I had originally planned a high level, C++, object-oriented library for - object-oriented access to graphics widgets. However, because C++ compilers - are not available for some of the targets supported by NuttX, I have - decided to implement the entire solution in C -- that makes the solution - much uglier, but works fine on all platforms. + NxWidgets - NxWidgets is a higher level, C++, object-oriented library for object- + oriented access to graphics "widgets." NxWidgets is provided as a separate + package. NxWidgets is built on top of the core NuttX graphics subsystem, + but is not a part of the core graphics subystems. NXTOOLKIT - A set of C graphics tools that provide higher-level window drawing operations. The toolkit can be used for window-oriented graphics - without NXWIDGETS and is built on top of NX. + without NxWidgets and is built on top of NX. NXFONTS - A set of C graphics tools for present (bitmap) font images. NX - The tiny NuttX windowing system. This includes both a small-footprint, single user implementaton (NXSU as described below) and a somewhat larger multi-user implentation (NXMU as described below). Both conform to the same APIs as defined in include/nuttx/nx/nx.h and, hence, - are more-or-less interchangable. NX can be used without NXWIDGETS + are more-or-less interchangable. NX can be used without NxWidgets and without NXTOOLKIT for raw access to window memory. NXGLIB - Low level graphics utilities and direct framebuffer rendering logic. NX is built on top of NXGLIB. @@ -43,7 +42,6 @@ include/nuttx/nx/nxglib.h -- Describes the NXGLIB C interfaces include/nuttx/nx/nx.h -- Describes the NX C interfaces include/nuttx/nx/nxtk.h -- Describe the NXTOOLKIT C interfaces include/nuttx/nx/nxfont.h -- Describe sthe NXFONT C interfaces -include/nuttx/nx/nxwidgets.h -- Will describe the NXWIDGETS classes (no longer planned) Directories ^^^^^^^^^^^ @@ -85,8 +83,9 @@ graphics/nxtk top of NX and works with either the single-user or multi-user NX version. See include/nuttx/nx/nxtk.h -graphics/nxwidgets - At one time, I planned to put NXWIDGETS implementation here, but not anymore. +nuttx/../NxWidgets + The NxWidgets code is provided as a separate package located outside of the + NuttX source tree (probably at this location). Installing New Fonts ^^^^^^^^^^^^^^^^^^^^ diff --git a/nuttx/graphics/nxconsole/Make.defs b/nuttx/graphics/nxconsole/Make.defs new file mode 100644 index 000000000..95b4ff49e --- /dev/null +++ b/nuttx/graphics/nxconsole/Make.defs @@ -0,0 +1,38 @@ +############################################################################ +# graphics/nxconsole/Make.defs +# +# Copyright (C) 2012 Gregory Nutt. All rights reserved. +# Author: Gregory Nutt +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name NuttX nor the names of its contributors may be +# used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +############################################################################ + +NXCON_ASRCS = +NXCON_CSRCS = nx_register.c nxcon_register.c nxcon_unregister.c +NXCON_CSRCS += nxtk_register.c nxtool_register.c diff --git a/nuttx/graphics/nxconsole/nx_register.c b/nuttx/graphics/nxconsole/nx_register.c new file mode 100644 index 000000000..c00972034 --- /dev/null +++ b/nuttx/graphics/nxconsole/nx_register.c @@ -0,0 +1,193 @@ +/**************************************************************************** + * nuttx/graphics/nxconsole/nx_register.c + * + * Copyright (C) 2012 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include + +#include "nxcon_internal.h" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/**************************************************************************** + * Private Function Prototypes + ****************************************************************************/ + +static int nxcon_fill(FAR struct nxcon_state_s *priv, + FAR const struct nxgl_rect_s *rect, + nxgl_mxpixel_t wcolor[CONFIG_NX_NPLANES]); +#ifndef CONFIG_NXCONSOLE_NOGETRUN +static int nxcon_move(FAR struct nxcon_state_s *priv, + FAR const struct nxgl_rect_s *rect, + FAR const struct nxgl_point_s *offset); +#endif +static int nxcon_bitmap(FAR struct nxcon_state_s *priv, + FAR const struct nxgl_rect_s *dest, + FAR const void *src[CONFIG_NX_NPLANES], + FAR const struct nxgl_point_s *origin, + unsigned int stride); + +/**************************************************************************** + * Private Data + ****************************************************************************/ + +static const struct nxcon_operations_s g_nxops = +{ + nxcon_fill, +#ifndef CONFIG_NXCONSOLE_NOGETRUN + nxcon_move, +#endif + nxcon_bitmap +}; + +/**************************************************************************** + * Private Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: nxcon_fill + * + * Description: + * Fill the specified rectangle in the window with the specified color + * + * Input Parameters: + * priv - The driver state structure. + * rect - The location to be filled + * color - The color to use in the fill + * + * Return: + * OK on success; ERROR on failure with errno set appropriately + * + ****************************************************************************/ + +static int nxcon_fill(FAR struct nxcon_state_s *priv, + FAR const struct nxgl_rect_s *rect, + nxgl_mxpixel_t wcolor[CONFIG_NX_NPLANES]) +{ + return nx_fill((NXWINDOW)priv->handle, rect, wcolor); +} + +/**************************************************************************** + * Name: nxcon_move + * + * Description: + * Move a rectangular region within the window + * + * Input Parameters: + * priv - The driver state structure. + * rect - Describes the rectangular region to move + * offset - The offset to move the region. The rectangular region will be + * moved so that the origin is translated by this amount. + * + * Return: + * OK on success; ERROR on failure with errno set appropriately + * + ****************************************************************************/ + +#ifndef CONFIG_NXCONSOLE_NOGETRUN +static int nxcon_move(FAR struct nxcon_state_s *priv, + FAR const struct nxgl_rect_s *rect, + FAR const struct nxgl_point_s *offset) +{ + return nx_move((NXWINDOW)priv->handle, rect, offset); +} +#endif + +/**************************************************************************** + * Name: nxcon_bitmap + * + * Description: + * Copy a rectangular region of a larger image into the rectangle in the + * specified window. + * + * Input Parameters: + * priv - The driver state structure. + * dest - Describes the rectangular region on the display that will + * receive the bit map. + * src - The start of the source image. This is an array source + * images of size CONFIG_NX_NPLANES. + * origin - The origin of the upper, left-most corner of the full bitmap. + * Both dest and origin are in window coordinates, however, origin + * may lie outside of the display. + * stride - The width of the full source image in bytes. + * + * Return: + * OK on success; ERROR on failure with errno set appropriately + * + ****************************************************************************/ + +static int nxcon_bitmap(FAR struct nxcon_state_s *priv, + FAR const struct nxgl_rect_s *dest, + FAR const void *src[CONFIG_NX_NPLANES], + FAR const struct nxgl_point_s *origin, + unsigned int stride) +{ + return nx_bitmap((NXWINDOW)priv->handle, dest, src, origin, stride); +} + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: nx_register + * + * Description: + * Register a console device on a raw NX window. The device will be + * registered at /dev/nxconN where N is the provided minor number. + * + * Input Parameters: + * hwnd - A handle that will be used to access the window. The window must + * persist and this handle must be valid for the life of the NX console. + * wndo - Describes the window and font to be used + * minor - The device minor number + * + * Return: + * A non-NULL handle is returned on success. + * + ****************************************************************************/ + +NXCONSOLE nx_register(NXWINDOW hwnd, FAR struct nxcon_window_s *wndo, int minor) +{ + return nxcon_register((NXCONSOLE)hwnd, wndo, &g_nxops, minor); +} + diff --git a/nuttx/graphics/nxconsole/nxcon_internal.h b/nuttx/graphics/nxconsole/nxcon_internal.h new file mode 100644 index 000000000..d0e332ba4 --- /dev/null +++ b/nuttx/graphics/nxconsole/nxcon_internal.h @@ -0,0 +1,170 @@ +/**************************************************************************** + * nuttx/graphics/nxconsole/nxcon_internal.h + * + * Copyright (C) 2012 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +#ifndef __GRAPHICS_NXCONSOLE_NXCON_INTERNAL_H +#define __GRAPHICS_NXCONSOLE_NXCON_INTERNAL_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include + +#include + +#include +#include +#include +#include + +/**************************************************************************** + * Definitions + ****************************************************************************/ +/* Bitmap flags */ + +#define BMFLAGS_NOGLYPH (1 << 0) /* No glyph available, use space */ + +#define BM_ISSPACE(bm) (((bm)->flags & BMFLAGS_NOGLYPH) != 0) + +/* Sizes and maximums */ + +#define MAX_USECNT 255 /* Limit to range of a uint8_t */ +#define LINE_SEPARATION 2 /* Space (in rows) between lines */ + +/* Device path formats */ + +#define NX_DEVNAME_FORMAT "/dev/nxcon%d" +#define NX_DEVNAME_SIZE 16 + +/**************************************************************************** + * Public Types + ****************************************************************************/ + +/* Describes on set of console window callbacks */ + +struct nxcon_state_s; +struct nxcon_operations_s +{ + int (*fill)(FAR struct nxcon_state_s *priv, + FAR const struct nxgl_rect_s *rect, + nxgl_mxpixel_t wcolor[CONFIG_NX_NPLANES]); +#ifndef CONFIG_NXCONSOLE_NOGETRUN + int (*move)(FAR struct nxcon_state_s *priv, + FAR const struct nxgl_rect_s *rect, + FAR const struct nxgl_point_s *offset); +#endif + int (*bitmap)(FAR struct nxcon_state_s *priv, + FAR const struct nxgl_rect_s *dest, + FAR const void *src[CONFIG_NX_NPLANES], + FAR const struct nxgl_point_s *origin, + unsigned int stride); +}; + +/* Describes one cached glyph bitmap */ + +struct nxcon_glyph_s +{ + uint8_t code; /* Character code */ + uint8_t height; /* Height of this glyph (in rows) */ + uint8_t width; /* Width of this glyph (in pixels) */ + uint8_t stride; /* Width of the glyph row (in bytes) */ + uint8_t usecnt; /* Use count */ + FAR uint8_t *bitmap; /* Allocated bitmap memory */ +}; + +/* Describes on character on the display */ + +struct nxcon_bitmap_s +{ + uint8_t code; /* Character code */ + uint8_t flags; /* See BMFLAGS_* */ + struct nxgl_point_s pos; /* Character position */ +}; + +/* Describes the state of one NX console driver*/ + +struct nxcon_state_s +{ + FAR const struct nxcon_operations_s *ops; /* Window operations */ + FAR void *handle; /* The window handle */ + uint8_t minor; /* Device minor number */ + FAR struct nxcon_window_s wndo; /* Describes the window and font */ + + /* These characterize the font in use */ + + NXHANDLE font; /* The current font handle */ + uint8_t fheight; /* Max height of a font in pixels */ + uint8_t fwidth; /* Max width of a font in pixels */ + uint8_t spwidth; /* The width of a space */ + struct nxgl_point_s fpos; /* Next display position */ + + /* These describe all text already added to the display */ + + uint8_t maxglyphs; /* Size of the glyph[] array */ + uint16_t maxchars; /* Size of the bm[] array */ + uint16_t nchars; /* Number of chars in the bm[] array */ + + FAR struct nxcon_bitmap_s *bm; /* List of characters on the display */ + FAR struct nxcon_glyph_s *glyph; /* Cache of rendered fonts in use */ +}; + +/**************************************************************************** + * Public Variables + ****************************************************************************/ + +/* This is the common NX driver file operations */ + +extern const struct file_operations g_nxcondrvrops; + +/**************************************************************************** + * Public Function Prototypes + ****************************************************************************/ +/* Common device registration */ + +FAR struct nxcon_state_s *nxcon_register(NXCONSOLE handle, + FAR struct nxcon_window_s *wndo, FAR const struct nxcon_operations_s *ops, + int minor); + +/* Generic text helpers */ + +void nxcon_home(FAR struct nxcon_state_s *priv); +void nxcon_newline(FAR struct nxcon_state_s *priv); +void nxcon_putc(FAR struct nxcon_state_s *priv, NXHANDLE hfont, uint8_t ch); +void nxcon_fillchar(FAR struct nxcon_state_s *priv, + FAR const struct nxgl_rect_s *rect, FAR const struct nxcon_bitmap_s *bm); + +#endif /* __GRAPHICS_NXCONSOLE_NXCON_INTERNAL_H */ diff --git a/nuttx/graphics/nxconsole/nxcon_register.c b/nuttx/graphics/nxconsole/nxcon_register.c new file mode 100644 index 000000000..d85b5ffc3 --- /dev/null +++ b/nuttx/graphics/nxconsole/nxcon_register.c @@ -0,0 +1,123 @@ +/**************************************************************************** + * nuttx/graphics/nxconsole/nxcon_register.c + * + * Copyright (C) 2012 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "nxcon_internal.h" + +/**************************************************************************** + * Private Function Prototypes + ****************************************************************************/ + +/**************************************************************************** + * Private Data + ****************************************************************************/ + +/**************************************************************************** + * Private Functions + ****************************************************************************/ + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: nxcon_allocate + ****************************************************************************/ + +FAR struct nxcon_state_s * + nxcon_register(NXCONSOLE handle, FAR struct nxcon_window_s *wndo, + FAR const struct nxcon_operations_s *ops, int minor) +{ + FAR struct nxcon_state_s *priv; + char devname[NX_DEVNAME_SIZE]; + int ret; + + DEBUGASSERT(handle && wndo && ops && (unsigned)minor < 256); + + /* Allocate the driver structure */ + + priv = (FAR struct nxcon_state_s *)kzalloc(sizeof(struct nxcon_state_s)); + if (!priv) + { + gdbg("Failed to allocate the NX driver structure\n"); + return NULL; + } + + /* Initialize the driver structure */ + + priv->ops = ops; + priv->handle = handle; + priv->minor = minor; + memcpy(&priv->wndo, wndo, sizeof( struct nxcon_window_s)); + + /* Select the font */ + + priv->font = nxf_getfonthandle(wndo->fontid); + if (!priv->font) + { + gdbg("Failed to get font ID %d: %d\n", wndo->fontid, errno); + goto errout; + } + + /* Register the driver */ + + snprintf(devname, NX_DEVNAME_SIZE, NX_DEVNAME_FORMAT, minor); + ret = register_driver(devname, &g_nxcondrvrops, 0666, priv); + if (ret < 0) + { + gdbg("Failed to register %s\n", devname); + } + return (NXCONSOLE)priv; + +errout: + kfree(priv); + return NULL; +} diff --git a/nuttx/graphics/nxconsole/nxcon_unregister.c b/nuttx/graphics/nxconsole/nxcon_unregister.c new file mode 100644 index 000000000..1b92649cd --- /dev/null +++ b/nuttx/graphics/nxconsole/nxcon_unregister.c @@ -0,0 +1,101 @@ +/**************************************************************************** + * nuttx/graphics/nxconsole/nxcon_unregister.c + * + * Copyright (C) 2012 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include +#include +#include +#include + +#include +#include + +#include "nxcon_internal.h" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/**************************************************************************** + * Private Function Prototypes + ****************************************************************************/ + +/**************************************************************************** + * Private Data + ****************************************************************************/ + +/**************************************************************************** + * Private Functions + ****************************************************************************/ + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: nxcon_unregister + * + * Description: + * Un-register to NX console device. + * + * Input Parameters: + * handle - A handle previously returned by nx_register, nxtk_register, or + * nxtool_register. + * + * Returned Value: + * None + * + ****************************************************************************/ + +void nxcon_unregister(NXCONSOLE handle) +{ + FAR struct nxcon_state_s *priv; + char devname[NX_DEVNAME_SIZE]; + + /* Unregister the driver */ + + snprintf(devname, NX_DEVNAME_SIZE, NX_DEVNAME_FORMAT, priv->minor); + (void)unregister_driver(devname); + + /* Free the private data structure */ + + kfree(handle); +} diff --git a/nuttx/graphics/nxconsole/nxtk_register.c b/nuttx/graphics/nxconsole/nxtk_register.c new file mode 100644 index 000000000..6ea239d74 --- /dev/null +++ b/nuttx/graphics/nxconsole/nxtk_register.c @@ -0,0 +1,192 @@ +/**************************************************************************** + * nuttx/graphics/nxconsole/nxtk_register.c + * + * Copyright (C) 2012 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include + +#include "nxcon_internal.h" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/**************************************************************************** + * Private Function Prototypes + ****************************************************************************/ + +static int nxtkcon_fill(FAR struct nxcon_state_s *priv, + FAR const struct nxgl_rect_s *rect, + nxgl_mxpixel_t wcolor[CONFIG_NX_NPLANES]); +#ifndef CONFIG_NXCONSOLE_NOGETRUN +static int nxtkcon_move(FAR struct nxcon_state_s *priv, + FAR const struct nxgl_rect_s *rect, + FAR const struct nxgl_point_s *offset); +#endif +static int nxtkcon_bitmap(FAR struct nxcon_state_s *priv, + FAR const struct nxgl_rect_s *dest, + FAR const void *src[CONFIG_NX_NPLANES], + FAR const struct nxgl_point_s *origin, + unsigned int stride); + +/**************************************************************************** + * Private Data + ****************************************************************************/ + +static const struct nxcon_operations_s g_nxtkops = +{ + nxtkcon_fill, +#ifndef CONFIG_NXCONSOLE_NOGETRUN + nxtkcon_move, +#endif + nxtkcon_bitmap +}; + +/**************************************************************************** + * Private Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: nxtkcon_fill + * + * Description: + * Fill the specified rectangle in the window with the specified color + * + * Input Parameters: + * priv - The driver state structure. + * rect - The location to be filled + * color - The color to use in the fill + * + * Return: + * OK on success; ERROR on failure with errno set appropriately + * + ****************************************************************************/ + +static int nxtkcon_fill(FAR struct nxcon_state_s *priv, + FAR const struct nxgl_rect_s *rect, + nxgl_mxpixel_t wcolor[CONFIG_NX_NPLANES]) +{ + return nxtk_fillwindow((NXTKWINDOW)priv->handle, rect, wcolor); +} + +/**************************************************************************** + * Name: nxtkcon_move + * + * Description: + * Move a rectangular region within the window + * + * Input Parameters: + * priv - The driver state structure. + * rect - Describes the rectangular region to move + * offset - The offset to move the region. The rectangular region will be + * moved so that the origin is translated by this amount. + * + * Return: + * OK on success; ERROR on failure with errno set appropriately + * + ****************************************************************************/ + +#ifndef CONFIG_NXCONSOLE_NOGETRUN +static int nxtkcon_move(FAR struct nxcon_state_s *priv, + FAR const struct nxgl_rect_s *rect, + FAR const struct nxgl_point_s *offset) +{ + return nxtk_movewindow((NXTKWINDOW)priv->handle, rect, offset); +} +#endif + +/**************************************************************************** + * Name: nxtkcon_bitmap + * + * Description: + * Copy a rectangular region of a larger image into the rectangle in the + * specified window. + * + * Input Parameters: + * priv - The driver state structure. + * dest - Describes the rectangular region on the display that will + * receive the bit map. + * src - The start of the source image. This is an array source + * images of size CONFIG_NX_NPLANES. + * origin - The origin of the upper, left-most corner of the full bitmap. + * Both dest and origin are in window coordinates, however, origin + * may lie outside of the display. + * stride - The width of the full source image in bytes. + * + * Return: + * OK on success; ERROR on failure with errno set appropriately + * + ****************************************************************************/ + +static int nxtkcon_bitmap(FAR struct nxcon_state_s *priv, + FAR const struct nxgl_rect_s *dest, + FAR const void *src[CONFIG_NX_NPLANES], + FAR const struct nxgl_point_s *origin, + unsigned int stride) +{ + return nxtk_bitmapwindow((NXTKWINDOW)priv->handle, dest, src, origin, stride); +} + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: nxtk_register + * + * Description: + * Register a console device on a framed NX window. The device will be + * registered at /dev/nxtkN where N is the provided minor number. + * + * Input Parameters: + * hfwnd - A handle that will be used to access the window. The window must + * persist and this handle must be valid for the life of the NX console. + * wndo - Describes the window and font to be used + * minor - The device minor number + * + * Return: + * A non-NULL handle is returned on success. + * + ****************************************************************************/ + +NXCONSOLE nxtk_register(NXTKWINDOW hfwnd, FAR struct nxcon_window_s *wndo, int minor) +{ + return nxcon_register((NXCONSOLE)hfwnd, wndo, &g_nxtkops, minor); +} diff --git a/nuttx/graphics/nxconsole/nxtool_register.c b/nuttx/graphics/nxconsole/nxtool_register.c new file mode 100644 index 000000000..c5273d5f6 --- /dev/null +++ b/nuttx/graphics/nxconsole/nxtool_register.c @@ -0,0 +1,195 @@ +/**************************************************************************** + * nuttx/graphics/nxconsole/nxtool_register.c + * + * Copyright (C) 2012 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include + +#include "nxcon_internal.h" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/**************************************************************************** + * Private Function Prototypes + ****************************************************************************/ + +static int nxtool_fill(FAR struct nxcon_state_s *priv, + FAR const struct nxgl_rect_s *rect, + nxgl_mxpixel_t wcolor[CONFIG_NX_NPLANES]); +#ifndef CONFIG_NXCONSOLE_NOGETRUN +static int nxtool_move(FAR struct nxcon_state_s *priv, + FAR const struct nxgl_rect_s *rect, + FAR const struct nxgl_point_s *offset); +#endif +static int nxtool_bitmap(FAR struct nxcon_state_s *priv, + FAR const struct nxgl_rect_s *dest, + FAR const void *src[CONFIG_NX_NPLANES], + FAR const struct nxgl_point_s *origin, + unsigned int stride); + +/**************************************************************************** + * Private Data + ****************************************************************************/ + +static const struct nxcon_operations_s g_nxtoolops = +{ + nxtool_fill, +#ifndef CONFIG_NXCONSOLE_NOGETRUN + nxtool_move, +#endif + nxtool_bitmap +}; + +/**************************************************************************** + * Private Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: nxtool_fill + * + * Description: + * Fill the specified rectangle in the window with the specified color + * + * Input Parameters: + * priv - The driver state structure. + * rect - The location to be filled + * color - The color to use in the fill + * + * Return: + * OK on success; ERROR on failure with errno set appropriately + * + ****************************************************************************/ + +static int nxtool_fill(FAR struct nxcon_state_s *priv, + FAR const struct nxgl_rect_s *rect, + nxgl_mxpixel_t wcolor[CONFIG_NX_NPLANES]) +{ + return nxtk_filltoolbar((NXTKWINDOW)priv->handle, rect, wcolor); +} + +/**************************************************************************** + * Name: nxtool_move + * + * Description: + * Move a rectangular region within the window + * + * Input Parameters: + * priv - The driver state structure. + * rect - Describes the rectangular region to move + * offset - The offset to move the region. The rectangular region will be + * moved so that the origin is translated by this amount. + * + * Return: + * OK on success; ERROR on failure with errno set appropriately + * + ****************************************************************************/ + +#ifndef CONFIG_NXCONSOLE_NOGETRUN +static int nxtool_move(FAR struct nxcon_state_s *priv, + FAR const struct nxgl_rect_s *rect, + FAR const struct nxgl_point_s *offset) +{ + return nxtk_movetoolbar((NXTKWINDOW)priv->handle, rect, offset); +} +#endif + +/**************************************************************************** + * Name: nxtool_bitmap + * + * Description: + * Copy a rectangular region of a larger image into the rectangle in the + * specified window. + * + * Input Parameters: + * priv - The driver state structure. + * dest - Describes the rectangular region on the display that will + * receive the bit map. + * src - The start of the source image. This is an array source + * images of size CONFIG_NX_NPLANES. + * origin - The origin of the upper, left-most corner of the full bitmap. + * Both dest and origin are in window coordinates, however, origin + * may lie outside of the display. + * stride - The width of the full source image in bytes. + * + * Return: + * OK on success; ERROR on failure with errno set appropriately + * + ****************************************************************************/ + +static int nxtool_bitmap(FAR struct nxcon_state_s *priv, + FAR const struct nxgl_rect_s *dest, + FAR const void *src[CONFIG_NX_NPLANES], + FAR const struct nxgl_point_s *origin, + unsigned int stride) +{ + return nxtk_bitmaptoolbar((NXTKWINDOW)priv->handle, dest, src, origin, stride); +} + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: nxtool_register + * + * Description: + * Register a console device on a toolbar of a framed NX window. The + * device will be registered at /dev/nxtoolN where N is the provided minor + * number. + * + * Input Parameters: + * hfwnd - A handle that will be used to access the toolbar. The toolbar + * must persist and this handle must be valid for the life of the NX + * console. + * wndo - Describes the window and font to be used + * minor - The device minor number + * + * Return: + * A non-NULL handle is returned on success. + * + ****************************************************************************/ + +NXCONSOLE nxtool_register(NXTKWINDOW hfwnd, FAR struct nxcon_window_s *wndo, int minor) +{ + return nxcon_register((NXCONSOLE)hfwnd, wndo, &g_nxtoolops, minor); +} + diff --git a/nuttx/include/nuttx/nx/nxconsole.h b/nuttx/include/nuttx/nx/nxconsole.h new file mode 100644 index 000000000..4c0fdc4e6 --- /dev/null +++ b/nuttx/include/nuttx/nx/nxconsole.h @@ -0,0 +1,173 @@ +/**************************************************************************** + * include/nuttx/nx/nxconsole.h + * + * Copyright (C) 2012 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +#ifndef __INCLUDE_NUTTX_NX_NXCONSOLE_H +#define __INCLUDE_NUTTX_NX_NXCONSOLE_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include + +/**************************************************************************** + * Pre-processor definitions + ****************************************************************************/ + +/**************************************************************************** + * Public Types + ****************************************************************************/ + +/* This is the handle that can be used to access the consoles */ + +typedef FAR void *NXCONSOLE; + +/* This structure describes the window and font characteristics */ + +struct nxcon_window_s +{ + nxgl_mxpixel_t wcolor[CONFIG_NX_NPLANES]; /* Window background color */ + nxgl_mxpixel_t fcolor[CONFIG_NX_NPLANES]; /* Font color */ + struct nxgl_size_s wsize; /* Window size */ + int fontid; /* The ID of the font to use */ +}; + +/**************************************************************************** + * Public Data + ****************************************************************************/ + +#undef EXTERN +#if defined(__cplusplus) +# define EXTERN extern "C" +extern "C" { +#else +# define EXTERN extern +#endif + +/**************************************************************************** + * Public Function Prototypes + ****************************************************************************/ + +/**************************************************************************** + * Name: nx_register + * + * Description: + * Register a console device on a raw NX window. The device will be + * registered at /dev/nxconN where N is the provided minor number. + * + * Input Parameters: + * hwnd - A handle that will be used to access the window. The window must + * persist and this handle must be valid for the life of the NX console. + * wndo - Describes the window and font to be used + * minor - The device minor number + * + * Return: + * A non-NULL handle is returned on success. + * + ****************************************************************************/ + +EXTERN NXCONSOLE nx_register(NXWINDOW hwnd, FAR struct nxcon_window_s *wndo, + int minor); + +/**************************************************************************** + * Name: nxtk_register + * + * Description: + * Register a console device on a framed NX window. The device will be + * registered at /dev/nxconN where N is the provided minor number. + * + * Input Parameters: + * hfwnd - A handle that will be used to access the window. The window must + * persist and this handle must be valid for the life of the NX console. + * wndo - Describes the window and font to be used + * minor - The device minor number + * + * Return: + * A non-NULL handle is returned on success. + * + ****************************************************************************/ + +EXTERN NXCONSOLE nxtk_register(NXTKWINDOW hfwnd, + FAR struct nxcon_window_s *wndo, int minor); + +/**************************************************************************** + * Name: nxtool_register + * + * Description: + * Register a console device on a toolbar of a framed NX window. The + * device will be registered at /dev/nxconN where N is the provided minor + * number. + * + * Input Parameters: + * hfwnd - A handle that will be used to access the toolbar. The toolbar + * must persist and this handle must be valid for the life of the NX + * console. + * wndo - Describes the window and font to be used + * minor - The device minor number + * + * Return: + * A non-NULL handle is returned on success. + * + ****************************************************************************/ + +EXTERN NXCONSOLE nxtool_register(NXTKWINDOW hfwnd, + FAR struct nxcon_window_s *wndo, int minor); + +/**************************************************************************** + * Name: nxcon_unregister + * + * Description: + * Un-register to NX console device. + * + * Input Parameters: + * handle - A handle previously returned by nx_register, nxtk_register, or + * nxtool_register. + * + * Returned Value: + * None + * + ****************************************************************************/ + +EXTERN void nxcon_unregister(NXCONSOLE handle); + +#undef EXTERN +#if defined(__cplusplus) +} +#endif + +#endif /* __INCLUDE_NUTTX_NX_NXCONSOLE_H */