From d8a0e7fe7879504b4a92b7aaa9f088df284442da Mon Sep 17 00:00:00 2001 From: Tectu Date: Mon, 13 Aug 2012 08:05:52 +0200 Subject: [PATCH] added touchpadXXXXX driver template --- templates/readme.txt | 5 + templates/touchpadXXXXX/touchpad_lld.c | 154 ++++++++++++++++++ templates/touchpadXXXXX/touchpad_lld.mk | 6 + templates/touchpadXXXXX/touchpad_lld_config.h | 45 +++++ 4 files changed, 210 insertions(+) create mode 100644 templates/touchpadXXXXX/touchpad_lld.c create mode 100644 templates/touchpadXXXXX/touchpad_lld.mk create mode 100644 templates/touchpadXXXXX/touchpad_lld_config.h diff --git a/templates/readme.txt b/templates/readme.txt index a2c5b7ef..398cca3d 100644 --- a/templates/readme.txt +++ b/templates/readme.txt @@ -2,3 +2,8 @@ The following low level driver templates are available: GDISP: gdispXXXXX - Generalised GDISP driver + +TOUCHPAD: + touchpadXXXXX - Generalised TOUCHPAD driver + + diff --git a/templates/touchpadXXXXX/touchpad_lld.c b/templates/touchpadXXXXX/touchpad_lld.c new file mode 100644 index 00000000..8c6c21d7 --- /dev/null +++ b/templates/touchpadXXXXX/touchpad_lld.c @@ -0,0 +1,154 @@ +/* + ChibiOS-LCD-Driver - Copyright (C) 2012 + Joel Bodenmann aka Tectu + + This file is part of ChibiOS-LCD-Driver. + + ChibiOS-LCD-Driver is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS-LCD-Driver is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file touchpadXPT2046/touchpad_lld.c + * @brief Touchpad Driver subsystem low level driver source. + * + * @addtogroup TOUCHPAD + * @{ + */ + +#include "ch.h" +#include "hal.h" +#include "touchpad.h" + +#if HAL_USE_TOUCHPAD || defined(__DOXYGEN__) + +/*===========================================================================*/ +/* Driver local definitions. */ +/*===========================================================================*/ + +/* put needed macros for your interface/driver here. + * when using SPI, macros for setting and clearing CS line + */ +#define TP_CS_HIGH palSetPad(TP_CS_PORT, TP_CS) +#define TP_CS_LOW palClearPad(TP_CS_PORT, TP_CS) + +#ifdef UNUSED +#elif defined(__GNUC__) +# define UNUSED(x) UNUSED_ ## x __attribute__((unused)) +#elif defined(__LCLINT__) +# define UNUSED(x) /*@unused@*/ x +#else +# define UNUSED(x) x +#endif + +/*===========================================================================*/ +/* Driver exported variables. */ +/*===========================================================================*/ + +#if !defined(__DOXYGEN__) + TOUCHPADDriver Touchpad; +#endif + +/*===========================================================================*/ +/* Driver local variables. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver local functions. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver interrupt handlers. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver exported functions. */ +/*===========================================================================*/ + +/* ---- Required Routines ---- */ + +/** + * @brief Low level Touchpad driver initialization. + * + * @notapi + */ +void tp_lld_init(TOUCHPADDriver *tp) { + /* do communicate with the touchpad controller + * to do any inizialisation (mostly spiStart()) + */ +} + +/** + * @brief Reads out the X direction. + * + * @notapi + */ +uint16_t tp_lld_read_x(void) { + uint16_t x; + + /* do communicate with the touchpad controller + * to receive the X-Coordinate + */ + x = 0; + + return x; +} + +/* + * @brief Reads out the Y direction. + * + * @notapi + */ +uint16_t tp_lld_read_y(void) { + uint16_t y; + + /* do communicate with the touchpad controller + * to receive the Y-Coordinate + */ + y = 0; + + return y; +} + +/* ---- Optional Routines ---- */ +#if TOUCHPAD_HAS_IRQ || defined(__DOXYGEN__) + /* + * @brief for checking if touchpad is pressed or not. + * + * @return 1 if pressed / 0 if not pressed + * + * @notapi + */ + uint8_t tp_lld_irq(void) { + /* do return PEN IRQ state if your + * touchpad controller does have any + */ + return 0; + } +#endif + +#if TOUCHPAD_HAS_PRESSURE || defined(__DOXYGEN__) + /* + * @brief Reads out the Z direction / pressure. + * + * @notapi + */ + uint16_t tp_lld_read_z(void) { + /* return the pressure */ + return 0; + } +#endif + +#endif /* HAL_USE_TOUCHPAD */ +/** @} */ + diff --git a/templates/touchpadXXXXX/touchpad_lld.mk b/templates/touchpadXXXXX/touchpad_lld.mk new file mode 100644 index 00000000..bbc7b527 --- /dev/null +++ b/templates/touchpadXXXXX/touchpad_lld.mk @@ -0,0 +1,6 @@ +# List the required driver. +LCDSRC += $(LCDLIB)/drivers/touchpad/touchpadYOURDEVICE/touchpad_lld.c + +# Required include directories +LCDINC += $(LCDLIB)/drivers/touchpad/touchpadYOURDEVICE + diff --git a/templates/touchpadXXXXX/touchpad_lld_config.h b/templates/touchpadXXXXX/touchpad_lld_config.h new file mode 100644 index 00000000..95db9ec8 --- /dev/null +++ b/templates/touchpadXXXXX/touchpad_lld_config.h @@ -0,0 +1,45 @@ +/* + ChibiOS-LCD-Driver - Copyright (C) 2012 + Joel Bodenmann aka Tectu + + This file is part of ChibiOS-LCD-Driver. + + ChibiOS-LCD-Driver is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS-LCD-Driver is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file touchpadXPT2046/touchpad_lld_config.h + * @brief Touchppad Driver subsystem low level driver. + * + * @addtogroup TOUCHPAD + * @{ + */ + +#ifndef _TOUCHPAD_LLD_CONFIG_H +#define _TOUCHPAD_LLD_CONFIG_H + +#if HAL_USE_TOUCHPAD || defined(__DOXYGEN__) + +/*===========================================================================*/ +/* Driver hardware support. */ +/*===========================================================================*/ + +#define TOUCHPAD_HAS_IRQ TRUE +#define TOUCHPAD_HAS_PRESSURE TRUE + +#endif /* HAL_USE_TOUCHPAD */ + +#endif /* _TOUCHPAD_LLD_CONFIG_H */ +/** @} */ +