diff --git a/drivers/touchscreen/ADS7843/readme.txt b/drivers/touchscreen/ADS7843/readme.txt deleted file mode 100644 index 85f40da5..00000000 --- a/drivers/touchscreen/ADS7843/readme.txt +++ /dev/null @@ -1,8 +0,0 @@ -To use this driver: - -1. Add in your halconf.h: - a) #define GFX_USE_TOUCHSCREEN TRUE - -2. To your makefile add the following lines: - include $(GFXLIB)/drivers/touchscreen/ADS7843/touchscreen_lld.mk - diff --git a/drivers/touchscreen/ADS7843/touchscreen_lld.c b/drivers/touchscreen/ADS7843/touchscreen_lld.c deleted file mode 100644 index 9b5d4aa0..00000000 --- a/drivers/touchscreen/ADS7843/touchscreen_lld.c +++ /dev/null @@ -1,241 +0,0 @@ -/* - ChibiOS/GFX - Copyright (C) 2012 - Joel Bodenmann aka Tectu - - This file is part of ChibiOS/GFX. - - ChibiOS/GFX 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/GFX 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 drivers/touchscreen/ADS7843/touchscreen_lld.c - * @brief Touchscreen Driver subsystem low level driver source. - * - * @addtogroup TOUCHSCREEN - * @{ - */ - -#include "ch.h" -#include "hal.h" -#include "touchscreen.h" - -#if GFX_USE_TOUCHSCREEN /*|| defined(__DOXYGEN__)*/ - -/*===========================================================================*/ -/* Driver local definitions. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Driver exported variables. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Driver local variables. */ -/*===========================================================================*/ -#if !defined(__DOXYGEN__) - /* Local copy of the current touchscreen driver */ - static const TouchscreenDriver *tsDriver; - - static uint16_t sampleBuf[7]; -#endif - -/*===========================================================================*/ -/* Driver local functions. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Driver interrupt handlers. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Driver exported functions. */ -/*===========================================================================*/ - -/* ---- Required Routines ---- */ - -/** - * @brief Low level touchscreen driver initialization. - * - * @param[in] ts The touchscreen driver - * - * @notapi - */ -void ts_lld_init(const TouchscreenDriver *ts) { - tsDriver = ts; - - if(tsDriver->direct_init) - spiStart(tsDriver->spip, tsDriver->spicfg); -} - - -/** - * @brief Reads a conversion from the touchscreen - * - * @param[in] cmd The command bits to send to the touchscreen - * - * @return The read value 12-bit right-justified - * - * @note This function only reads data, it is assumed that the pins are - * configured properly and the bus has been acquired beforehand - * - * @notapi - */ -uint16_t ts_lld_read_value(uint8_t cmd) { - static uint8_t txbuf[3] = {0}; - static uint8_t rxbuf[3] = {0}; - uint16_t ret; - - txbuf[0] = cmd; - - spiExchange(tsDriver->spip, 3, txbuf, rxbuf); - - ret = (rxbuf[1] << 5) | (rxbuf[2] >> 3); - - return ret; -} - -/** - * @brief 7-point median filtering code for touchscreen samples - * - * @note This is an internally used routine only. - * - * @notapi - */ -static void ts_lld_filter(void) { - uint16_t temp; - int i,j; - - for(i = 0; i < 4; i++) { - for(j = i; j < 7; j++) { - if(sampleBuf[i] > sampleBuf[j]) { - /* Swap the values */ - temp = sampleBuf[i]; - sampleBuf[i] = sampleBuf[j]; - sampleBuf[j] = temp; - } - } - } -} - -/** - * @brief Reads out the X direction. - * - * @note The samples are median filtered for greater noise reduction - * - * @notapi - */ -uint16_t ts_lld_read_x(void) { - int i; - -#if defined(SPI_USE_MUTUAL_EXCLUSION) - spiAcquireBus(tsDriver->spip); -#endif - - TOUCHSCREEN_SPI_PROLOGUE(); - palClearPad(tsDriver->spicfg->ssport, tsDriver->spicfg->sspad); - - /* Discard the first conversion - very noisy and keep the ADC on hereafter - * till we are done with the sampling. Note that PENIRQ is disabled. - */ - ts_lld_read_value(0xD1); - - for(i = 0; i < 7; i++) { - sampleBuf[i] = ts_lld_read_value(0xD1); - } - - /* Switch on PENIRQ once again - perform a dummy read */ - ts_lld_read_value(0xD0); - - palSetPad(tsDriver->spicfg->ssport, tsDriver->spicfg->sspad); - TOUCHSCREEN_SPI_EPILOGUE(); - -#if defined(SPI_USE_MUTUAL_EXCLUSION) - spiReleaseBus(tsDriver->spip); -#endif - - /* Find the median - use selection sort */ - ts_lld_filter(); - - return sampleBuf[3]; -} - -/* - * @brief Reads out the Y direction. - * - * @notapi - */ -uint16_t ts_lld_read_y(void) { - int i; - -#if defined(SPI_USE_MUTUAL_EXCLUSION) - spiAcquireBus(tsDriver->spip); -#endif - - TOUCHSCREEN_SPI_PROLOGUE(); - palClearPad(tsDriver->spicfg->ssport, tsDriver->spicfg->sspad); - - /* Discard the first conversion - very noisy and keep the ADC on hereafter - * till we are done with the sampling. Note that PENIRQ is disabled. - */ - ts_lld_read_value(0x91); - - for(i = 0; i < 7; i++) { - sampleBuf[i] = ts_lld_read_value(0x91); - } - - /* Switch on PENIRQ once again - perform a dummy read */ - ts_lld_read_value(0x90); - - palSetPad(tsDriver->spicfg->ssport, tsDriver->spicfg->sspad); - TOUCHSCREEN_SPI_EPILOGUE(); - -#ifdef SPI_USE_MUTUAL_EXCLUSION - spiReleaseBus(tsDriver->spip); -#endif - - /* Find the median - use selection sort */ - ts_lld_filter(); - - return sampleBuf[3]; -} - -/* ---- Optional Routines ---- */ -#if TOUCHSCREEN_HAS_PRESSED || defined(__DOXYGEN__) - /* - * @brief for checking if touchscreen is pressed or not. - * - * @return 1 if pressed / 0 if not pressed - * - * @notapi - */ - uint8_t ts_lld_pressed(void) { - return (!palReadPad(tsDriver->tsIRQPort, tsDriver->tsIRQPin)); - } -#endif - -#if TOUCHSCREEN_HAS_PRESSURE || defined(__DOXYGEN__) - /* - * @brief Reads out the Z direction / pressure. - * - * @notapi - */ - uint16_t ts_lld_read_z(void) { - /* ToDo */ - return 42; - } -#endif - -#endif /* GFX_USE_TOUCHSCREEN */ -/** @} */ - diff --git a/drivers/touchscreen/ADS7843/touchscreen_lld.mk b/drivers/touchscreen/ADS7843/touchscreen_lld.mk deleted file mode 100644 index c58f6647..00000000 --- a/drivers/touchscreen/ADS7843/touchscreen_lld.mk +++ /dev/null @@ -1,6 +0,0 @@ -# List the required driver. -GFXSRC += $(GFXLIB)/drivers/touchscreen/ADS7843/touchscreen_lld.c - -# Required include directories -GFXINC += $(GFXLIB)/drivers/touchscreen/ADS7843 - diff --git a/drivers/touchscreen/ADS7843/touchscreen_lld_config.h b/drivers/touchscreen/ADS7843/touchscreen_lld_config.h deleted file mode 100644 index 056c8d7a..00000000 --- a/drivers/touchscreen/ADS7843/touchscreen_lld_config.h +++ /dev/null @@ -1,84 +0,0 @@ -/* - ChibiOS/GFX - Copyright (C) 2012 - Joel Bodenmann aka Tectu - - This file is part of ChibiOS/GFX. - - ChibiOS/GFX 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/GFX 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 drivers/touchscreen/ADS7843/touchscreen_lld_config.h - * @brief Touchscreen Driver subsystem low level driver. - * - * @addtogroup TOUCHSCREEN - * @{ - */ - -#ifndef TOUCHSCREEN_LLD_CONFIG_H -#define TOUCHSCREEN_LLD_CONFIG_H - -#if GFX_USE_TOUCHSCREEN /*|| defined(__DOXYGEN__)*/ - -/*===========================================================================*/ -/* Driver hardware support. */ -/*===========================================================================*/ - -#define TOUCHSCREEN_HAS_PRESSED TRUE -#define TOUCHSCREEN_HAS_PRESSURE FALSE - -struct TouchscreenDriver { - /* - * @brief Pointer to SPI driver. - * @note SPI driver must be enabled in mcuconf.h and halconf.h - */ - SPIDriver *spip; - - /* - * @brief Pointer to the SPI configuration structure. - * @note The lowest possible speed ~ 1-2MHz is to be used, otherwise - * will result in a lot of noise - */ - const SPIConfig *spicfg; - - /* - * @brief Touchscreen controller TPIRQ pin GPIO port - */ - ioportid_t tsIRQPort; - - /* - * @brief Touchscreen controller TPIRQ GPIO pin - * @note The interface is polled as of now, interrupt support is - * to be implemented in the future. - */ - ioportmask_t tsIRQPin; - - /* - * @brief Initialize the SPI with the configuration struct given or not - * If TRUE, spiStart is called by the init, otherwise not - * @note This is provided in such a case when SPI port is being shared - * across multiple peripherals, so not to disturb the SPI bus. - * You can use TOUCHSCREEN_SPI_PROLOGUE() and TOUCHSCREEN_SPI_EPILOGUE() - * macros to change the SPI configuration or speed before and - * after using the touchpad. An example case would be sharing the - * bus with a fast flash memory chip. - */ - bool_t direct_init; -}; - -#endif /* GFX_USE_TOUCHSCREEN */ - -#endif /* TOUCHSCREEN_LLD_CONFIG_H */ -/** @} */ - diff --git a/drivers/touchscreen/MCU/readme.txt b/drivers/touchscreen/MCU/readme.txt deleted file mode 100644 index 105e7462..00000000 --- a/drivers/touchscreen/MCU/readme.txt +++ /dev/null @@ -1,8 +0,0 @@ -To use this driver: - -1. Add in your halconf.h: - a) #define GFX_USE_TOUCHSCREEN TRUE - -2. To your makefile add the following lines: - include $(GFXLIB)/drivers/touchscreen/MCU/touchscreen_lld.mk - diff --git a/drivers/touchscreen/MCU/touchscreen_lld.c b/drivers/touchscreen/MCU/touchscreen_lld.c deleted file mode 100644 index d34228a6..00000000 --- a/drivers/touchscreen/MCU/touchscreen_lld.c +++ /dev/null @@ -1,172 +0,0 @@ -/* - ChibiOS/GFX - Copyright (C) 2012 - Joel Bodenmann aka Tectu - - This file is part of ChibiOS/GFX. - - ChibiOS/GFX 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/GFX 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 drivers/touchscreen/MCU/touchscreen_lld.c - * @brief Touchscreen Driver subsystem low level driver source. - * - * @addtogroup TOUCHSCREEN - * @{ - */ - -#include "ch.h" -#include "hal.h" -#include "touchscreen.h" - -#if GFX_USE_TOUCHSCREEN /*|| defined(__DOXYGEN__)*/ - -#define ADC_NUM_CHANNELS 2 -#define ADC_BUF_DEPTH 1 - -/*===========================================================================*/ -/* Driver local variables. */ -/*===========================================================================*/ - -static const TouchscreenDriver *ts; - -static const ADCConversionGroup adc_y_config = { - FALSE, - ADC_NUM_CHANNELS, - NULL, - NULL, - 0, 0, - 0, 0, - ADC_SQR1_NUM_CH(ADC_NUM_CHANNELS), - 0, - ADC_SQR3_SQ2_N(ADC_CHANNEL_IN12) | ADC_SQR3_SQ1_N(ADC_CHANNEL_IN13) -}; - -static const ADCConversionGroup adc_x_config = { - FALSE, - ADC_NUM_CHANNELS, - NULL, - NULL, - 0, 0, - 0, 0, - ADC_SQR1_NUM_CH(ADC_NUM_CHANNELS), - 0, - ADC_SQR3_SQ2_N(ADC_CHANNEL_IN10) | ADC_SQR3_SQ1_N(ADC_CHANNEL_IN11) -}; - -/** - * @brief Low level Touchscreen driver initialization. - * - * @param[in] ts The touchscreen driver struct - * - * @notapi - */ -void ts_lld_init(const TouchscreenDriver *ts_init) { - ts = ts_init; - - adcStart(ts->adc_driver, NULL); -} - -/** - * @brief 7-point median filtering code for touchscreen samples - * - * @note This is an internally used routine only. - * - * @notapi - */ -static void ts_lld_filter(void) { - - return 0; -} - -/** - * @brief Reads out the X direction. - * - * @note The samples are median filtered for greater noise reduction - * - * @notapi - */ -uint16_t ts_lld_read_x(void) { - uint16_t val1, val2; - adcsample_t samples[ADC_NUM_CHANNELS * ADC_BUF_DEPTH]; - - palSetPadMode(ts->yd_port, ts->yd_pin, PAL_MODE_INPUT_ANALOG); - palSetPadMode(ts->yu_port, ts->yu_pin, PAL_MODE_INPUT_ANALOG); - palSetPadMode(ts->xl_port, ts->xl_pin, PAL_MODE_OUTPUT_PUSHPULL); - palSetPadMode(ts->xr_port, ts->xr_pin, PAL_MODE_OUTPUT_PUSHPULL); - - palSetPad(ts->xl_port, ts->xl_pin); - palClearPad(ts->xr_port, ts->xr_pin); - chThdSleepMilliseconds(1); - adcConvert(ts->adc_driver, &adc_x_config, samples, ADC_BUF_DEPTH); - val1 = ((samples[0] + samples[1])/2); - - palClearPad(ts->xl_port, ts->xl_pin); - palSetPad(ts->xr_port, ts->xr_pin); - chThdSleepMilliseconds(1); - adcConvert(ts->adc_driver, &adc_x_config, samples, ADC_BUF_DEPTH); - val2 = ((samples[0] + samples[1])/2); - - return ((val1+((1<<12)-val2))/4); -} - -/** - * @brief Reads out the Y direction. - * - * @notapi - */ -uint16_t ts_lld_read_y(void) { - uint16_t val1, val2; - adcsample_t samples[ADC_NUM_CHANNELS * ADC_BUF_DEPTH]; - - palSetPadMode(ts->xl_port, ts->xl_pin, PAL_MODE_INPUT_ANALOG); - palSetPadMode(ts->xr_port, ts->xr_pin, PAL_MODE_INPUT_ANALOG); - palSetPadMode(ts->yd_port, ts->yd_pin, PAL_MODE_OUTPUT_PUSHPULL); - palSetPadMode(ts->yu_port, ts->yu_pin, PAL_MODE_OUTPUT_PUSHPULL); - - palSetPad(ts->yu_port, ts->yu_pin); - palClearPad(ts->yd_port, ts->yd_pin); - chThdSleepMilliseconds(1); - adcConvert(ts->adc_driver, &adc_y_config, samples, ADC_BUF_DEPTH); - val1 = ((samples[0] + samples[1])/2); - - palClearPad(ts->yu_port, ts->yu_pin); - palSetPad(ts->yd_port, ts->yd_pin); - chThdSleepMilliseconds(1); - adcConvert(ts->adc_driver, &adc_y_config, samples, ADC_BUF_DEPTH); - val2 = ((samples[0] + samples[1])/2); - - return ((val1+((1<<12)-val2))/4); -} - -/* - * @brief Checks if touchscreen is pressed or not. - * - * @return 1 if pressed, 0 otherwise - * - * @notapi - */ -uint8_t ts_lld_pressed(void) { - palSetPadMode(ts->yd_port, ts->yd_pin, PAL_MODE_INPUT_PULLDOWN); - palSetPadMode(ts->yu_port, ts->yu_pin, PAL_MODE_INPUT); - palSetPadMode(ts->xl_port, ts->xl_pin, PAL_MODE_INPUT); - palSetPadMode(ts->xr_port, ts->xr_pin, PAL_MODE_OUTPUT_PUSHPULL); - palSetPad(ts->xr_port, ts->xr_pin); - - return palReadPad(ts->yd_port, ts->yd_pin); -} - -#endif /* GFX_USE_TOUCHSCREEN */ -/** @} */ - diff --git a/drivers/touchscreen/MCU/touchscreen_lld.mk b/drivers/touchscreen/MCU/touchscreen_lld.mk deleted file mode 100644 index 8d594c2c..00000000 --- a/drivers/touchscreen/MCU/touchscreen_lld.mk +++ /dev/null @@ -1,6 +0,0 @@ -# List the required driver. -GFXSRC += $(GFXLIB)/drivers/touchscreen/MCU/touchscreen_lld.c - -# Required include directories -GFXINC += $(GFXLIB)/drivers/touchscreen/MCU - diff --git a/drivers/touchscreen/MCU/touchscreen_lld_config.h b/drivers/touchscreen/MCU/touchscreen_lld_config.h deleted file mode 100644 index 800518ae..00000000 --- a/drivers/touchscreen/MCU/touchscreen_lld_config.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - ChibiOS/GFX - Copyright (C) 2012 - Joel Bodenmann aka Tectu - - This file is part of ChibiOS/GFX. - - ChibiOS/GFX 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/GFX 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 drivers/touchscreen/MCU/touchscreen_lld_config.h - * @brief Touchscreen Driver subsystem low level driver. - * - * @addtogroup TOUCHSCREEN - * @{ - */ - -#ifndef TOUCHSCREEN_LLD_CONFIG_H -#define TOUCHSCREEN_LLD_CONFIG_H - -#if GFX_USE_TOUCHSCREEN /*|| defined(__DOXYGEN__)*/ - -/*===========================================================================*/ -/* Driver hardware support. */ -/*===========================================================================*/ - -#define TOUCHSCREEN_HAS_PRESSED TRUE -#define TOUCHSCREEN_HAS_PRESSURE FALSE - -/** - * @brief The touchscreen driver struct - * @details Pointer to this will be passed to tsInit() - */ -struct TouchscreenDriver { - ADCDriver *adc_driver; - ioportid_t yd_port; - ioportmask_t yd_pin; - ioportid_t yu_port; - ioportmask_t yu_pin; - ioportid_t xl_port; - ioportmask_t xl_pin; - ioportid_t xr_port; - ioportmask_t xr_pin; -}; - -#endif /* GFX_USE_TOUCHSCREEN */ - -#endif /* TOUCHSCREEN_LLD_CONFIG_H */ -/** @} */ - diff --git a/drivers/touchscreen/XPT2046/readme.txt b/drivers/touchscreen/XPT2046/readme.txt deleted file mode 100644 index a81caf67..00000000 --- a/drivers/touchscreen/XPT2046/readme.txt +++ /dev/null @@ -1,8 +0,0 @@ -To use this driver: - -1. Add in your halconf.h: - a) #define GFX_USE_TOUCHSCREEN TRUE - -2. To your makefile add the following lines: - include $(GFXLIB)/drivers/touchscreen/XPT2046/touchscreen_lld.mk - diff --git a/drivers/touchscreen/XPT2046/touchscreen_lld.c b/drivers/touchscreen/XPT2046/touchscreen_lld.c deleted file mode 100644 index 2d3689d4..00000000 --- a/drivers/touchscreen/XPT2046/touchscreen_lld.c +++ /dev/null @@ -1,241 +0,0 @@ -/* - ChibiOS/GFX - Copyright (C) 2012 - Joel Bodenmann aka Tectu - - This file is part of ChibiOS/GFX. - - ChibiOS/GFX 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/GFX 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 drivers/touchscreen/XPT2046/touchscreen_lld.c - * @brief Touchscreen Driver subsystem low level driver source. - * - * @addtogroup TOUCHSCREEN - * @{ - */ - -#include "ch.h" -#include "hal.h" -#include "touchscreen.h" - -#if GFX_USE_TOUCHSCREEN /*|| defined(__DOXYGEN__)*/ - -/*===========================================================================*/ -/* Driver local definitions. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Driver exported variables. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Driver local variables. */ -/*===========================================================================*/ -#if !defined(__DOXYGEN__) - /* Local copy of the current touchpad driver */ - static const TouchscreenDriver *tsDriver; - - static uint16_t sampleBuf[7]; -#endif - -/*===========================================================================*/ -/* Driver local functions. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Driver interrupt handlers. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Driver exported functions. */ -/*===========================================================================*/ - -/* ---- Required Routines ---- */ - -/** - * @brief Low level Touchscreen driver initialization. - * - * @param[in] ts The touchscreen driver struct - * - * @notapi - */ -void ts_lld_init(const TouchscreenDriver *ts) { - tsDriver = ts; - - if(tsDriver->direct_init) - spiStart(tsDriver->spip, tsDriver->spicfg); -} - - -/** - * @brief Reads a conversion from the touchscreen - * - * @param[in] cmd The command bits to send to the touchscreen - * - * @return The read value 12-bit right-justified - * - * @note This function only reads data, it is assumed that the pins are - * configured properly and the bus has been acquired beforehand - * - * @notapi - */ -uint16_t ts_lld_read_value(uint8_t cmd) { - static uint8_t txbuf[3] = {0}; - static uint8_t rxbuf[3] = {0}; - uint16_t ret; - - txbuf[0] = cmd; - - spiExchange(tsDriver->spip, 3, txbuf, rxbuf); - - ret = (rxbuf[1] << 5) | (rxbuf[2] >> 3); - - return ret; -} - -/** - * @brief 7-point median filtering code for touchscreen samples - * - * @note This is an internally used routine only. - * - * @notapi - */ -static void ts_lld_filter(void) { - uint16_t temp; - int i,j; - - for(i = 0; i < 4; i++) { - for(j = i; j < 7; j++) { - if(sampleBuf[i] > sampleBuf[j]) { - /* Swap the values */ - temp = sampleBuf[i]; - sampleBuf[i] = sampleBuf[j]; - sampleBuf[j] = temp; - } - } - } -} - -/** - * @brief Reads out the X direction. - * - * @note The samples are median filtered for greater noise reduction - * - * @notapi - */ -uint16_t ts_lld_read_x(void) { - int i; - -#if defined(SPI_USE_MUTUAL_EXCLUSION) - spiAcquireBus(tsDriver->spip); -#endif - - TOUCHSCREEN_SPI_PROLOGUE(); - palClearPad(tsDriver->spicfg->ssport, tsDriver->spicfg->sspad); - - /* Discard the first conversion - very noisy and keep the ADC on hereafter - * till we are done with the sampling. Note that PENIRQ is disabled. - */ - ts_lld_read_value(0xD1); - - for(i = 0; i < 7; i++) { - sampleBuf[i] = ts_lld_read_value(0xD1); - } - - /* Switch on PENIRQ once again - perform a dummy read */ - ts_lld_read_value(0xD0); - - palSetPad(tsDriver->spicfg->ssport, tsDriver->spicfg->sspad); - TOUCHSCREEN_SPI_EPILOGUE(); - -#if defined(SPI_USE_MUTUAL_EXCLUSION) - spiReleaseBus(tsDriver->spip); -#endif - - /* Find the median - use selection sort */ - ts_lld_filter(); - - return sampleBuf[3]; -} - -/* - * @brief Reads out the Y direction. - * - * @notapi - */ -uint16_t ts_lld_read_y(void) { - int i; - -#if defined(SPI_USE_MUTUAL_EXCLUSION) - spiAcquireBus(tsDriver->spip); -#endif - - TOUCHSCREEN_SPI_PROLOGUE(); - palClearPad(tsDriver->spicfg->ssport, tsDriver->spicfg->sspad); - - /* Discard the first conversion - very noisy and keep the ADC on hereafter - * till we are done with the sampling. Note that PENIRQ is disabled. - */ - ts_lld_read_value(0x91); - - for(i = 0; i < 7; i++) { - sampleBuf[i] = ts_lld_read_value(0x91); - } - - /* Switch on PENIRQ once again - perform a dummy read */ - ts_lld_read_value(0x90); - - palSetPad(tsDriver->spicfg->ssport, tsDriver->spicfg->sspad); - TOUCHSCREEN_SPI_EPILOGUE(); - -#ifdef SPI_USE_MUTUAL_EXCLUSION - spiReleaseBus(tsDriver->spip); -#endif - - /* Find the median - use selection sort */ - ts_lld_filter(); - - return sampleBuf[3]; -} - -/* ---- Optional Routines ---- */ -#if TOUCHSCREEN_HAS_PRESSED || defined(__DOXYGEN__) - /* - * @brief for checking if touchscreen is pressed or not. - * - * @return 1 if pressed / 0 if not pressed - * - * @notapi - */ - uint8_t ts_lld_pressed(void) { - return (!palReadPad(tsDriver->tsIRQPort, tsDriver->tsIRQPin)); - } -#endif - -#if TOUCHSCREEN_HAS_PRESSURE || defined(__DOXYGEN__) - /* - * @brief Reads out the Z direction / pressure. - * - * @notapi - */ - uint16_t ts_lld_read_z(void) { - /* ToDo */ - return 42; - } -#endif - -#endif /* GFX_USE_TOUCHSCREEN */ -/** @} */ - diff --git a/drivers/touchscreen/XPT2046/touchscreen_lld.mk b/drivers/touchscreen/XPT2046/touchscreen_lld.mk deleted file mode 100644 index 39d5caf9..00000000 --- a/drivers/touchscreen/XPT2046/touchscreen_lld.mk +++ /dev/null @@ -1,6 +0,0 @@ -# List the required driver. -GFXSRC += $(GFXLIB)/drivers/touchscreen/XPT2046/touchscreen_lld.c - -# Required include directories -GFXINC += $(GFXLIB)/drivers/touchscreen/XPT2046 - diff --git a/drivers/touchscreen/XPT2046/touchscreen_lld_config.h b/drivers/touchscreen/XPT2046/touchscreen_lld_config.h deleted file mode 100644 index 3a030b5d..00000000 --- a/drivers/touchscreen/XPT2046/touchscreen_lld_config.h +++ /dev/null @@ -1,84 +0,0 @@ -/* - ChibiOS/GFX - Copyright (C) 2012 - Joel Bodenmann aka Tectu - - This file is part of ChibiOS/GFX. - - ChibiOS/GFX 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/GFX 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 drivers/touchscreen/XPT2046/touchscreen_lld_config.h - * @brief Touchscreen Driver subsystem low level driver. - * - * @addtogroup TOUCHSCREEN - * @{ - */ - -#ifndef TOUCHSCREEN_LLD_CONFIG_H -#define TOUCHSCREEN_LLD_CONFIG_H - -#if GFX_USE_TOUCHSCREEN /*|| defined(__DOXYGEN__)*/ - -/*===========================================================================*/ -/* Driver hardware support. */ -/*===========================================================================*/ - -#define TOUCHSCREEN_HAS_PRESSED TRUE -#define TOUCHSCREEN_HAS_PRESSURE TRUE - -struct TouchscreenDriver { - /* - * @brief Pointer to SPI driver. - * @note SPI driver must be enabled in mcuconf.h and halconf.h - */ - SPIDriver *spip; - - /* - * @brief Pointer to the SPI configuration structure. - * @note The lowest possible speed ~ 1-2MHz is to be used, otherwise - * will result in a lot of noise - */ - const SPIConfig *spicfg; - - /* - * @brief Touchscreen controller TPIRQ pin GPIO port - */ - ioportid_t tsIRQPort; - - /* - * @brief Touchscreen controller TPIRQ GPIO pin - * @note The interface is polled as of now, interrupt support is - * to be implemented in the future. - */ - ioportmask_t tsIRQPin; - - /* - * @brief Initialize the SPI with the configuration struct given or not - * If TRUE, spiStart is called by the init, otherwise not - * @note This is provided in such a case when SPI port is being shared - * across multiple peripherals, so not to disturb the SPI bus. - * You can use TOUCHSCREEN_SPI_PROLOGUE() and TOUCHSCREEN_SPI_EPILOGUE() - * macros to change the SPI configuration or speed before and - * after using the touchpad. An example case would be sharing the - * bus with a fast flash memory chip. - */ - bool_t direct_init; -}; - -#endif /* GFX_USE_TOUCHSCREEN */ - -#endif /* TOUCHSCREEN_LLD_CONFIG_H */ -/** @} */ -