Touchscreen Device Drivers
NuttX supports a two-part touchscreen driver architecture.
An “upper half”, generic driver that provides the common touchscreen interface to application level code, and
A “lower half”, platform-specific driver that implements the low-level touchscreen controls to implement the touchscreen functionality.
Files supporting the touchscreen controller (TSC) driver can be found in the following locations:
Interface Definition. The header files for NuttX touchscreen drivers reside in the
include/nuttx/include/input
directory. The interface between the touchscreen controller “upper half” and “lower half” drivers are not common, but vary from controller-to-controller. Because of this, each touchscreen driver has its own unique header file that describes the “upper half”/”lower half” interface in that directory. The application level interface to each touchscreen driver, on the other hand, is the same for each touchscreen driver and is describedinclude/nuttx/include/input/touchscreen.h
. The touchscreen driver uses a standard character driver framework but read operations return specially formatted data.“Upper Half” Driver. The controller-specific, “upper half” touchscreen drivers reside in the directory
drivers/input
.“Lower Half” Drivers. Platform-specific touchscreen drivers reside in either: (1) The
arch/<architecture>/src/<hardware>
directory for the processor architectures that have build in touchscreen controllers or (2) theboards/<arch>/<chip>/<board>/src/
directory for boards that use an external touchscreen controller chip.
Application Programming Interface
The first thing to be done in order to use the touchscreen driver from an application is to include the correct header filer. It contains the Application Programming Interface to the driver. To do so, include
#include <nuttx/input/touchscreen.h>
Touchscreen driver is registered as a POSIX character device file into
/dev
namespace. It is necessary to open the device to get a file descriptor
for further operations. This can be done with standard POSIX open()
call.
The driver is accessed through read
, write
, poll
and ioctl
interface, Following ioctl
commands are available:
-
TSIOC_GRAB
This command let the current handle has the device grabbed. When a handle grabs
a device it becomes sole recipient for all touchscreen events coming from the
device. An argument is an int32_t
variable to enable or disable the grab.