Browse Source

Hook in NxWidgets configuration logic; Add a untested ADS7843E touchscreen support for the Shenzhou board; Complete the Shenzhou NxWM configuration (also untested).

git-svn-id: http://svn.code.sf.net/p/nuttx/code/trunk@5190 42af7a65-404d-4744-a932-0658087f49c3
sbg
patacongo 13 years ago
parent
commit
2be7847efe
  1. 24
      NxWidgets/Kconfig
  2. 6
      NxWidgets/README.txt
  3. 12
      NxWidgets/libnxwidgets/include/nxconfig.hxx
  4. 5
      apps/ChangeLog.txt
  5. 4
      apps/Kconfig
  6. 575
      apps/NxWidgets/Kconfig
  7. 11
      apps/NxWidgets/README.txt
  8. 7
      nuttx/ChangeLog
  9. 1196
      nuttx/configs/shenzhou/nxwm/defconfig
  10. 4
      nuttx/configs/shenzhou/src/Makefile
  11. 292
      nuttx/configs/shenzhou/src/up_touchscreen.c

24
NxWidgets/Kconfig

@ -3,14 +3,14 @@ @@ -3,14 +3,14 @@
# see misc/tools/kconfig-language.txt.
#
menuconfig NxWIDGETS
menuconfig NXWIDGETS
bool "Enable NxWidgets"
default n
depends on NX && HAVE_CXX
---help---
Enable support for NxWidgets
if NxWIDGETS
if NXWIDGETS
comment "NX Server/Device Configuration"
config NXWIDGETS_DEVNO
@ -88,7 +88,7 @@ config NXWIDGETS_BPP @@ -88,7 +88,7 @@ config NXWIDGETS_BPP
BPP configuration supported by NX.
config NXWIDGETS_SIZEOFCHAR
int "Size of a character (1 or 2 bytes)
int "Size of a character (1 or 2 bytes)"
range 1 2
---help---
Size of character {1 or 2 bytes}. Default Determined by
@ -116,12 +116,12 @@ config NXWIDGETS_TNXARRAY_SIZEINCREMENT @@ -116,12 +116,12 @@ config NXWIDGETS_TNXARRAY_SIZEINCREMENT
config NXWIDGETS_DEFAULT_BACKGROUNDCOLOR
hex "Normal Background Color"
---help---
Normal background color. Default: RGB(160,160,160)
Normal background color. Default: RGB(148,189,215)
config NXWIDGETS_DEFAULT_SELECTEDBACKGROUNDCOLOR
hex "Selected Background Color"
---help---
Default selected background color. Default: RGB(120,192,192)
Default selected background color. Default: RGB(206,227,241)
config NXWIDGETS_DEFAULT_SHINEEDGECOLOR
hex "Shiny Edge Color"
@ -131,7 +131,7 @@ config NXWIDGETS_DEFAULT_SHINEEDGECOLOR @@ -131,7 +131,7 @@ config NXWIDGETS_DEFAULT_SHINEEDGECOLOR
config NXWIDGETS_DEFAULT_SHADOWEDGECOLOR
hex "Shadow Edge Color"
---help---
Shadowed side border color. Default: RGB(0,0,0)
Shadowed side border color. Default: RGB(35,58,73)
config NXWIDGETS_DEFAULT_HIGHLIGHTCOLOR
hex "Highlight Color"
@ -203,14 +203,14 @@ config NXWIDGETS_CURSORCONTROL_SIZE @@ -203,14 +203,14 @@ config NXWIDGETS_CURSORCONTROL_SIZE
endif
menuconfig NxWM
menuconfig NXWM
bool "Enable NxWM"
default n
depends on NxWIDGETS && NX_MULTIUSER
depends on NXWIDGETS && NX_MULTIUSER
---help---
Enable support for the NuttX Tiny Window Manager (NxWM)
if NxWM
if NXWM
comment "General settings"
config NXWM_DEFAULT_FONTID
@ -218,6 +218,12 @@ config NXWM_DEFAULT_FONTID @@ -218,6 +218,12 @@ config NXWM_DEFAULT_FONTID
---help---
The NxWM default font ID. Default: NXFONT_DEFAULT
config NXWM_UNITTEST
bool "NxWM Unit Test"
default n
---help---
Enable Hooks for the NxWM Unit Test
comment "Color configuration"
config NXWM_DEFAULT_BACKGROUNDCOLOR

6
NxWidgets/README.txt

@ -53,6 +53,12 @@ license. See the COPYING file for details. @@ -53,6 +53,12 @@ license. See the COPYING file for details.
Directory Structure
===================
Kconfig
This is a Kconfig file that should be provided at apps/NxWidgets/Kconfig.
When copied to that location, it will be used by the NuttX configuration
systems to configure settings for NxWidgets and NxWM
libnxwidgets
The source code, header files, and build environment for NxWidgets is

12
NxWidgets/libnxwidgets/include/nxconfig.hxx

@ -104,13 +104,13 @@ @@ -104,13 +104,13 @@
* Default dynamic array parameters. Default: 16, 8
*
* CONFIG_NXWIDGETS_DEFAULT_BACKGROUNDCOLOR - Normal background color. Default:
* MKRGB(160,160,160)
* MKRGB(148,189,215)
* CONFIG_NXWIDGETS_DEFAULT_SELECTEDBACKGROUNDCOLOR - Default selected background
* color. Default: MKRGB(120,192,192)
* color. Default: MKRGB(206,227,241)
* CONFIG_NXWIDGETS_DEFAULT_SHINEEDGECOLOR - Shiny side boarder color. Default
* MKRGB(248,248,248)
* CONFIG_NXWIDGETS_DEFAULT_SHADOWEDGECOLOR - Shadowed side border color.
* Default: MKRGB(0,0,0)
* Default: MKRGB(35,58,73)
* CONFIG_NXWIDGETS_DEFAULT_HIGHLIGHTCOLOR - Highlight color. Default:
* MKRGB(192,192,192)
* CONFIG_NXWIDGETS_DEFAULT_DISABLEDTEXTCOLOR - Text color on a disabled widget:
@ -362,7 +362,7 @@ @@ -362,7 +362,7 @@
*/
#ifndef CONFIG_NXWIDGETS_DEFAULT_BACKGROUNDCOLOR
# define CONFIG_NXWIDGETS_DEFAULT_BACKGROUNDCOLOR MKRGB(160,160,160)
# define CONFIG_NXWIDGETS_DEFAULT_BACKGROUNDCOLOR MKRGB(148,189,215)
#endif
/**
@ -370,7 +370,7 @@ @@ -370,7 +370,7 @@
*/
#ifndef CONFIG_NXWIDGETS_DEFAULT_SELECTEDBACKGROUNDCOLOR
# define CONFIG_NXWIDGETS_DEFAULT_SELECTEDBACKGROUNDCOLOR MKRGB(120,192,192)
# define CONFIG_NXWIDGETS_DEFAULT_SELECTEDBACKGROUNDCOLOR MKRGB(206,227,241)
#endif
/**
@ -386,7 +386,7 @@ @@ -386,7 +386,7 @@
*/
#ifndef CONFIG_NXWIDGETS_DEFAULT_SHADOWEDGECOLOR
# define CONFIG_NXWIDGETS_DEFAULT_SHADOWEDGECOLOR MKRGB(0,0,0)
# define CONFIG_NXWIDGETS_DEFAULT_SHADOWEDGECOLOR MKRGB(35,58,73)
#endif
/**

5
apps/ChangeLog.txt

@ -340,3 +340,8 @@ @@ -340,3 +340,8 @@
Kate.
* apps/netutils/webserver/httpd.c: Add support for Keep-alive connections
(from Kate).
* apps/NxWidget/Kconfig: This is a kludge. I created this NxWidgets
directory that ONLY contains Kconfig. NxWidgets does not like in
either the nuttx/ or the apps/ source trees. This kludge makes it
possible to configure NxWidgets/NxWM without too much trouble (with
the tradeoff being a kind ugly structure and some maintenance issues).

4
apps/Kconfig

@ -27,6 +27,10 @@ menu "NSH Library" @@ -27,6 +27,10 @@ menu "NSH Library"
source "$APPSDIR/nshlib/Kconfig"
endmenu
menu "NxWidgets/NxWM"
source "$APPSDIR/NxWidgets/Kconfig"
endmenu
menu "System NSH Add-Ons"
source "$APPSDIR/system/Kconfig"
endmenu

575
apps/NxWidgets/Kconfig

@ -0,0 +1,575 @@ @@ -0,0 +1,575 @@
#
# For a description of the syntax of this configuration file,
# see misc/tools/kconfig-language.txt.
#
menuconfig NXWIDGETS
bool "Enable NxWidgets"
default n
depends on NX && HAVE_CXX
---help---
Enable support for NxWidgets
if NXWIDGETS
comment "NX Server/Device Configuration"
config NXWIDGETS_DEVNO
int "LCD Device Number"
default 0
---help---
LCD device number (in case there are more than one LCDs connected).
Default: 0
config NXWIDGETS_VPLANE
int "Plane Number"
default 0
---help---
Only a single video plane is supported. Default: 0
config NXWIDGETS_SERVERPRIO
int "NX Server priority"
default 51
---help---
Priority of the NX server. This applies only if NX is configured in
multi-user mode (NX_MULTIUSER=y). Default: 51.
NOTE: Of the three priority definitions here, NXWIDGETS_SERVERPRIO
should have the highest priority to avoid data overrun race conditions.
Such errors would most likely appear as duplicated rows of data on the
display.
config NXWIDGETS_SERVERSTACK
int "NX Server Stack Size"
default 2048
---help---
NX server thread stack size (in multi-user mode). Default 2048
config NXWIDGETS_CLIENTPRIO
int "NX Client Priority"
default 50
---help---
The thread that calls CNxServer::connect() will be re-prioritized to
this priority. This applies only if NX is configured in multi-user
mode (NX_MULTIUSER=y). Default: 50
config NXWIDGETS_LISTENERPRIO
int "NX Listener Priority"
default 50
---help---
Priority of the NX event listener thread. This applies only if NX
is configured in multi-user mode (NX_MULTIUSER=y). Default: 50
config NXWIDGETS_LISTENERSTACK
int "NX Listener Stack Size"
default 2048
---help---
NX listener thread stack size (in multi-user mode). Default 2048
config NXWIDGETS_EXTERNINIT
bool "Extern LCD Initialization"
---help---
Define to support external display initialization.
config NXWIDGET_EVENTWAIT
bool "Event Waiting"
default n
---help---
Build in support for external window event, modal loop management
logic. This includes methods to wait for windows events to occur
so that looping logic can sleep until something interesting happens
with the window.
comment "NXWidget Configuration"
config NXWIDGETS_BPP
int "BPP"
---help---
Supported bits-per-pixel {8, 16, 24, 32}. Default: The smallest
BPP configuration supported by NX.
config NXWIDGETS_SIZEOFCHAR
int "Size of a character (1 or 2 bytes)"
range 1 2
---help---
Size of character {1 or 2 bytes}. Default Determined by
NXWIDGETS_SIZEOFCHAR
comment "NXWidget Default Values"
config NXWIDGETS_DEFAULT_FONTID
int "Default Font ID"
---help---
Default font ID. Default: NXFONT_DEFAULT
config NXWIDGETS_TNXARRAY_INITIALSIZE
int "Initial Size of Dynamic Arrays"
default 16
---help---
Default dynamic array size (in entries). Default: 16
config NXWIDGETS_TNXARRAY_SIZEINCREMENT
int "Dyanamic Array Reallocation Size Increment"
default 8
---help---
Default dynamic array realloctino increment (in entries). Default: 8
config NXWIDGETS_DEFAULT_BACKGROUNDCOLOR
hex "Normal Background Color"
---help---
Normal background color. Default: RGB(148,189,215)
config NXWIDGETS_DEFAULT_SELECTEDBACKGROUNDCOLOR
hex "Selected Background Color"
---help---
Default selected background color. Default: RGB(206,227,241)
config NXWIDGETS_DEFAULT_SHINEEDGECOLOR
hex "Shiny Edge Color"
---help---
Shiny side boarder color. Default: RGB(248,248,248)
config NXWIDGETS_DEFAULT_SHADOWEDGECOLOR
hex "Shadow Edge Color"
---help---
Shadowed side border color. Default: RGB(35,58,73)
config NXWIDGETS_DEFAULT_HIGHLIGHTCOLOR
hex "Highlight Color"
---help---
Highlight color. Default: RGB(192,192,192)
config NXWIDGETS_DEFAULT_DISABLEDTEXTCOLOR
hex "Disabled Text Color"
---help---
Text color on a disabled widget: Default: RGB(192,192,192)
config NXWIDGETS_DEFAULT_ENABLEDTEXTCOLOR
hex "Enabled Text Color"
---help---
Text color on a enabled widget. Default: RGB(248,248,248)
config NXWIDGETS_DEFAULT_SELECTEDTEXTCOLOR
hex "Selected Text Color"
---help---
Text color on a selected widget. Default: RGB(0,0,0)
config NXWIDGETS_DEFAULT_FONTCOLOR
hex "Default Font Color"
---help---
Default font color. Default: RGB(255,255,255)
config NXWIDGETS_TRANSPARENT_COLOR
hex "Transparent Color"
---help---
Transparent color. Default: RGB(0,0,0)
comment "Keypad behavior"
config NXWIDGETS_FIRST_REPEAT_TIME
int "First Repeat Time"
default 500
---help---
Time taken before a key starts repeating (in milliseconds). Default: 500
config NXWIDGETS_CONTINUE_REPEAT_TIME
int "Continue Repeat Time"
default 200
---help---
Time taken before a repeating key repeats again (in milliseconds).
Default: 200
config NXWIDGETS_DOUBLECLICK_TIME
int "Double Click Time"
default 350
---help---
Left button release-press time for double click (in milliseconds).
Default: 350
config NXWIDGETS_KBDBUFFER_SIZE
int "Keybard Buffer Size"
default 16
---help---
Size of incoming character buffer, i.e., the maximum number of
characters that can be entered between NX polling cycles without
losing data.
config NXWIDGETS_CURSORCONTROL_SIZE
int "Cursor Control Buffer Size"
default 4
---help---
Size of incoming cursor control buffer, i.e., the maximum number
of cursor controls that can between entered by NX polling cycles
without losing data. Default: 4
endif
menuconfig NXWM
bool "Enable NxWM"
default n
depends on NXWIDGETS && NX_MULTIUSER
---help---
Enable support for the NuttX Tiny Window Manager (NxWM)
if NXWM
comment "General settings"
config NXWM_DEFAULT_FONTID
int "Font ID"
---help---
The NxWM default font ID. Default: NXFONT_DEFAULT
config NXWM_UNITTEST
bool "NxWM Unit Test"
default n
---help---
Enable Hooks for the NxWM Unit Test
comment "Color configuration"
config NXWM_DEFAULT_BACKGROUNDCOLOR
hex "Background Color"
---help---
Normal background color. Default: RGB(148,189,215)
config NXWM_DEFAULT_SELECTEDBACKGROUNDCOLOR
hex "Normal Background Color"
---help---
Select background color. Default: RGB(206,227,241)
config NXWM_DEFAULT_SHINEEDGECOLOR
hex "Shiny Edge Color"
---help---
Color of the bright edge of a border. Default: RGB(255,255,255)
config NXWM_DEFAULT_SHADOWEDGECOLOR
hex "Shadow Edge Color"
---help---
Color of the shadowed edge of a border. Default: RGB(0,0,0)
config NXWM_DEFAULT_FONTCOLOR
hex "Default Font Color"
---help---
Default fong color. Default: RGB(0,0,0)
config NXWM_TRANSPARENT_COLOR
hex "Transparent Color"
---help---
The "transparent" color. Default: RGB(0,0,0)
comment "Horizontal and vertical spacing of icons in the task bar"
config NXWM_TASKBAR_VSPACING
int "Vertical Spacing"
default 2
---help---
Vertical spacing. Default: 2 pixels
config NXWM_TASKBAR_HSPACING
int "Horizontal Spacing"
default 2
---help---
Horizontal spacing. Default: 2 rows
choice NXWM_TASKBAR_LOCATION
prompt "Taskbar Location"
default NXWM_TASKBAR_TOP
config NXWM_TASKBAR_TOP
bool "Top"
---help---
Task bar is at the top of the display
config NXWM_TASKBAR_BOTTOM
bool "Bottom"
---help---
Task bar is at the bottom of the display
config NXWM_TASKBAR_LEFT
bool "Left"
---help---
Task bar is on the left side of the display
config NXWM_TASKBAR_RIGHT
bool "Right"
---help---
Task bar is on the right side of the display
endchoice
config NXWM_TASKBAR_WIDTH
int "Taskbar Width"
---help---
Task bar thickness (either vertical or horizontal). Default: 25 + 2*spacing
comment "Tool Bar Configuration"
config NXWM_TOOLBAR_HEIGHT
int "Toolbar Height"
---help---
The height of the tool bar in each application window. At present,
all icons are 21 pixels in height and, hence, require a task bar of
at least that size.
comment "Background Image"
config NXWM_BACKGROUND_IMAGE
string "Background Image"
---help---
The name of the image to use in the background window. Default:
NXWidgets::g_nuttxBitmap
comment "Start Window Configuration"
comment "Horizontal and vertical spacing of icons in the task bar"
config NXWM_STARTWINDOW_VSPACING
int "Vertical Spacing"
default 4
---help---
Vertical spacing. Default: 4 pixels
config NXWM_STARTWINDOW_HSPACING
int "Horizontal Spacing"
default 4
---help---
Horizontal spacing. Default: 4 rows
config NXWM_STARTWINDOW_ICON
string "StartWindow Icon"
---help---
The glyph to use as the start window icon. Default: NxWM::g_playBitmap
config NXWM_STARTWINDOW_MQNAME
string "Message Queue Name"
default "/dev/nxwm"
---help---
The well known name of the message queue. Used to communicated from
CWindowMessenger to the start window thread. Default: "/dev/nxwm"
config NXWM_STARTWINDOW_MXMSGS
int "Max Messages"
default 32
---help---
The maximum number of messages to queue before blocking. Defualt 32
config NXWM_STARTWINDOW_MXMPRIO
int "Message Priority"
default 42
---help---
The message priority. Default: 42.
config NXWM_STARTWINDOW_PRIO
int "StartWindow Task Priority"
default 50
---help---
Priority of the StartWindow task. Default: 50.
NOTE: This priority should be less than NXWIDGETS_SERVERPRIO or else
there may be data overrun errors. Such errors would most likely appear
as duplicated rows of data on the display.
config NXWM_STARTWINDOW_STACKSIZE
int "StartWindow Task Stack Size"
default 2048
---help---
The stack size to use when starting the StartWindow task. Default:
2048 bytes.
comment "NxConsole Window Configuration"
config NXWM_NXCONSOLE_PRIO
int "NxConsole Task Priority"
default 50
---help---
Priority of the NxConsole task. Default: 50.
NOTE: This priority should be less than NXWIDGETS_SERVERPRIO or
else there may be data overrun errors. Such errors would most likely
appear as duplicated rows of data on the display.
config NXWM_NXCONSOLE_STACKSIZE
int "NxConsole Task Stack Size"
default 2048
---help---
The stack size to use when starting the NxConsole task. Default:
2048 bytes.
config NXWM_NXCONSOLE_WCOLOR
hex "NxConsole Background Color"
---help---
The color of the NxConsole window background. Default:
RGB(192,192,192)
config NXWM_NXCONSOLE_FONTCOLOR
hex "NxConsole Font Color"
---help---
The color of the fonts to use in the NxConsole window.
Default: RGB(0,0,0)
config NXWM_NXCONSOLE_FONTID
int "NxConsole Font ID"
---help---
The ID of the font to use in the NxConsole window. Default:
NXWM_DEFAULT_FONTID
config NXWM_NXCONSOLE_ICON
string "NxConsole Icon"
---help---
The glyph to use as the NxConsole icon. Default: NxWM::g_cmdBitmap
config NXWM_TOUCHSCREEN
bool "Touchscreen Support"
default y if INPUT
default n if !INPUT
---help---
Define to build in touchscreen support.
if NXWM_TOUCHSCREEN
comment "Touchscreen device settings"
config NXWM_TOUCHSCREEN_DEVNO
int "Touchscreen Device Number"
default 0
---help---
Touchscreen device minor number, i.e., the N in /dev/inputN.
Default: 0
config NXWM_TOUCHSCREEN_DEVPATH
string "Touchscreen Device Path"
default "/dev/input0"
---help---
The full path to the touchscreen device. Default: "/dev/input0"
config NXWM_TOUCHSCREEN_SIGNO
int "Touchscreen Signal Number"
default 5
---help---
The realtime signal used to wake up the touchscreen listener
thread. Default: 5
config NXWM_TOUCHSCREEN_LISTENERPRIO
int "Touchscreen Listener Task Priority"
default 50
---help---
Priority of the touchscreen listener thread. Default: 50
config NXWM_TOUCHSCREEN_LISTENERSTACK
int "Touchscreen Listener Task Stack Size"
---help---
Touchscreen listener thread stack size. Default 1024
endif
config NXWM_KEYBOARD
bool "Keyboard Support"
default n
---help---
Define to build in touchscreen support.
if NXWM_KEYBOARD
comment "Keyboard device settings"
config NXWM_KEYBOARD_DEVPATH
string "Keyboard Device Path"
default "/dev/console"
---help---
The full path to the touchscreen device. Default: "/dev/console"
config NXWM_KEYBOARD_SIGNO
int "Keyboard Task Signal Number"
default 6
---help---
The realtime signal used to wake up the touchscreen listener thread.
Default: 6
config NXWM_KEYBOARD_BUFSIZE
int "Keyboard Buffer Size"
default 16
---help---
The size of the keyboard read data buffer. Default: 16
config NXWM_KEYBOARD_LISTENERPRIO
int "Keyboard Listener Task Priority"
default 50
---help---
Priority of the touchscreen listener thread. Default: 50
config NXWM_KEYBOARD_LISTENERSTACK
int "Keyboard Listener Task Stack Size"
default 2048
---help---
Keyboard listener thread stack size. Default: 1024
endif
comment "Calibration display settings"
config NXWM_CALIBRATION_BACKGROUNDCOLOR
hex "Background Color"
---help---
The background color of the touchscreen calibration display.
Default: Same as NXWM_DEFAULT_BACKGROUNDCOLOR.
config NXWM_CALIBRATION_LINECOLOR
hex "Line Color"
---help---
The color of the lines used in the touchscreen calibration display.
Default: RGB(0, 0, 128) (dark blue)
config NXWM_CALIBRATION_CIRCLECOLOR
hex "Normal Circle Color"
---help---
The color of the circle in the touchscreen calibration display.
Default: RGB(255, 255, 255) (white)
config NXWM_CALIBRATION_TOUCHEDCOLOR
hex "Touched Circle Color"
---help---
The color of the circle in the touchscreen calibration display after
the touch is recorder. Default: RGB(255, 255, 96) (very light yellow)
config NXWM_CALIBRATION_ICON
string "Callibration Icon"
---help---
The ICON to use for the touchscreen calibration application. Default:
NxWM::g_calibrationBitmap
config NXWM_CALIBRATION_SIGNO
int "Calibration Signal Number"
default 5
---help---
The realtime signal used to wake up the touchscreen calibration
thread. Default: 5
config NXWM_CALIBRATION_LISTENERPRIO
int "Calibration Task Priority"
default 50
---help---
Priority of the calibration listener thread. Default: 50
config NXWM_CALIBRATION_LISTENERSTACK
int "Calibration Task Stack Size"
default 2048
---help---
Calibration listener thread stack size. Default 2048
comment "Calibration display settings"
config NXWM_HEXCALCULATOR_BACKGROUNDCOLOR
hex "Calculator Background Color"
---help---
The background color of the calculator display. Default: Same
as NXWM_DEFAULT_BACKGROUNDCOLOR
config NXWM_HEXCALCULATOR_ICON
string "Calculator Icon"
---help---
The ICON to use for the hex calculator application. Default:
NxWM::g_calculatorBitmap
config NXWM_HEXCALCULATOR_FONTID
int "Calculator Font ID"
---help---
The font used with the calculator. Default: NXWM_DEFAULT_FONTID
endif

11
apps/NxWidgets/README.txt

@ -0,0 +1,11 @@ @@ -0,0 +1,11 @@
apps/NxWidgets README File
==========================
The NxWidgets and NxWM libraries don't physically reside in the apps/ source
tree. The source code actually resides at the top level NxWidgets/
directory. This directory is just a kludge...it is here only support
configuration of NxWidgets and NxWM.
The only files that reside in this directory are (1) this README.txt file
and (2) the Kconfig file to support NxWidgets configuration. This is a
duplicate of the NxWidgets file that you can file at NxWidgets/Kconfig.

7
nuttx/ChangeLog

@ -3400,3 +3400,10 @@ @@ -3400,3 +3400,10 @@
* configs/shenzhou/src/up_lcd.c: Oops. Shenzhou LCD does not
have an SSD1289 controller. Its an ILI93xx. Ported the
STM3240G-EVAL ILI93xx driver to work on the Shenzhou board.
* configs/shenzhou/nxwm: Added an NxWM configuratino for the
Shenzhou board. This is untested on initial check-in. It will
be used to verify the Shenzhou LCD driver (and eventually the
touchscreen driver).
* configs/shenzhou/src/up_touchscreen.c: Add ADS7843E touchscreen
support for the Shenzhou board. The initial check-in is untested
and basically a clone of the the touchscreen support fro the SAM-3U.

1196
nuttx/configs/shenzhou/nxwm/defconfig

File diff suppressed because it is too large Load Diff

4
nuttx/configs/shenzhou/src/Makefile

@ -92,6 +92,10 @@ else @@ -92,6 +92,10 @@ else
CSRCS += up_lcd.c
endif
ifeq ($(CONFIG_INPUT_ADS7843E),y)
CSRCS += up_touchscreen.c
endif
COBJS = $(CSRCS:.c=$(OBJEXT))
SRCS = $(ASRCS) $(CSRCS)

292
nuttx/configs/shenzhou/src/up_touchscreen.c

@ -0,0 +1,292 @@ @@ -0,0 +1,292 @@
/************************************************************************************
* configs/shenzhou/src/up_touchscreen.c
* arch/arm/src/board/up_touchscreen.c
*
* 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
* 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 <stdbool.h>
#include <stdio.h>
#include <debug.h>
#include <assert.h>
#include <errno.h>
#include <nuttx/irq.h>
#include <nuttx/spi.h>
#include <nuttx/input/touchscreen.h>
#include <nuttx/input/ads7843e.h>
#include "stm32_internal.h"
#include "shenzhou_internal.h"
/****************************************************************************
* Pre-Processor Definitions
****************************************************************************/
/* Configuration ************************************************************/
#ifdef CONFIG_INPUT_ADS7843E
#ifndef CONFIG_INPUT
# error "Touchscreen support requires CONFIG_INPUT"
#endif
#ifndef CONFIG_STM32_SPI3
# error "Touchscreen support requires CONFIG_STM32_SPI3"
#endif
#ifndef CONFIG_ADS7843E_FREQUENCY
# define CONFIG_ADS7843E_FREQUENCY 500000
#endif
#ifndef CONFIG_ADS7843E_SPIDEV
# define CONFIG_ADS7843E_SPIDEV 3
#endif
#if CONFIG_ADS7843E_SPIDEV != 3
# error "CONFIG_ADS7843E_SPIDEV must be three"
#endif
#ifndef CONFIG_ADS7843E_DEVMINOR
# define CONFIG_ADS7843E_DEVMINOR 0
#endif
/****************************************************************************
* Private Types
****************************************************************************/
struct stm32_config_s
{
struct ads7843e_config_s dev;
xcpt_t handler;
};
/****************************************************************************
* Private Function Prototypes
****************************************************************************/
/* IRQ/GPIO access callbacks. These operations all hidden behind
* callbacks to isolate the ADS7843E driver from differences in GPIO
* interrupt handling by varying boards and MCUs. If possible,
* interrupts should be configured on both rising and falling edges
* so that contact and loss-of-contact events can be detected.
*
* attach - Attach the ADS7843E interrupt handler to the GPIO interrupt
* enable - Enable or disable the GPIO interrupt
* clear - Acknowledge/clear any pending GPIO interrupt
* pendown - Return the state of the pen down GPIO input
*/
static int tsc_attach(FAR struct ads7843e_config_s *state, xcpt_t isr);
static void tsc_enable(FAR struct ads7843e_config_s *state, bool enable);
static void tsc_clear(FAR struct ads7843e_config_s *state);
static bool tsc_busy(FAR struct ads7843e_config_s *state);
static bool tsc_pendown(FAR struct ads7843e_config_s *state);
/****************************************************************************
* Private Data
****************************************************************************/
/* A reference to a structure of this type must be passed to the ADS7843E
* driver. This structure provides information about the configuration
* of the ADS7843E and provides some board-specific hooks.
*
* Memory for this structure is provided by the caller. It is not copied
* by the driver and is presumed to persist while the driver is active. The
* memory must be writable because, under certain circumstances, the driver
* may modify frequency or X plate resistance values.
*/
static struct stm32_config_s g_tscinfo =
{
{
.frequency = CONFIG_ADS7843E_FREQUENCY,
.attach = tsc_attach,
.enable = tsc_enable,
.clear = tsc_clear,
.busy = tsc_busy,
.pendown = tsc_pendown,
},
.handler = NULL,
};
/****************************************************************************
* Private Functions
****************************************************************************/
/* IRQ/GPIO access callbacks. These operations all hidden behind
* callbacks to isolate the ADS7843E driver from differences in GPIO
* interrupt handling by varying boards and MCUs. If possible,
* interrupts should be configured on both rising and falling edges
* so that contact and loss-of-contact events can be detected.
*
* attach - Attach the ADS7843E interrupt handler to the GPIO interrupt
* enable - Enable or disable the GPIO interrupt
* clear - Acknowledge/clear any pending GPIO interrupt
* pendown - Return the state of the pen down GPIO input
*/
static int tsc_attach(FAR struct ads7843e_config_s *state, xcpt_t isr)
{
FAR struct stm32_config_s *priv = (FAR struct stm32_config_s *)state;
/* Just save the handler for use when the interrupt is enabled */
priv->handler = handler;
}
static void tsc_enable(FAR struct ads7843e_config_s *state, bool enable)
{
FAR struct stm32_config_s *priv = (FAR struct stm32_config_s *)state;
DEBUGASSERT(priv->handler);
/* Attach and enable, or detach and disable */
ivdbg("IRQ:%d enable:%d\n", STM32_TCS_IRQ, enable);
if (enable)
{
(void)stm32_gpiosetevent(GPIO_TP_INT, false, true, true,
priv->handler);
}
else
{
(void)stm32_gpiosetevent(GPIO_TP_INT, false, true, true, NULL);
}
}
static void tsc_clear(FAR struct ads7843e_config_s *state)
{
/* Does nothing */
}
static bool tsc_busy(FAR struct ads7843e_config_s *state)
{
/* Hmmm... The ADS7843E BUSY pin is not brought out on the Shenzhou board.
* We will most certainly have to revisit this.
*/
return false;
}
static bool tsc_pendown(FAR struct ads7843e_config_s *state)
{
/* REVISIT: This might need to be inverted */
bool pendown = stm32_gpioread(GPIO_TP_INT);
ivdbg("pendown:%d\n", pendown);
return pendown;
}
/****************************************************************************
* Public Functions
****************************************************************************/
/****************************************************************************
* Name: arch_tcinitialize
*
* Description:
* Each board that supports a touchscreen device must provide this function.
* This function is called by application-specific, setup logic to
* configure the touchscreen device. This function will register the driver
* as /dev/inputN where N is the minor device number.
*
* Input Parameters:
* minor - The input device minor number
*
* Returned Value:
* Zero is returned on success. Otherwise, a negated errno value is
* returned to indicate the nature of the failure.
*
****************************************************************************/
int arch_tcinitialize(int minor)
{
FAR struct spi_dev_s *dev;
int ret;
idbg("minor %d\n", minor);
DEBUGASSERT(minor == 0);
/* Configure and enable the ADS7843E interrupt pin as an input. */
(void)stm32_configgpio(GPIO_TP_INT);
/* Get an instance of the SPI interface */
dev = up_spiinitialize(CONFIG_ADS7843E_SPIDEV);
if (!dev)
{
idbg("Failed to initialize SPI bus %d\n", CONFIG_ADS7843E_SPIDEV);
return -ENODEV;
}
/* Initialize and register the SPI touschscreen device */
ret = ads7843e_register(dev, &g_tscinfo, CONFIG_ADS7843E_DEVMINOR);
if (ret < 0)
{
idbg("Failed to initialize SPI bus %d\n", CONFIG_ADS7843E_SPIDEV);
/* up_spiuninitialize(dev); */
return -ENODEV;
}
return OK;
}
/****************************************************************************
* Name: arch_tcuninitialize
*
* Description:
* Each board that supports a touchscreen device must provide this function.
* This function is called by application-specific, setup logic to
* uninitialize the touchscreen device.
*
* Input Parameters:
* None
*
* Returned Value:
* None.
*
****************************************************************************/
void arch_tcuninitialize(void)
{
/* No support for un-initializing the touchscreen ADS7843E device yet */
}
#endif /* CONFIG_INPUT_ADS7843E */
Loading…
Cancel
Save