forked from Archive/PX4-Autopilot
NX console driver is code complete but untested
git-svn-id: https://nuttx.svn.sourceforge.net/svnroot/nuttx/trunk@4529 7fd9a85b-ad96-42d3-883c-3090e2eb8679
This commit is contained in:
parent
f5211035ab
commit
7ce2f90034
|
@ -44,7 +44,8 @@
|
|||
<i>1.3.2 <a href="#nx1">NX (NXSU and NXMU)</a></i><br>
|
||||
<i>1.3.3 <a href="#nxtk1">NX Tool Kit (<code>NXTK</code>)</a></i><br>
|
||||
<i>1.3.4 <a href="#nxfonts1">NX Fonts Support (<code>NXFONTS</code>)</a></i><br>
|
||||
<i>1.3.5 <a href="#nxwidgets1">NX Widgets (<code>NxWidgets</code>)</a></i>
|
||||
<i>1.3.5 <a href="#nxwidgets1">NX Widgets (<code>NxWidgets</code>)</a></i><br>
|
||||
<i>1.3.6 <a href="#nxconsole1">NX Console Driver (<code>NxConsole</code>)</a></i>
|
||||
</ul>
|
||||
</p>
|
||||
</ul>
|
||||
|
@ -189,7 +190,8 @@
|
|||
<i><b>B.3</b> <a href="#nxconfig">NX Configuration Settings</a></i><br>
|
||||
<i><b>B.4</b> <a href="#nxmuconfig">NX Multi-User (Only) Configuration Settings</a></i><br>
|
||||
<i><b>B.5</b> <a href="#nxtkconfig">NXTK Configuration Settings</a></i><br>
|
||||
<i><b>B.6</b> <a href="#nxfpmtsconfig">NXFONTS Configuration Settings</a></i>
|
||||
<i><b>B.6</b> <a href="#nxfpmtsconfig">NXFONTS Configuration Settings</a></i><br>
|
||||
<i><b>B.7</b> <a href="#nxconsoleconfig">NxConsole Configuration Settings</a></i>
|
||||
</ul>
|
||||
</p>
|
||||
<p>
|
||||
|
@ -401,6 +403,13 @@
|
|||
NxWidgets is built on top of the core NuttX graphics subsystem, but is not a part of the core graphics subystems.
|
||||
</p>
|
||||
|
||||
<h3>1.3.6 <a name="nxconsole1">NX Console Driver (<code>NxConsole</code>)</a></h3>
|
||||
|
||||
<p>
|
||||
NxConsole is a write-only character device (not shown) that is built on top of an NX window.
|
||||
This character device can be used to provide <code>stdout</code> and <code>stderr</code> and, hence, can provide the output side of NuttX console.
|
||||
</p>
|
||||
|
||||
<table width ="100%">
|
||||
<tr bgcolor="#e4e4e4">
|
||||
<td>
|
||||
|
@ -3177,13 +3186,16 @@ int nxf_convert_32bpp(FAR uint32_t *dest, uint16_t height,
|
|||
|
||||
<dt><code>graphics/nxtk</code>
|
||||
<dd>This is where the NXTOOLKIT implementation resides.
|
||||
This toolkit is built on top of NX and works with either the single-user or
|
||||
multi-user NX version.
|
||||
This toolkit is built on top of NX and works with either the single-user or multi-user NX version.
|
||||
See <code>include/nuttx/nx/nxtk.h</code>.
|
||||
|
||||
<dt><code>nuttx/../nxwidgets</code>
|
||||
<dd>The <a href="NxWidgets.html">NxWidgets</a> code is provided as a separate package located outside of the
|
||||
NuttX source tree (probably at this location).
|
||||
|
||||
<dt><code>graphics/nxconsole</code>
|
||||
<dd>The NxConsole driver is built on top of NX and works with either the single-user or multi-user NX version.
|
||||
See <code>include/nuttx/nx/nxconsole.h</code>.
|
||||
</dl>
|
||||
</ul>
|
||||
|
||||
|
@ -3247,7 +3259,7 @@ int nxf_convert_32bpp(FAR uint32_t *dest, uint16_t height,
|
|||
<dd>Configures NX in multi-user mode.
|
||||
<dt><code>CONFIG_NX_BLOCKING</code>
|
||||
<dd>Open the client message queues in blocking mode. In this case,
|
||||
<dt><code>nx_eventhandler()</code> will not return until a message is received and processed.
|
||||
<code>nx_eventhandler()</code> will not return until a message is received and processed.
|
||||
<dt><code>CONFIG_NX_MXSERVERMSGS</code> and <code>CONFIG_NX_MXCLIENTMSGS</code>
|
||||
<dd>Specifies the maximum number of messages that can fit in
|
||||
the message queues. No additional resources are allocated, but
|
||||
|
@ -3337,6 +3349,37 @@ int nxf_convert_32bpp(FAR uint32_t *dest, uint16_t height,
|
|||
</dl>
|
||||
</ul>
|
||||
|
||||
<h2>B.7 <a name="nxconsoleconfig">NxConsole Configuration Settings</a></h2>
|
||||
|
||||
<ul>
|
||||
<dl>
|
||||
<dt><code>CONFIG_NXCONSOLE_BPP</code>:
|
||||
<dd>Currently, NxConsole supports only a single pixel depth.
|
||||
This configuration setting must be provided to support that single pixel depth.
|
||||
Default: The smallest enabled pixel depth. (see <code>CONFIG_NX_DISABLE_*BPP</code>)
|
||||
<dt><code>CONFIG_NXCONSOLE_NOGETRUN</code>:
|
||||
<dd>NxConsole needs to know if it can read from the LCD or not.
|
||||
If reading from the LCD is supported, then NxConsole can do more efficient scrolling.
|
||||
Default: Supported
|
||||
<dt><code>CONFIG_NXCONSOLE_MXCHARS</code>:
|
||||
<dd>NxConsole needs to remember every character written to the console so that it can redraw the window.
|
||||
This setting determines the size of some internal memory allocations used to hold the character data.
|
||||
Default: 128.
|
||||
<dt><code>CONFIG_NXCONSOLE_FONTCACHE</code>:
|
||||
<dd>If this setting is defined, then caching of fonts will be supported by NxConsole.
|
||||
Each font must be rendered from the tiny font storage format to the full display size and pixel depth.
|
||||
If this setting is defined, then the more recently used font glyphs will be retained in a cache of size <code>CONFIG_NXCONSOLE_CACHESIZE</code>.
|
||||
Default: No font caching.
|
||||
<dt><code>CONFIG_NXCONSOLE_CACHESIZE</code>:
|
||||
<dd>If <code>CONFIG_NXCONSOLE_FONTCACHE</code>, then this setting will control the size of the font cache (in number of glyphs). Default: 16.
|
||||
<dt><code>CONFIG_NXCONSOLE_LINESEPARATION</code>:
|
||||
<dd>This the space (in rows) between each row of test. Default: 2
|
||||
<dt><code>CONFIG_NXCONSOLE_NOWRAP</code>:
|
||||
<dd>By default, lines will wrap when the test reaches the right hand side of the window.
|
||||
This setting can be defining to change this behavior so that the text is simply truncated until a new line is encountered.
|
||||
</dl>
|
||||
</ul>
|
||||
|
||||
<table width ="100%">
|
||||
<tr bgcolor="#e4e4e4">
|
||||
<td>
|
||||
|
@ -3457,10 +3500,10 @@ genfontsources:
|
|||
</p>
|
||||
<ul><pre>
|
||||
ifeq ($(CONFIG_NXFONT_SANS23X27),y)
|
||||
NXFSET_CSRCS += nxfonts_bitmaps_sans23x27.c
|
||||
NXFSET_CSRCS += nxfonts_bitmaps_sans23x27.c
|
||||
endif
|
||||
ifeq ($(CONFIG_NXFONT_MYFONT),y)
|
||||
NXFSET_CSRCS += nxfonts_bitmaps_myfont.c
|
||||
NXFSET_CSRCS += nxfonts_bitmaps_myfont.c
|
||||
endif
|
||||
</pre></ul>
|
||||
</li>
|
||||
|
|
|
@ -364,6 +364,20 @@ nx11
|
|||
CONFG_NX_MULTIUSER=y
|
||||
CONFIG_DISABLE_MQUEUE=n
|
||||
|
||||
examples/nxconsole
|
||||
------------------
|
||||
This configuration is also set up to use the examples/nxconsole
|
||||
test instead of examples/nx. Simply comment out the following
|
||||
in the appconfig file:
|
||||
|
||||
-CONFIGURED_APPS += examples/nx
|
||||
+#CONFIGURED_APPS += examples/nx
|
||||
|
||||
And uncomment the following:
|
||||
|
||||
-#CONFIGURED_APPS += examples/nxconsole
|
||||
+CONFIGURED_APPS += examples/nxconsole
|
||||
|
||||
ostest
|
||||
|
||||
Description
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
############################################################################
|
||||
# configs/sim/nx/appconfig
|
||||
#
|
||||
# Copyright (C) 2011 Gregory Nutt. All rights reserved.
|
||||
# Author: Gregory Nutt <spudmonkey@racsa.co.cr>
|
||||
# Copyright (C) 2011-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
|
||||
|
@ -34,6 +34,9 @@
|
|||
############################################################################
|
||||
|
||||
# Path to example in apps/examples containing the user_start entry point
|
||||
# Various NX tests can be supported, simply comment-out examples/nx and
|
||||
# uncomment the test you wish to perform
|
||||
|
||||
CONFIGURED_APPS += examples/nx
|
||||
#CONFIGURED_APPS += examples/nxconsole
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
############################################################################
|
||||
# sim/nx/defconfig
|
||||
#
|
||||
# Copyright (C) 2008-2010 Gregory Nutt. All rights reserved.
|
||||
# Author: Gregory Nutt <spudmonkey@racsa.co.cr>
|
||||
# Copyright (C) 2008-2010, 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
|
||||
|
@ -51,6 +51,7 @@ CONFIG_ARCH_BOARD_SIM=y
|
|||
|
||||
#
|
||||
# Simulated framebuffer configuration
|
||||
#
|
||||
CONFIG_SIM_X11FB=n
|
||||
CONFIG_SIM_FBWIDTH=480
|
||||
CONFIG_SIM_FBHEIGHT=240
|
||||
|
@ -269,6 +270,7 @@ CONFIG_PREALLOC_TIMERS=8
|
|||
|
||||
#
|
||||
# Framebuffer driver options
|
||||
#
|
||||
CONFIG_FB_CMAP=n
|
||||
CONFIG_FB_HWCURSOR=n
|
||||
CONFIG_FB_HWCURSORIMAGE=n
|
||||
|
@ -277,14 +279,17 @@ CONFIG_FB_HWCURSORIMAGE=n
|
|||
|
||||
#
|
||||
# FAT filesystem configuration
|
||||
#
|
||||
# CONFIG_FS_FAT - Enable FAT filesystem support
|
||||
# CONFIG_FAT_SECTORSIZE - Max supported sector size
|
||||
# CONFIG_FS_ROMFS - Enable ROMFS filesystem support
|
||||
#
|
||||
CONFIG_FS_FAT=n
|
||||
CONFIG_FS_ROMFS=n
|
||||
|
||||
#
|
||||
# TCP/IP and UDP support via uIP
|
||||
#
|
||||
# CONFIG_NET - Enable or disable all network features
|
||||
# CONFIG_NET_IPv6 - Build in support for IPv6
|
||||
# CONFIG_NSOCKET_DESCRIPTORS - Maximum number of socket descriptors per task/thread.
|
||||
|
@ -331,8 +336,10 @@ CONFIG_NET_BROADCAST=n
|
|||
|
||||
#
|
||||
# UIP Network Utilities
|
||||
#
|
||||
# CONFIG_NET_DHCP_LIGHT - Reduces size of DHCP
|
||||
# CONFIG_NET_RESOLV_ENTRIES - Number of resolver entries
|
||||
#
|
||||
CONFIG_NET_DHCP_LIGHT=n
|
||||
CONFIG_NET_RESOLV_ENTRIES=4
|
||||
|
||||
|
@ -414,8 +421,48 @@ CONFIG_NX_BLOCKING=y
|
|||
CONFIG_NX_MXSERVERMSGS=32
|
||||
CONFIG_NX_MXCLIENTMSGS=16
|
||||
|
||||
#
|
||||
# NxConsole Configuration Settings:
|
||||
#
|
||||
# CONFIG_NXCONSOLE_BPP
|
||||
# Currently, NxConsole supports only a single pixel depth. This
|
||||
# configuration setting must be provided to support that single pixel depth.
|
||||
# Default: The smallest enabled pixel depth. (see CONFIG_NX_DISABLE_*BPP)
|
||||
# CONFIG_NXCONSOLE_NOGETRUN
|
||||
# NxConsole needs to know if it can read from the LCD or not. If reading
|
||||
# from the LCD is supported, then NxConsole can do more efficient
|
||||
# scrolling. Default: Supported
|
||||
# CONFIG_NXCONSOLE_MXCHARS
|
||||
# NxConsole needs to remember every character written to the console so
|
||||
# that it can redraw the window. This setting determines the size of some
|
||||
# internal memory allocations used to hold the character data. Default: 128.
|
||||
# CONFIG_NXCONSOLE_FONTCACHE
|
||||
# If this setting is defined, then caching of fonts will be supported by
|
||||
# NxConsole. Each font must be rendered from the tiny font storage format
|
||||
# to the full display size and pixel depth. If this setting is defined, then
|
||||
# the more recently used font glyphs will be retained in a cache of size
|
||||
# CONFIG_NXCONSOLE_CACHESIZE. Default: No font caching.
|
||||
# CONFIG_NXCONSOLE_CACHESIZE
|
||||
# If CONFIG_NXCONSOLE_FONTCACHE, then this setting will control the size
|
||||
# of the font cache (in number of glyphs). Default: 16.
|
||||
# CONFIG_NXCONSOLE_LINESEPARATION
|
||||
# This the space (in rows) between each row of test. Default: 2
|
||||
# CONFIG_NXCONSOLE_NOWRAP
|
||||
# By default, lines will wrap when the test reaches the right hand side
|
||||
# of the window. This setting can be defining to change this behavior so
|
||||
# that the text is simply truncated until a new line is encountered.
|
||||
#
|
||||
CONFIG_NXCONSOLE_BPP=8
|
||||
# CONFIG_NXCONSOLE_NOGETRUN
|
||||
# CONFIG_NXCONSOLE_MXCHARS
|
||||
# CONFIG_NXCONSOLE_FONTCACHE
|
||||
# CONFIG_NXCONSOLE_CACHESIZE
|
||||
# CONFIG_NXCONSOLE_LINESEPARATION
|
||||
# CONFIG_NXCONSOLE_NOWRAP
|
||||
|
||||
#
|
||||
# Settings for examples/uip
|
||||
#
|
||||
CONFIG_EXAMPLE_UIP_IPADDR=(192<<24|168<<16|0<<8|128)
|
||||
CONFIG_EXAMPLE_UIP_DRIPADDR=(192<<24|168<<16|0<<8|1)
|
||||
CONFIG_EXAMPLE_UIP_NETMASK=(255<<24|255<<16|255<<8|0)
|
||||
|
@ -423,6 +470,7 @@ CONFIG_EXAMPLE_UIP_DHCPC=n
|
|||
|
||||
#
|
||||
# Settings for examples/nettest
|
||||
#
|
||||
CONFIG_EXAMPLE_NETTEST_SERVER=n
|
||||
CONFIG_EXAMPLE_NETTEST_PERFORMANCE=n
|
||||
CONFIG_EXAMPLE_NETTEST_NOMAC=n
|
||||
|
@ -433,6 +481,7 @@ CONFIG_EXAMPLE_NETTEST_CLIENTIP=(192<<24|168<<16|0<<8|106)
|
|||
|
||||
#
|
||||
# Settings for examples/ostest
|
||||
#
|
||||
CONFIG_EXAMPLES_OSTEST_LOOPS=100
|
||||
CONFIG_EXAMPLES_OSTEST_STACKSIZE=8192
|
||||
|
||||
|
@ -466,6 +515,7 @@ CONFIG_EXAMPLES_OSTEST_STACKSIZE=8192
|
|||
# CONFIG_NSH_FATSECTSIZE - FAT FS sector size
|
||||
# CONFIG_NSH_FATNSECTORS - FAT FS number of sectors
|
||||
# CONFIG_NSH_FATMOUNTPT - FAT FS mountpoint
|
||||
#
|
||||
CONFIG_NSH_FILEIOSIZE=1024
|
||||
CONFIG_NSH_STRERROR=n
|
||||
CONFIG_NSH_LINELEN=80
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
############################################################################
|
||||
# configs/sim/nx11/appconfig
|
||||
#
|
||||
# Copyright (C) 2011 Gregory Nutt. All rights reserved.
|
||||
# Author: Gregory Nutt <spudmonkey@racsa.co.cr>
|
||||
# Copyright (C) 2011-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
|
||||
|
@ -34,6 +34,8 @@
|
|||
############################################################################
|
||||
|
||||
# Path to example in apps/examples containing the user_start entry point
|
||||
# Various NX tests can be supported, simply comment-out examples/nx and
|
||||
# uncomment the test you wish to perform
|
||||
|
||||
CONFIGURED_APPS += examples/nx
|
||||
|
||||
#CONFIGURED_APPS += examples/nxconsole
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
############################################################################
|
||||
# sim/nx11/defconfig
|
||||
#
|
||||
# Copyright (C) 2008, 2010-2011 Gregory Nutt. All rights reserved.
|
||||
# Author: Gregory Nutt <spudmonkey@racsa.co.cr>
|
||||
# Copyright (C) 2008, 2010-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
|
||||
|
@ -271,6 +271,7 @@ CONFIG_PREALLOC_TIMERS=8
|
|||
|
||||
#
|
||||
# Framebuffer driver options
|
||||
#
|
||||
CONFIG_FB_CMAP=y
|
||||
CONFIG_FB_HWCURSOR=n
|
||||
CONFIG_FB_HWCURSORIMAGE=n
|
||||
|
@ -279,14 +280,17 @@ CONFIG_FB_HWCURSORIMAGE=n
|
|||
|
||||
#
|
||||
# FAT filesystem configuration
|
||||
#
|
||||
# CONFIG_FS_FAT - Enable FAT filesystem support
|
||||
# CONFIG_FAT_SECTORSIZE - Max supported sector size
|
||||
# CONFIG_FS_ROMFS - Enable ROMFS filesystem support
|
||||
#
|
||||
CONFIG_FS_FAT=n
|
||||
CONFIG_FS_ROMFS=n
|
||||
|
||||
#
|
||||
# TCP/IP and UDP support via uIP
|
||||
#
|
||||
# CONFIG_NET - Enable or disable all network features
|
||||
# CONFIG_NET_IPv6 - Build in support for IPv6
|
||||
# CONFIG_NSOCKET_DESCRIPTORS - Maximum number of socket descriptors per task/thread.
|
||||
|
@ -333,8 +337,10 @@ CONFIG_NET_BROADCAST=n
|
|||
|
||||
#
|
||||
# UIP Network Utilities
|
||||
#
|
||||
# CONFIG_NET_DHCP_LIGHT - Reduces size of DHCP
|
||||
# CONFIG_NET_RESOLV_ENTRIES - Number of resolver entries
|
||||
#
|
||||
CONFIG_NET_DHCP_LIGHT=n
|
||||
CONFIG_NET_RESOLV_ENTRIES=4
|
||||
|
||||
|
@ -416,8 +422,48 @@ CONFIG_NX_BLOCKING=y
|
|||
CONFIG_NX_MXSERVERMSGS=32
|
||||
CONFIG_NX_MXCLIENTMSGS=16
|
||||
|
||||
#
|
||||
# NxConsole Configuration Settings:
|
||||
#
|
||||
# CONFIG_NXCONSOLE_BPP
|
||||
# Currently, NxConsole supports only a single pixel depth. This
|
||||
# configuration setting must be provided to support that single pixel depth.
|
||||
# Default: The smallest enabled pixel depth. (see CONFIG_NX_DISABLE_*BPP)
|
||||
# CONFIG_NXCONSOLE_NOGETRUN
|
||||
# NxConsole needs to know if it can read from the LCD or not. If reading
|
||||
# from the LCD is supported, then NxConsole can do more efficient
|
||||
# scrolling. Default: Supported
|
||||
# CONFIG_NXCONSOLE_MXCHARS
|
||||
# NxConsole needs to remember every character written to the console so
|
||||
# that it can redraw the window. This setting determines the size of some
|
||||
# internal memory allocations used to hold the character data. Default: 128.
|
||||
# CONFIG_NXCONSOLE_FONTCACHE
|
||||
# If this setting is defined, then caching of fonts will be supported by
|
||||
# NxConsole. Each font must be rendered from the tiny font storage format
|
||||
# to the full display size and pixel depth. If this setting is defined, then
|
||||
# the more recently used font glyphs will be retained in a cache of size
|
||||
# CONFIG_NXCONSOLE_CACHESIZE. Default: No font caching.
|
||||
# CONFIG_NXCONSOLE_CACHESIZE
|
||||
# If CONFIG_NXCONSOLE_FONTCACHE, then this setting will control the size
|
||||
# of the font cache (in number of glyphs). Default: 16.
|
||||
# CONFIG_NXCONSOLE_LINESEPARATION
|
||||
# This the space (in rows) between each row of test. Default: 2
|
||||
# CONFIG_NXCONSOLE_NOWRAP
|
||||
# By default, lines will wrap when the test reaches the right hand side
|
||||
# of the window. This setting can be defining to change this behavior so
|
||||
# that the text is simply truncated until a new line is encountered.
|
||||
#
|
||||
CONFIG_NXCONSOLE_BPP=32
|
||||
# CONFIG_NXCONSOLE_NOGETRUN
|
||||
# CONFIG_NXCONSOLE_MXCHARS
|
||||
# CONFIG_NXCONSOLE_FONTCACHE
|
||||
# CONFIG_NXCONSOLE_CACHESIZE
|
||||
# CONFIG_NXCONSOLE_LINESEPARATION
|
||||
# CONFIG_NXCONSOLE_NOWRAP
|
||||
|
||||
#
|
||||
# Settings for examples/uip
|
||||
#
|
||||
CONFIG_EXAMPLE_UIP_IPADDR=(192<<24|168<<16|0<<8|128)
|
||||
CONFIG_EXAMPLE_UIP_DRIPADDR=(192<<24|168<<16|0<<8|1)
|
||||
CONFIG_EXAMPLE_UIP_NETMASK=(255<<24|255<<16|255<<8|0)
|
||||
|
@ -425,6 +471,7 @@ CONFIG_EXAMPLE_UIP_DHCPC=n
|
|||
|
||||
#
|
||||
# Settings for examples/nettest
|
||||
#
|
||||
CONFIG_EXAMPLE_NETTEST_SERVER=n
|
||||
CONFIG_EXAMPLE_NETTEST_PERFORMANCE=n
|
||||
CONFIG_EXAMPLE_NETTEST_NOMAC=n
|
||||
|
@ -435,6 +482,7 @@ CONFIG_EXAMPLE_NETTEST_CLIENTIP=(192<<24|168<<16|0<<8|106)
|
|||
|
||||
#
|
||||
# Settings for examples/ostest
|
||||
#
|
||||
CONFIG_EXAMPLES_OSTEST_LOOPS=100
|
||||
CONFIG_EXAMPLES_OSTEST_STACKSIZE=8192
|
||||
|
||||
|
@ -468,6 +516,7 @@ CONFIG_EXAMPLES_OSTEST_STACKSIZE=8192
|
|||
# CONFIG_NSH_FATSECTSIZE - FAT FS sector size
|
||||
# CONFIG_NSH_FATNSECTORS - FAT FS number of sectors
|
||||
# CONFIG_NSH_FATMOUNTPT - FAT FS mountpoint
|
||||
#
|
||||
CONFIG_NSH_FILEIOSIZE=1024
|
||||
CONFIG_NSH_STRERROR=n
|
||||
CONFIG_NSH_LINELEN=80
|
||||
|
@ -517,6 +566,7 @@ CONFIG_NSH_FATMOUNTPT=/tmp
|
|||
# CONFIG_EXAMPLES_NX_SERVERPRIO -- The server priority. Default: 120
|
||||
# CONFIG_EXAMPLES_NX_NOTIFYSIGNO -- The signal number to use with
|
||||
# nx_eventnotify(). Default: 4
|
||||
#
|
||||
CONFIG_EXAMPLES_NX_VPLANE=0
|
||||
#CONFIG_EXAMPLES_NX_BGCOLOR
|
||||
#CONFIG_EXAMPLES_NX_COLOR1
|
||||
|
@ -532,6 +582,7 @@ CONFIG_EXAMPLES_NX_NOTIFYSIGNO=4
|
|||
|
||||
#
|
||||
# Settings for examples/mount
|
||||
#
|
||||
CONFIG_EXAMPLES_MOUNT_DEVNAME="/dev/ram0"
|
||||
#CONFIG_EXAMPLES_MOUNT_NSECTORS=2048
|
||||
#CONFIG_EXAMPLES_MOUNT_SECTORSIZE=512
|
||||
|
@ -563,7 +614,7 @@ CONFIG_BOOT_RUNFROMFLASH=n
|
|||
CONFIG_BOOT_COPYTORAM=n
|
||||
CONFIG_CUSTOM_STACK=n
|
||||
CONFIG_IDLETHREAD_STACKSIZE=4096
|
||||
CONFIG_USERMAIN_STACKSIZE=4096
|
||||
CONFIG_USERMAIN_STACKSIZE=16384
|
||||
CONFIG_PTHREAD_STACK_MIN=256
|
||||
CONFIG_PTHREAD_STACK_DEFAULT=8192
|
||||
CONFIG_HEAP_BASE=
|
||||
|
|
|
@ -34,6 +34,9 @@ at the present, but here is the longer term roadmap:
|
|||
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.
|
||||
NxConsole - NxConsole is a write-only character device that is built on top of
|
||||
an NX window. This character device can be used to provide stdout
|
||||
and stderr and, hence, can provide the output side of NuttX console.
|
||||
|
||||
Related Header Files
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
|
@ -150,10 +153,10 @@ Installing New Fonts
|
|||
|
||||
genfontsources:
|
||||
ifeq ($(CONFIG_NXFONT_SANS23X27),y)
|
||||
@$(MAKE) -C nxfonts -f Makefile.sources TOPDIR=$(TOPDIR) NXFONTS_FONTID=1 EXTRADEFINES=$(EXTRADEFINES)
|
||||
@$(MAKE) -C nxfonts -f Makefile.sources TOPDIR=$(TOPDIR) NXFONTS_FONTID=1 EXTRADEFINES=$(EXTRADEFINES)
|
||||
endif
|
||||
ifeq ($(CONFIG_NXFONT_MYFONT),y)
|
||||
@$(MAKE) -C nxfonts -f Makefile.sources TOPDIR=$(TOPDIR) NXFONTS_FONTID=2 EXTRADEFINES=$(EXTRADEFINES)
|
||||
@$(MAKE) -C nxfonts -f Makefile.sources TOPDIR=$(TOPDIR) NXFONTS_FONTID=2 EXTRADEFINES=$(EXTRADEFINES)
|
||||
endif
|
||||
|
||||
6. nuttx/graphics/nxfonts/Make.defs. Set the make variable NXFSET_CSRCS.
|
||||
|
@ -161,10 +164,10 @@ Installing New Fonts
|
|||
NXFONTS_FONTID=2:
|
||||
|
||||
ifeq ($(CONFIG_NXFONT_SANS23X27),y)
|
||||
NXFSET_CSRCS += nxfonts_bitmaps_sans23x27.c
|
||||
NXFSET_CSRCS += nxfonts_bitmaps_sans23x27.c
|
||||
endif
|
||||
ifeq ($(CONFIG_NXFONT_MYFONT),y)
|
||||
NXFSET_CSRCS += nxfonts_bitmaps_myfont.c
|
||||
NXFSET_CSRCS += nxfonts_bitmaps_myfont.c
|
||||
endif
|
||||
|
||||
7. nuttx/graphics/nxfonts/Makefile.sources. This is the Makefile used
|
||||
|
@ -175,12 +178,12 @@ Installing New Fonts
|
|||
was used in nuttx/graphics/nxfonts/Make.defs):
|
||||
|
||||
ifeq ($(NXFONTS_FONTID),1)
|
||||
NXFONTS_PREFIX := g_sans23x27_
|
||||
GEN_CSRC = nxfonts_bitmaps_sans23x27.c
|
||||
NXFONTS_PREFIX := g_sans23x27_
|
||||
GEN_CSRC = nxfonts_bitmaps_sans23x27.c
|
||||
endif
|
||||
ifeq ($(NXFONTS_FONTID),2)
|
||||
NXFONTS_PREFIX := g_myfont_
|
||||
GEN_CSRC = nxfonts_bitmaps_myfont.c
|
||||
NXFONTS_PREFIX := g_myfont_
|
||||
GEN_CSRC = nxfonts_bitmaps_myfont.c
|
||||
endif
|
||||
|
||||
8. graphics/nxfonts/nxfonts_bitmaps.c. This is the file that contains
|
||||
|
@ -314,6 +317,36 @@ CONFIG_NXFONT_SERIF38X49B
|
|||
This option enables support for a large, 38x49 bold font (with serifs)
|
||||
(font ID FONTID_SERIF38X49B == 13).
|
||||
|
||||
NxConsole Configuration Settings:
|
||||
|
||||
CONFIG_NXCONSOLE_BPP
|
||||
Currently, NxConsole supports only a single pixel depth. This
|
||||
configuration setting must be provided to support that single pixel depth.
|
||||
Default: The smallest enabled pixel depth. (see CONFIG_NX_DISABLE_*BPP)
|
||||
CONFIG_NXCONSOLE_NOGETRUN
|
||||
NxConsole needs to know if it can read from the LCD or not. If reading
|
||||
from the LCD is supported, then NxConsole can do more efficient
|
||||
scrolling. Default: Supported
|
||||
CONFIG_NXCONSOLE_MXCHARS
|
||||
NxConsole needs to remember every character written to the console so
|
||||
that it can redraw the window. This setting determines the size of some
|
||||
internal memory allocations used to hold the character data. Default: 128.
|
||||
CONFIG_NXCONSOLE_FONTCACHE
|
||||
If this setting is defined, then caching of fonts will be supported by
|
||||
NxConsole. Each font must be rendered from the tiny font storage format
|
||||
to the full display size and pixel depth. If this setting is defined, then
|
||||
the more recently used font glyphs will be retained in a cache of size
|
||||
CONFIG_NXCONSOLE_CACHESIZE. Default: No font caching.
|
||||
CONFIG_NXCONSOLE_CACHESIZE
|
||||
If CONFIG_NXCONSOLE_FONTCACHE, then this setting will control the size
|
||||
of the font cache (in number of glyphs). Default: 16.
|
||||
CONFIG_NXCONSOLE_LINESEPARATION
|
||||
This the space (in rows) between each row of test. Default: 2
|
||||
CONFIG_NXCONSOLE_NOWRAP
|
||||
By default, lines will wrap when the test reaches the right hand side
|
||||
of the window. This setting can be defining to change this behavior so
|
||||
that the text is simply truncated until a new line is encountered.
|
||||
|
||||
NX Multi-user only options:
|
||||
|
||||
CONFIG_NX_BLOCKING
|
||||
|
|
|
@ -34,5 +34,6 @@
|
|||
############################################################################
|
||||
|
||||
NXCON_ASRCS =
|
||||
NXCON_CSRCS = nx_register.c nxcon_driver.c nxcon_font.c nxcon_register.c
|
||||
NXCON_CSRCS += nxcon_unregister.c nxtk_register.c nxtool_register.c
|
||||
NXCON_CSRCS = nx_register.c nxcon_driver.c nxcon_font.c nxcon_redraw.c
|
||||
NXCON_CSRCS += nxcon_register.c nxcon_scroll.c nxcon_unregister.c
|
||||
NXCON_CSRCS += nxtk_register.c nxtool_register.c
|
||||
|
|
|
@ -126,12 +126,21 @@ static ssize_t nxcon_write(FAR struct file *filep, FAR const char *buffer,
|
|||
FAR struct nxcon_state_s *priv;
|
||||
char ch;
|
||||
int lineheight;
|
||||
int ret;
|
||||
|
||||
/* Recover our private state structure */
|
||||
|
||||
DEBUGASSERT(filep && filep->f_priv);
|
||||
priv = (FAR struct nxcon_state_s *)filep->f_priv;
|
||||
|
||||
/* Get exclusive access */
|
||||
|
||||
ret = sem_wait(&priv->exclsem);
|
||||
if (ret < 0)
|
||||
{
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Loop writing each character to the display */
|
||||
|
||||
lineheight = (priv->fheight + CONFIG_NXCONSOLE_LINESEPARATION);
|
||||
|
@ -185,6 +194,7 @@ static ssize_t nxcon_write(FAR struct file *filep, FAR const char *buffer,
|
|||
nxcon_putc(priv, (uint8_t)ch);
|
||||
}
|
||||
|
||||
sem_post(&priv->exclsem);
|
||||
return buflen;
|
||||
}
|
||||
|
||||
|
|
|
@ -58,8 +58,8 @@
|
|||
/* Configuration ************************************************************/
|
||||
/* The maximum number of characters that can be remembered */
|
||||
|
||||
#ifndef CONFIG_NXCONSOLE_BMCACHE
|
||||
# define CONFIG_NXCONSOLE_BMCACHE 128
|
||||
#ifndef CONFIG_NXCONSOLE_MXCHARS
|
||||
# define CONFIG_NXCONSOLE_MXCHARS 128
|
||||
#endif
|
||||
|
||||
/* Font cache -- this is the number or pre-rendered font glyphs that can be
|
||||
|
@ -67,11 +67,33 @@
|
|||
*/
|
||||
|
||||
#ifdef CONFIG_NXCONSOLE_FONTCACHE
|
||||
# ifndef CONFIG_NXCONSOLE_GLCACHE
|
||||
# define CONFIG_NXCONSOLE_GLCACHE 16
|
||||
# ifndef CONFIG_NXCONSOLE_CACHESIZE
|
||||
# define CONFIG_NXCONSOLE_CACHESIZE 16
|
||||
# endif
|
||||
#else
|
||||
# undef CONFIG_NXCONSOLE_GLCACHE
|
||||
# undef CONFIG_NXCONSOLE_CACHESIZE
|
||||
#endif
|
||||
|
||||
/* Pixel depth */
|
||||
|
||||
#ifndef CONFIG_NXCONSOLE_BPP
|
||||
# if !defined(CONFIG_NX_DISABLE_1BPP)
|
||||
# define CONFIG_NXCONSOLE_BPP 1
|
||||
# elif !defined(CONFIG_NX_DISABLE_2BPP)
|
||||
# define CONFIG_NXCONSOLE_BPP 2
|
||||
# elif !defined(CONFIG_NX_DISABLE_4BPP)
|
||||
# define CONFIG_NXCONSOLE_BPP 4
|
||||
# elif !defined(CONFIG_NX_DISABLE_8BPP)
|
||||
# define CONFIG_NXCONSOLE_BPP 8
|
||||
# elif !defined(CONFIG_NX_DISABLE_16BPP)
|
||||
# define CONFIG_NXCONSOLE_BPP 16
|
||||
//#elif !defined(CONFIG_NX_DISABLE_24BPP)
|
||||
//# define CONFIG_NXCONSOLE_BPP 24
|
||||
# elif !defined(CONFIG_NX_DISABLE_32BPP)
|
||||
# define CONFIG_NXCONSOLE_BPP 32
|
||||
# else
|
||||
# error "No pixel depth provided"
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* Space (in rows) between lines */
|
||||
|
@ -164,12 +186,12 @@ struct nxcon_state_s
|
|||
|
||||
/* Font cache data storage */
|
||||
|
||||
struct nxcon_bitmap_s bm[CONFIG_NXCONSOLE_BMCACHE];
|
||||
struct nxcon_bitmap_s bm[CONFIG_NXCONSOLE_MXCHARS];
|
||||
|
||||
/* Glyph cache data storage */
|
||||
|
||||
#ifdef CONFIG_NXCONSOLE_FONTCACHE
|
||||
struct nxcon_glyph_s glyph[CONFIG_NXCONSOLE_GLCACHE];
|
||||
struct nxcon_glyph_s glyph[CONFIG_NXCONSOLE_CACHESIZE];
|
||||
#else
|
||||
/* A glyph cache of size one -- all fonts will be re-rendered on each use */
|
||||
|
||||
|
|
|
@ -0,0 +1,131 @@
|
|||
/****************************************************************************
|
||||
* nuttx/graphics/nxconsole/nxcon_bkgd.c
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include <assert.h>
|
||||
#include <errno.h>
|
||||
#include <debug.h>
|
||||
|
||||
#include <nuttx/nx/nx.h>
|
||||
#include <nuttx/nx/nxglib.h>
|
||||
|
||||
#include "nxcon_internal.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Private Types
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Private Function Prototypes
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Private Data
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Public Data
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Private Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: nxcon_redraw
|
||||
*
|
||||
* Description:
|
||||
* Re-draw a portion of the NX console. This function should be called
|
||||
* from the appropriate window callback logic.
|
||||
*
|
||||
* Input Parameters:
|
||||
* handle - A handle previously returned by nx_register, nxtk_register, or
|
||||
* nxtool_register.
|
||||
* rect - The rectangle that needs to be re-drawn (in window relative
|
||||
* coordinates)
|
||||
* more - true: More re-draw requests will follow
|
||||
*
|
||||
* Returned Value:
|
||||
* None
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void nxcon_redraw(NXCONSOLE handle, FAR const struct nxgl_rect_s *rect, bool more)
|
||||
{
|
||||
FAR struct nxcon_state_s *priv;
|
||||
int ret;
|
||||
int i;
|
||||
|
||||
DEBUGASSERT(handle && rect);
|
||||
gvdbg("rect={(%d,%d),(%d,%d)} more=%s\n",
|
||||
rect->pt1.x, rect->pt1.y, rect->pt2.x, rect->pt2.y,
|
||||
more ? "true" : "false");
|
||||
|
||||
/* Recover our private state structure */
|
||||
|
||||
priv = (FAR struct nxcon_state_s *)handle;
|
||||
|
||||
/* Fill the rectangular region with the window background color */
|
||||
|
||||
ret = priv->ops->fill(priv, rect, priv->wndo.wcolor);
|
||||
if (ret < 0)
|
||||
{
|
||||
gdbg("fill failed: %d\n", errno);
|
||||
}
|
||||
|
||||
/* Then redraw each character on the display (Only the characters within
|
||||
* the rectangle will actually be redrawn).
|
||||
*/
|
||||
|
||||
for (i = 0; i < priv->nchars; i++)
|
||||
{
|
||||
nxcon_fillchar(priv, rect, &priv->bm[i]);
|
||||
}
|
||||
}
|
|
@ -122,9 +122,9 @@ FAR struct nxcon_state_s *
|
|||
|
||||
/* Set up the text caches */
|
||||
|
||||
priv->maxchars = CONFIG_NXCONSOLE_BMCACHE;
|
||||
priv->maxchars = CONFIG_NXCONSOLE_MXCHARS;
|
||||
#ifdef CONFIG_NXCONSOLE_FONTCACHE
|
||||
priv->maxglyphs = CONFIG_NXCONSOLE_GLCACHE;
|
||||
priv->maxglyphs = CONFIG_NXCONSOLE_CACHESIZE;
|
||||
#endif
|
||||
|
||||
/* Set the initial display position */
|
||||
|
|
|
@ -0,0 +1,239 @@
|
|||
/****************************************************************************
|
||||
* nuttx/graphics/nxconsole/nxcon_scroll.c
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <semaphore.h>
|
||||
#include <errno.h>
|
||||
#include <debug.h>
|
||||
|
||||
#include <nuttx/nx/nx.h>
|
||||
#include <nuttx/nx/nxfonts.h>
|
||||
|
||||
#include "nxcon_internal.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Private Types
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Private Function Prototypes
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Private Data
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Public Data
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Private Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: nxcon_movedisplay
|
||||
*
|
||||
* Description:
|
||||
* This function implements the data movement for the scroll operation. If
|
||||
* we can read the displays framebuffer memory, then the job is pretty
|
||||
* easy. However, many displays (such as SPI-based LCDs) are often read-
|
||||
* only.
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef CONFIG_NXCONSOLE_NOGETRUN
|
||||
static inline void nxcon_movedisplay(FAR struct nxcon_state_s *priv,
|
||||
int bottom, int scrollheight)
|
||||
{
|
||||
FAR struct nxcon_bitmap_s *bm;
|
||||
struct nxgl_rect_s rect;
|
||||
nxgl_coord_t row;
|
||||
int ret;
|
||||
int i;
|
||||
|
||||
/* Move each row, one at a time. They could all be moved at once (by calling
|
||||
* nxcon_redraw), but the since the region is cleared, then re-written, the
|
||||
* effect would not be good. Below the region is also cleared and re-written,
|
||||
* however, in much smaller chunks.
|
||||
*/
|
||||
|
||||
rect.pt1.x = 0;
|
||||
rect.pt2.x = priv->wndo.wsize.w - 1;
|
||||
|
||||
for (row = CONFIG_NXCONSOLE_LINESEPARATION; row < bottom; row += scrollheight)
|
||||
{
|
||||
/* Create a bounding box the size of one row of characters */
|
||||
|
||||
rect.pt1.y = row;
|
||||
rect.pt2.y = row + scrollheight - 1;
|
||||
|
||||
/* Clear the region */
|
||||
|
||||
ret = priv->ops->fill(priv, &rect, priv->wndo.wcolor);
|
||||
if (ret < 0)
|
||||
{
|
||||
gdbg("fill failed: %d\n", errno);
|
||||
}
|
||||
|
||||
/* Fill each character that might lie within in the bounding box */
|
||||
|
||||
for (i = 0; i < priv->nchars; i++)
|
||||
{
|
||||
bm = &priv->bm[i];
|
||||
if (bm->pos.y <= rect.pt2.y && bm->pos.y + priv->fheight >= rect.pt1.y)
|
||||
{
|
||||
nxcon_fillchar(priv, &rect, bm);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Finally, clear the bottom part of the display */
|
||||
|
||||
rect.pt1.y = bottom;
|
||||
rect.pt2.y = priv->wndo.wsize.h- 1;
|
||||
|
||||
ret = priv->ops->fill(priv, &rect, priv->wndo.wcolor);
|
||||
if (ret < 0)
|
||||
{
|
||||
gdbg("nxcon_movedisplay: fill failed: %d\n", errno);
|
||||
}
|
||||
}
|
||||
#else
|
||||
static inline void nxcon_movedisplay(FAR struct nxcon_state_s *priv,
|
||||
int bottom, int scrollheight)
|
||||
{
|
||||
struct nxgl_rect_s rect;
|
||||
struct nxgl_point_s offset;
|
||||
int ret;
|
||||
|
||||
/* Move the display in the range of 0-height up one scrollheight. The
|
||||
* line at the bottom will be reset to the background color automatically.
|
||||
*
|
||||
* The source rectangle to be moved.
|
||||
*/
|
||||
|
||||
rect.pt1.x = 0;
|
||||
rect.pt1.y = scrollheight + CONFIG_NXCONSOLE_LINESEPARATION;
|
||||
rect.pt2.x = priv->wndo.wsize.w - 1;
|
||||
rect.pt2.y = priv->wndo.wsize.h - 1;
|
||||
|
||||
/* The offset that determines how far to move the source rectangle */
|
||||
|
||||
offset.x = 0;
|
||||
offset.y = -scrollheight;
|
||||
|
||||
/* Move the source rectangle */
|
||||
|
||||
ret = priv->move(priv, &rect, &offset);
|
||||
if (ret < 0)
|
||||
{
|
||||
gdbg("move failed: %d\n", errno);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: nxcon_scroll
|
||||
****************************************************************************/
|
||||
|
||||
void nxcon_scroll(FAR struct nxcon_state_s *priv, int scrollheight)
|
||||
{
|
||||
int i;
|
||||
int j;
|
||||
|
||||
/* Adjust the vertical position of each character */
|
||||
|
||||
for (i = 0; i < priv->nchars; )
|
||||
{
|
||||
FAR struct nxcon_bitmap_s *bm = &priv->bm[i];
|
||||
|
||||
/* Has any part of this character scrolled off the screen? */
|
||||
|
||||
if (bm->pos.y < scrollheight + CONFIG_NXCONSOLE_LINESEPARATION)
|
||||
{
|
||||
/* Yes... Delete the character by moving all of the data */
|
||||
|
||||
for (j = i; j < priv->nchars-1; j++)
|
||||
{
|
||||
memcpy(&priv->bm[j], &priv->bm[j+1], sizeof(struct nxcon_bitmap_s));
|
||||
}
|
||||
|
||||
/* Decrement the number of cached characters ('i' is not incremented
|
||||
* in this case because it already points to the next character)
|
||||
*/
|
||||
|
||||
priv->nchars--;
|
||||
}
|
||||
|
||||
/* No.. just decrement its vertical position (moving it "up" the
|
||||
* display by one line).
|
||||
*/
|
||||
|
||||
else
|
||||
{
|
||||
bm->pos.y -= scrollheight;
|
||||
|
||||
/* We are keeping this one so increment to the next character */
|
||||
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
/* And move the next display position up by one line as well */
|
||||
|
||||
priv->fpos.y -= scrollheight;
|
||||
|
||||
/* Move the display in the range of 0-height up one scrollheight. */
|
||||
|
||||
nxcon_movedisplay(priv, priv->fpos.y, scrollheight);
|
||||
}
|
Loading…
Reference in New Issue