65 changed files with 3591 additions and 885 deletions
@ -1,5 +0,0 @@ |
|||
# List the required driver.
|
|||
GFXSRC += $(GFXLIB)/drivers/gdisp/Win32/gdisp_lld.c |
|||
|
|||
# Required include directories
|
|||
GFXINC += $(GFXLIB)/drivers/gdisp/Win32 |
@ -0,0 +1,5 @@ |
|||
# List the required driver.
|
|||
GFXSRC += $(GFXLIB)/drivers/ginput/toggle/Pal/ginput_lld_toggle.c |
|||
|
|||
# Required include directories
|
|||
GFXINC += $(GFXLIB)/drivers/ginput/toggle/Pal |
@ -0,0 +1,62 @@ |
|||
/*
|
|||
ChibiOS/RT - Copyright (C) 2012 |
|||
Joel Bodenmann aka Tectu <joel@unormal.org> |
|||
|
|||
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 <http://www.gnu.org/licenses/>.
|
|||
*/ |
|||
|
|||
/**
|
|||
* @file drivers/ginput/togglePal/ginput_lld_toggle.c |
|||
* @brief GINPUT Toggle low level driver source for the ChibiOS PAL hardware. |
|||
* |
|||
* @addtogroup GINPUT_TOGGLE |
|||
* @{ |
|||
*/ |
|||
|
|||
#include "ch.h" |
|||
#include "hal.h" |
|||
|
|||
#if (GFX_USE_GINPUT && GINPUT_NEED_TOGGLE) /*|| defined(__DOXYGEN__)*/ |
|||
|
|||
// Declare the static members in the following include file
|
|||
#define GINPUT_TOGGLE_DECLARE_CONFIG |
|||
|
|||
#include "lld/ginput/toggle.h" |
|||
|
|||
/**
|
|||
* @brief Initialise the port. |
|||
* |
|||
* @param[in] ptc A pointer to one of the entries in GInputToggleConfigTable |
|||
* |
|||
* @notapi |
|||
*/ |
|||
void ginput_lld_toggle_init(const GToggleConfig *ptc) { |
|||
palSetGroupMode(((IOBus *)ptc->id)->portid, ptc->mask, 0, ptc->mode); |
|||
} |
|||
|
|||
/**
|
|||
* @brief Get the bits from the port. |
|||
* |
|||
* @param[in] ptc A pointer to one of the entries in GInputToggleConfigTable |
|||
* |
|||
* @notapi |
|||
*/ |
|||
unsigned ginput_lld_toggle_getbits(const GToggleConfig *ptc) { |
|||
return palReadBus((IOBus *)ptc->id); |
|||
} |
|||
|
|||
#endif /* GFX_USE_GINPUT && GINPUT_NEED_TOGGLE */ |
|||
/** @} */ |
@ -0,0 +1,65 @@ |
|||
/*
|
|||
ChibiOS/RT - Copyright (C) 2012 |
|||
Joel Bodenmann aka Tectu <joel@unormal.org> |
|||
|
|||
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 <http://www.gnu.org/licenses/>.
|
|||
*/ |
|||
|
|||
/**
|
|||
* @file drivers/ginput/togglePal/ginput_lld_toggle_board_example.h |
|||
* @brief GINPUT Toggle low level driver source for the ChibiOS PAL hardware on the example board. |
|||
* |
|||
* @addtogroup GINPUT_TOGGLE |
|||
* @{ |
|||
*/ |
|||
|
|||
#ifndef _GDISP_LLD_TOGGLE_BOARD_H |
|||
#define _GDISP_LLD_TOGGLE_BOARD_H |
|||
|
|||
#ifndef _GINPUT_LLD_TOGGLE_CONFIG_H |
|||
// Visible in ginput.h
|
|||
|
|||
#define GINPUT_TOGGLE_SW1 0 // Switch 1
|
|||
#define GINPUT_TOGGLE_SW2 1 // Switch 2
|
|||
#define GINPUT_TOGGLE_UP 2 // Joystick Up
|
|||
#define GINPUT_TOGGLE_DOWN 3 // Joystick Down
|
|||
#define GINPUT_TOGGLE_LEFT 4 // Joystick Left
|
|||
#define GINPUT_TOGGLE_RIGHT 5 // Joystick Right
|
|||
#define GINPUT_TOGGLE_CENTER 6 // Joystick Center
|
|||
|
|||
#elif !defined(GINPUT_TOGGLE_DECLARE_CONFIG) |
|||
// Visible in ginput_lld.h
|
|||
|
|||
#define GINPUT_TOGGLE_NUM_PORTS 7 // The total number of toggle inputs
|
|||
|
|||
#else |
|||
// Visible in ginput_lld_toggle.c
|
|||
|
|||
GToggleConfig GInputToggleConfigTable[] = { |
|||
{AT91C_BASE_PIOB, // Switch 1 and Switch 2
|
|||
PIOB_SW1_MASK|PIOB_SW2_MASK, |
|||
PIOB_SW1_MASK|PIOB_SW2_MASK, |
|||
PAL_MODE_INPUT}, |
|||
{AT91C_BASE_PIOA, // B1..4 Joystick
|
|||
PIOA_B1_MASK|PIOA_B2_MASK|PIOA_B3_MASK|PIOA_B4_MASK|PIOA_B5_MASK, |
|||
PIOA_B1_MASK|PIOA_B2_MASK|PIOA_B3_MASK|PIOA_B4_MASK|PIOA_B5_MASK, |
|||
PAL_MODE_INPUT}, |
|||
}; |
|||
|
|||
#endif |
|||
|
|||
#endif /* _GDISP_LLD_TOGGLE_BOARD_H */ |
|||
/** @} */ |
@ -0,0 +1,60 @@ |
|||
/*
|
|||
ChibiOS/RT - Copyright (C) 2012 |
|||
Joel Bodenmann aka Tectu <joel@unormal.org> |
|||
|
|||
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 <http://www.gnu.org/licenses/>.
|
|||
*/ |
|||
|
|||
/**
|
|||
* @file drivers/ginput/togglePal/ginput_lld_toggle_board_olimexsam7ex256.h |
|||
* @brief GINPUT Toggle low level driver source for the ChibiOS PAL hardware on the Olimex SAM7EX256 board. |
|||
* |
|||
* @addtogroup GINPUT_TOGGLE |
|||
* @{ |
|||
*/ |
|||
|
|||
#ifndef _GDISP_LLD_TOGGLE_BOARD_H |
|||
#define _GDISP_LLD_TOGGLE_BOARD_H |
|||
|
|||
#define GINPUT_TOGGLE_NUM_PORTS 7 // The total number of toggle inputs
|
|||
#define GINPUT_TOGGLE_CONFIG_ENTRIES 2 // The total number of GToggleConfig entries
|
|||
|
|||
#define GINPUT_TOGGLE_SW1 0 // Switch 1
|
|||
#define GINPUT_TOGGLE_SW2 1 // Switch 2
|
|||
#define GINPUT_TOGGLE_UP 2 // Joystick Up
|
|||
#define GINPUT_TOGGLE_DOWN 3 // Joystick Down
|
|||
#define GINPUT_TOGGLE_LEFT 4 // Joystick Left
|
|||
#define GINPUT_TOGGLE_RIGHT 5 // Joystick Right
|
|||
#define GINPUT_TOGGLE_CENTER 6 // Joystick Center
|
|||
|
|||
#ifdef GINPUT_TOGGLE_DECLARE_CONFIG |
|||
// Visible in ginput_lld_toggle.c
|
|||
|
|||
const GToggleConfig GInputToggleConfigTable[GINPUT_TOGGLE_CONFIG_ENTRIES] = { |
|||
{AT91C_BASE_PIOB, // Switch 1 and Switch 2
|
|||
PIOB_SW1_MASK|PIOB_SW2_MASK, |
|||
PIOB_SW1_MASK|PIOB_SW2_MASK, |
|||
PAL_MODE_INPUT}, |
|||
{AT91C_BASE_PIOA, // B1..4 Joystick
|
|||
PIOA_B1_MASK|PIOA_B2_MASK|PIOA_B3_MASK|PIOA_B4_MASK|PIOA_B5_MASK, |
|||
PIOA_B1_MASK|PIOA_B2_MASK|PIOA_B3_MASK|PIOA_B4_MASK|PIOA_B5_MASK, |
|||
PAL_MODE_INPUT}, |
|||
}; |
|||
|
|||
#endif |
|||
|
|||
#endif /* _GDISP_LLD_TOGGLE_BOARD_H */ |
|||
/** @} */ |
@ -0,0 +1,44 @@ |
|||
/*
|
|||
ChibiOS/RT - Copyright (C) 2012 |
|||
Joel Bodenmann aka Tectu <joel@unormal.org> |
|||
|
|||
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 <http://www.gnu.org/licenses/>.
|
|||
*/ |
|||
|
|||
/**
|
|||
* @file drivers/ginput/togglePal/ginput_lld_toggle_config.h |
|||
* @brief GINPUT Toggle Driver configuration header. |
|||
* |
|||
* @addtogroup GDISP |
|||
* @{ |
|||
*/ |
|||
|
|||
#ifndef _GINPUT_LLD_TOGGLE_CONFIG_H |
|||
#define _GINPUT_LLD_TOGGLE_CONFIG_H |
|||
|
|||
#if GFX_USE_GINPUT && GINPUT_NEED_TOGGLE |
|||
|
|||
#if defined(BOARD_OLIMEX_SAM7_EX256) |
|||
#include "ginput_lld_toggle_board_olimexsam7ex256.h" |
|||
#else |
|||
/* Include the user supplied board definitions */ |
|||
#include "ginput_lld_toggle_board.h" |
|||
#endif |
|||
|
|||
#endif /* GFX_USE_GDISP && GINPUT_NEED_TOGGLE */ |
|||
|
|||
#endif /* _GINPUT_LLD_TOGGLE_CONFIG_H */ |
|||
/** @} */ |
@ -0,0 +1,13 @@ |
|||
To use this driver: |
|||
|
|||
1. Add in your halconf.h: |
|||
a) #define GFX_USE_GINPUT TRUE |
|||
#define GINPUT_NEED_TOGGLE TRUE |
|||
d) If you are not using a known board then create a ginput_lld_toggle_board.h file |
|||
and ensure it is on your include path. |
|||
Use the ginput_lld_toggle_board_example.h file as a basis. |
|||
Currently known boards are: |
|||
Olimex SAM7-EX256 |
|||
|
|||
2. To your makefile add the following lines: |
|||
include $(GFXLIB)/drivers/ginput/togglePal/ginput_lld.mk |
@ -0,0 +1,5 @@ |
|||
# List the required driver.
|
|||
GFXSRC += $(GFXLIB)/drivers/ginput/touch/ADS7843/ginput_lld_mouse.c |
|||
|
|||
# Required include directories
|
|||
GFXINC += $(GFXLIB)/drivers/ginput/touch/ADS7843 |
@ -0,0 +1,139 @@ |
|||
/*
|
|||
ChibiOS/RT - Copyright (C) 2012 |
|||
Joel Bodenmann aka Tectu <joel@unormal.org> |
|||
|
|||
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 <http://www.gnu.org/licenses/>.
|
|||
*/ |
|||
|
|||
/**
|
|||
* @file drivers/ginput/touch/ADS7843/ginput_lld_mouse.c |
|||
* @brief GINPUT Touch low level driver source for the ADS7843. |
|||
* |
|||
* @addtogroup GINPUT_MOUSE |
|||
* @{ |
|||
*/ |
|||
|
|||
#include "ch.h" |
|||
#include "hal.h" |
|||
|
|||
#if (GFX_USE_GINPUT && GINPUT_NEED_MOUSE) /*|| defined(__DOXYGEN__)*/ |
|||
|
|||
#include "lld/ginput/mouse.h" |
|||
|
|||
#if defined(GINPUT_MOUSE_USE_CUSTOM_BOARD) && GINPUT_MOUSE_USE_CUSTOM_BOARD |
|||
/* Include the user supplied board definitions */ |
|||
#include "ginput_lld_mouse_board.h" |
|||
//#elif defined(BOARD_OLIMEX_SAM7_EX256)
|
|||
// #include "ginput_lld_mouse_board_olimexsam7ex256.h"
|
|||
#else |
|||
#include "ginput_lld_mouse_board.h" |
|||
#endif |
|||
|
|||
static uint16_t sampleBuf[7]; |
|||
static coord_t lastx, lasty; |
|||
|
|||
/**
|
|||
* @brief 7-point median filtering code for touch samples |
|||
* |
|||
* @note This is an internally used routine only. |
|||
* |
|||
* @notapi |
|||
*/ |
|||
static void 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 Initialise the mouse/touch. |
|||
* |
|||
* @notapi |
|||
*/ |
|||
void ginput_lld_mouse_init(void) { |
|||
init_board(); |
|||
} |
|||
|
|||
/**
|
|||
* @brief Read the mouse/touch position. |
|||
* |
|||
* @param[in] pt A pointer to the structure to fill |
|||
* |
|||
* @note For drivers that don't support returning a position |
|||
* when the touch is up (most touch devices), it should |
|||
* return the previous position with the new Z value. |
|||
* The z value is the pressure for those touch devices |
|||
* that support it (-100 to 100 where > 0 is touched) |
|||
* or, 0 or 100 for those drivers that don't. |
|||
* |
|||
* @notapi |
|||
*/ |
|||
void ginput_lld_mouse_get_reading(MouseReading *pt) { |
|||
// If touch-off return the previous results
|
|||
if (!getpin_pressed()) { |
|||
pt->x = lastx; |
|||
pt->y = lasty; |
|||
pt->z = 0; |
|||
pt->buttons = 0; |
|||
return; |
|||
} |
|||
|
|||
// Read the port to get the touch settings
|
|||
aquire_bus(); |
|||
|
|||
/* Get the X value
|
|||
* Discard the first conversion - very noisy and keep the ADC on hereafter |
|||
* till we are done with the sampling. Note that PENIRQ is disabled while reading. |
|||
* Finally switch on PENIRQ once again - perform a dummy read. |
|||
* Once we have the readings, find the medium using our filter function |
|||
*/ |
|||
read_value(0xD1); |
|||
for(i = 0; i < 7; i++) |
|||
sampleBuf[i] = read_value(0xD1); |
|||
read_value(0xD0); |
|||
filter(); |
|||
lastx = (coord_t)sampleBuf[3]; |
|||
|
|||
/* Get the Y value using the same process as above */ |
|||
read_value(0x91); |
|||
for(i = 0; i < 7; i++) |
|||
sampleBuf[i] = read_value(0x91); |
|||
read_value(0x90); |
|||
filter(); |
|||
lasty = (coord_t)sampleBuf[3]; |
|||
|
|||
// Release the bus
|
|||
release_bus(); |
|||
|
|||
// Return the results
|
|||
pt->x = lastx; |
|||
pt->y = lasty; |
|||
pt->z = 100; |
|||
pt->buttons = GINPUT_TOUCH_PRESSED; |
|||
} |
|||
|
|||
#endif /* GFX_USE_GINPUT && GINPUT_NEED_MOUSE */ |
|||
/** @} */ |
@ -0,0 +1,87 @@ |
|||
/*
|
|||
ChibiOS/RT - Copyright (C) 2012 |
|||
Joel Bodenmann aka Tectu <joel@unormal.org> |
|||
|
|||
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 <http://www.gnu.org/licenses/>.
|
|||
*/ |
|||
|
|||
/**
|
|||
* @file drivers/ginput/touch/ADS7843/ginput_lld_mouse_board_example.h |
|||
* @brief GINPUT Touch low level driver source for the ADS7843 on the example board. |
|||
* |
|||
* @addtogroup GINPUT_MOUSE |
|||
* @{ |
|||
*/ |
|||
|
|||
#ifndef _GINPUT_LLD_MOUSE_BOARD_H |
|||
#define _GINPUT_LLD_MOUSE_BOARD_H |
|||
|
|||
/**
|
|||
* @brief Initialise the board for the touch. |
|||
* |
|||
* @notapi |
|||
*/ |
|||
static __inline void init_board(void) { |
|||
/* Code here */ |
|||
#error "ginputADS7843: You must supply a definition for init_board for your board" |
|||
} |
|||
|
|||
/**
|
|||
* @brief Check whether the surface is currently touched |
|||
* @return TRUE if the surface is currently touched |
|||
* |
|||
* @notapi |
|||
*/ |
|||
static __inline bool_t getpin_pressed(void) { |
|||
/* Code here */ |
|||
#error "ginputADS7843: You must supply a definition for getpin_pressed for your board" |
|||
} |
|||
|
|||
/**
|
|||
* @brief Aquire the bus ready for readings |
|||
* |
|||
* @notapi |
|||
*/ |
|||
static __inline void aquire_bus(void) { |
|||
/* Code here */ |
|||
#error "ginputADS7843: You must supply a definition for aquire_bus for your board" |
|||
} |
|||
|
|||
/**
|
|||
* @brief Release the bus after readings |
|||
* |
|||
* @notapi |
|||
*/ |
|||
static __inline void release_bus(void) { |
|||
/* Code here */ |
|||
#error "ginputADS7843: You must supply a definition for release_bus for your board" |
|||
} |
|||
|
|||
/**
|
|||
* @brief Read a value from touch controller |
|||
* @return The value read from the controller |
|||
* |
|||
* params[in] port The controller port to read. |
|||
* |
|||
* @notapi |
|||
*/ |
|||
static __inline uint16_t read_value(uint16_t port) { |
|||
/* Code here */ |
|||
#error "ginputADS7843: You must supply a definition for read_value for your board" |
|||
} |
|||
|
|||
#endif /* _GINPUT_LLD_MOUSE_BOARD_H */ |
|||
/** @} */ |
@ -0,0 +1,97 @@ |
|||
/*
|
|||
ChibiOS/RT - Copyright (C) 2012 |
|||
Joel Bodenmann aka Tectu <joel@unormal.org> |
|||
|
|||
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 <http://www.gnu.org/licenses/>.
|
|||
*/ |
|||
|
|||
/**
|
|||
* @file drivers/ginput/touch/ADS7843/ginput_lld_mouse_board_unknown.h |
|||
* @brief GINPUT Touch low level driver source for the ADS7843 on some unknown board. |
|||
* |
|||
* @addtogroup GINPUT_MOUSE |
|||
* @{ |
|||
*/ |
|||
|
|||
#ifndef _GINPUT_LLD_MOUSE_BOARD_H |
|||
#define _GINPUT_LLD_MOUSE_BOARD_H |
|||
|
|||
/**
|
|||
* @brief Initialise the board for the touch. |
|||
* |
|||
* @notapi |
|||
*/ |
|||
static __inline void init_board(void) { |
|||
spiStart(TOUCH_SPIDriver, TOUCH_SPIConfig); |
|||
} |
|||
|
|||
/**
|
|||
* @brief Check whether the surface is currently touched |
|||
* @return TRUE if the surface is currently touched |
|||
* |
|||
* @notapi |
|||
*/ |
|||
static __inline bool_t getpin_pressed(void) { |
|||
return !palReadPad(TOUCH_PressedPort, TOUCH_PressedPin); |
|||
} |
|||
|
|||
/**
|
|||
* @brief Aquire the bus ready for readings |
|||
* |
|||
* @notapi |
|||
*/ |
|||
static __inline void aquire_bus(void) { |
|||
#if defined(SPI_USE_MUTUAL_EXCLUSION) |
|||
spiAcquireBus(TOUCH_SPIDriver); |
|||
#endif |
|||
|
|||
GINPUT_TOUCH_SPI_PROLOGUE(); |
|||
palClearPad(TOUCH_SPIConfig->ssport, TOUCH_SPIConfig->sspad); |
|||
} |
|||
|
|||
/**
|
|||
* @brief Release the bus after readings |
|||
* |
|||
* @notapi |
|||
*/ |
|||
static __inline void release_bus(void) { |
|||
palSetPad(TOUCH_SPIConfig->ssport, TOUCH_SPIConfig->sspad); |
|||
GINPUT_TOUCH_SPI_EPILOGUE(); |
|||
|
|||
#if defined(SPI_USE_MUTUAL_EXCLUSION) |
|||
spiReleaseBus(tsDriver->spip); |
|||
#endif |
|||
} |
|||
|
|||
/**
|
|||
* @brief Read a value from touch controller |
|||
* @return The value read from the controller |
|||
* |
|||
* params[in] port The controller port to read. |
|||
* |
|||
* @notapi |
|||
*/ |
|||
static __inline uint16_t read_value(uint16_t port) { |
|||
static uint8_t txbuf[3] = {0}; |
|||
static uint8_t rxbuf[3] = {0}; |
|||
|
|||
txbuf[0] = cmd; |
|||
spiExchange(TOUCH_SPIDriver, 3, txbuf, rxbuf); |
|||
return (rxbuf[1] << 5) | (rxbuf[2] >> 3); |
|||
} |
|||
|
|||
#endif /* _GINPUT_LLD_MOUSE_BOARD_H */ |
|||
/** @} */ |
@ -0,0 +1,41 @@ |
|||
/*
|
|||
ChibiOS/GFX - Copyright (C) 2012 |
|||
Joel Bodenmann aka Tectu <joel@unormal.org> |
|||
|
|||
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 <http://www.gnu.org/licenses/>.
|
|||
*/ |
|||
/**
|
|||
* @file drivers/ginput/touch/ADS7843/ginput_lld_mouse_config.h |
|||
* @brief GINPUT LLD header file for mouse/touch driver. |
|||
* |
|||
* @addtogroup GINPUT_LLD_MOUSE |
|||
* @{ |
|||
*/ |
|||
#ifndef _LLD_GINPUT_MOUSE_CONFIG_H |
|||
#define _LLD_GINPUT_MOUSE_CONFIG_H |
|||
|
|||
#define GINPUT_MOUSE_EVENT_TYPE GEVENT_TOUCH |
|||
#define GINPUT_MOUSE_NEED_CALIBRATION TRUE |
|||
#define GINPUT_MOUSE_LLD_CALIBRATION_LOADSAVE FALSE |
|||
#define GINPUT_MOUSE_MAX_CALIBRATION_ERROR 2 |
|||
#define GINPUT_MOUSE_READ_CYCLES 4 |
|||
#define GINPUT_MOUSE_POLL_PERIOD 100 |
|||
#define GINPUT_MOUSE_MAX_CLICK_JITTER 2 |
|||
#define GINPUT_MOUSE_MAX_MOVE_JITTER 2 |
|||
#define GINPUT_MOUSE_CLICK_TIME 700 |
|||
|
|||
#endif /* _LLD_GINPUT_MOUSE_CONFIG_H */ |
|||
/** @} */ |
@ -0,0 +1,9 @@ |
|||
To use this driver: |
|||
|
|||
1. Add in your halconf.h: |
|||
a) #define GFX_USE_GINPUT TRUE |
|||
b) #define GINPUT_NEED_MOUSE TRUE |
|||
|
|||
2. To your makefile add the following lines: |
|||
include $(GFXLIB)/drivers/ginput/touch/ADS7843/ginput_lld.mk |
|||
|
@ -0,0 +1,5 @@ |
|||
# List the required driver.
|
|||
GFXSRC += $(GFXLIB)/drivers/ginput/touch/MCU/ginput_lld_mouse.c |
|||
|
|||
# Required include directories
|
|||
GFXINC += $(GFXLIB)/drivers/ginput/touch/MCU |
@ -0,0 +1,136 @@ |
|||
/*
|
|||
ChibiOS/RT - Copyright (C) 2012 |
|||
Joel Bodenmann aka Tectu <joel@unormal.org> |
|||
|
|||
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 <http://www.gnu.org/licenses/>.
|
|||
*/ |
|||
|
|||
/**
|
|||
* @file drivers/ginput/touch/MCU/ginput_lld_mouse.c |
|||
* @brief GINPUT Touch low level driver source for the MCU. |
|||
* |
|||
* @addtogroup GINPUT_MOUSE |
|||
* @{ |
|||
*/ |
|||
|
|||
#include "ch.h" |
|||
#include "hal.h" |
|||
|
|||
#if (GFX_USE_GINPUT && GINPUT_NEED_MOUSE) /*|| defined(__DOXYGEN__)*/ |
|||
|
|||
#include "lld/ginput/touch.h" |
|||
|
|||
#if defined(GINPUT_MOUSE_USE_CUSTOM_BOARD) && GINPUT_MOUSE_USE_CUSTOM_BOARD |
|||
/* Include the user supplied board definitions */ |
|||
#include "ginput_lld_mouse_board.h" |
|||
//#elif defined(BOARD_OLIMEX_SAM7_EX256)
|
|||
// #include "ginput_lld_mouse_board_olimexsam7ex256.h"
|
|||
#else |
|||
#include "ginput_lld_mouse_board.h" |
|||
#endif |
|||
|
|||
static uint16_t sampleBuf[7]; |
|||
static coord_t lastx, lasty; |
|||
|
|||
/**
|
|||
* @brief 7-point median filtering code for touchscreen samples |
|||
* |
|||
* @note This is an internally used routine only. |
|||
* |
|||
* @notapi |
|||
*/ |
|||
static void 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 Initialise the mouse/touch. |
|||
* |
|||
* @notapi |
|||
*/ |
|||
void ginput_lld_mouse_init(void) { |
|||
init_board(); |
|||
} |
|||
|
|||
/**
|
|||
* @brief Read the mouse/touch position. |
|||
* |
|||
* @param[in] pt A pointer to the structure to fill |
|||
* |
|||
* @note For drivers that don't support returning a position |
|||
* when the touch is up (most touch devices), it should |
|||
* return the previous position with the new Z value. |
|||
* The z value is the pressure for those touch devices |
|||
* that support it (-100 to 100 where > 0 is touched) |
|||
* or, 0 or 100 for those drivers that don't. |
|||
* |
|||
* @notapi |
|||
*/ |
|||
void ginput_lld_mouse_get_reading(MouseReading *pt) { |
|||
// If touch-off return the previous results
|
|||
if (!getpin_pressed()) { |
|||
pt->x = lastx; |
|||
pt->y = lasty; |
|||
pt->z = 0; |
|||
pt->buttons = 0; |
|||
return; |
|||
} |
|||
|
|||
// Read the port to get the touch settings
|
|||
aquire_bus(); |
|||
|
|||
/* Get the X value
|
|||
* Discard the first conversion - very noisy and keep the ADC on hereafter |
|||
* till we are done with the sampling. |
|||
* Once we have the readings, find the medium using our filter function |
|||
*/ |
|||
read_x_value(); |
|||
for(i = 0; i < 7; i++) |
|||
sampleBuf[i] = read_x_value(); |
|||
filter(); |
|||
lastx = (coord_t)sampleBuf[3]; |
|||
|
|||
/* Get the Y value using the same process as above */ |
|||
read_y_value(); |
|||
for(i = 0; i < 7; i++) |
|||
sampleBuf[i] = read_y_value(); |
|||
filter(); |
|||
lasty = (coord_t)sampleBuf[3]; |
|||
|
|||
// Release the bus
|
|||
release_bus(); |
|||
|
|||
// Return the results
|
|||
pt->x = lastx; |
|||
pt->y = lasty; |
|||
pt->z = 100; |
|||
pt->buttons = GINPUT_TOUCH_PRESSED; |
|||
} |
|||
|
|||
#endif /* GFX_USE_GINPUT && GINPUT_NEED_MOUSE */ |
|||
/** @} */ |
@ -0,0 +1,96 @@ |
|||
/*
|
|||
ChibiOS/RT - Copyright (C) 2012 |
|||
Joel Bodenmann aka Tectu <joel@unormal.org> |
|||
|
|||
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 <http://www.gnu.org/licenses/>.
|
|||
*/ |
|||
|
|||
/**
|
|||
* @file drivers/ginput/touch/MCU/ginput_lld_mouse_board_example.h |
|||
* @brief GINPUT Touch low level driver source for the MCU on the example board. |
|||
* |
|||
* @addtogroup GINPUT_MOUSE |
|||
* @{ |
|||
*/ |
|||
|
|||
#ifndef _GINPUT_LLD_MOUSE_BOARD_H |
|||
#define _GINPUT_LLD_MOUSE_BOARD_H |
|||
|
|||
/**
|
|||
* @brief Initialise the board for the touch. |
|||
* |
|||
* @notapi |
|||
*/ |
|||
static __inline void init_board(void) { |
|||
/* Code here */ |
|||
#error "ginputMCU: You must supply a definition for init_board for your board" |
|||
} |
|||
|
|||
/**
|
|||
* @brief Check whether the surface is currently touched |
|||
* @return TRUE if the surface is currently touched |
|||
* |
|||
* @notapi |
|||
*/ |
|||
static __inline bool_t getpin_pressed(void) { |
|||
/* Code here */ |
|||
#error "ginputMCU: You must supply a definition for getpin_pressed for your board" |
|||
} |
|||
|
|||
/**
|
|||
* @brief Aquire the bus ready for readings |
|||
* |
|||
* @notapi |
|||
*/ |
|||
static __inline void aquire_bus(void) { |
|||
/* Code here */ |
|||
#error "ginputMCU: You must supply a definition for aquire_bus for your board" |
|||
} |
|||
|
|||
/**
|
|||
* @brief Release the bus after readings |
|||
* |
|||
* @notapi |
|||
*/ |
|||
static __inline void release_bus(void) { |
|||
/* Code here */ |
|||
#error "ginputMCU: You must supply a definition for release_bus for your board" |
|||
} |
|||
|
|||
/**
|
|||
* @brief Read an x value from touch controller |
|||
* @return The value read from the controller |
|||
* |
|||
* @notapi |
|||
*/ |
|||
static __inline uint16_t read_x_value(void) { |
|||
/* Code here */ |
|||
#error "ginputMCU: You must supply a definition for read_x_value for your board" |
|||
} |
|||
|
|||
/**
|
|||
* @brief Read an y value from touch controller |
|||
* @return The value read from the controller |
|||
* |
|||
* @notapi |
|||
*/ |
|||
static __inline uint16_t read_y_value(void) { |
|||
/* Code here */ |
|||
#error "ginputMCU: You must supply a definition for read_y_value for your board" |
|||
} |
|||
|
|||
#endif /* _GINPUT_LLD_MOUSE_BOARD_H */ |
|||
/** @} */ |
@ -0,0 +1,174 @@ |
|||
/*
|
|||
ChibiOS/RT - Copyright (C) 2012 |
|||
Joel Bodenmann aka Tectu <joel@unormal.org> |
|||
|
|||
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 <http://www.gnu.org/licenses/>.
|
|||
*/ |
|||
|
|||
/**
|
|||
* @file drivers/ginput/touch/MCU/ginput_lld_mouse_board_unknown.h |
|||
* @brief GINPUT Touch low level driver source for the MCU on some unknown board. |
|||
* |
|||
* @addtogroup GINPUT_MOUSE |
|||
* @{ |
|||
*/ |
|||
|
|||
#ifndef _GINPUT_LLD_MOUSE_BOARD_H |
|||
#define _GINPUT_LLD_MOUSE_BOARD_H |
|||
|
|||
#define ADC_NUM_CHANNELS 2 |
|||
#define ADC_BUF_DEPTH 1 |
|||
|
|||
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 Initialise the board for the mouse/touch. |
|||
* |
|||
* @notapi |
|||
*/ |
|||
static __inline void init_board(void) { |
|||
/* Code here */ |
|||
#error "ginputMCU: You must supply a definition for init_board for your board |
|||
|
|||
adcStart(ts->adc_driver, NULL); |
|||
} |
|||
|
|||
/**
|
|||
* @brief Check whether the surface is currently touched |
|||
* @return TRUE if the surface is currently touched |
|||
* |
|||
* @notapi |
|||
*/ |
|||
static __inline bool_t getpin_pressed(void) { |
|||
/* Code here */ |
|||
#error "ginputMCU: You must supply a definition for getpin_pressed for your board" |
|||
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); |
|||
} |
|||
|
|||
/**
|
|||
* @brief Aquire the bus ready for readings |
|||
* |
|||
* @notapi |
|||
*/ |
|||
static __inline void aquire_bus(void) { |
|||
/* Code here */ |
|||
#error "ginputMCU: You must supply a definition for aquire_bus for your board" |
|||
} |
|||
|
|||
/**
|
|||
* @brief Release the bus after readings |
|||
* |
|||
* @notapi |
|||
*/ |
|||
static __inline void release_bus(void) { |
|||
/* Code here */ |
|||
#error "ginputMCU: You must supply a definition for release_bus for your board" |
|||
} |
|||
|
|||
/**
|
|||
* @brief Read an x value from touch controller |
|||
* @return The value read from the controller |
|||
* |
|||
* @notapi |
|||
*/ |
|||
static __inline uint16_t read_x_value(void) { |
|||
/* Code here */ |
|||
#error "ginputMCU: You must supply a definition for read_x_value for your board" |
|||
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 Read an y value from touch controller |
|||
* @return The value read from the controller |
|||
* |
|||
* @notapi |
|||
*/ |
|||
static __inline uint16_t read_y_value(void) { |
|||
/* Code here */ |
|||
#error "ginputMCU: You must supply a definition for read_y_value for your board" |
|||
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); |
|||
} |
|||
|
|||
#endif /* _GINPUT_LLD_MOUSE_BOARD_H */ |
|||
/** @} */ |
@ -0,0 +1,41 @@ |
|||
/*
|
|||
ChibiOS/GFX - Copyright (C) 2012 |
|||
Joel Bodenmann aka Tectu <joel@unormal.org> |
|||
|
|||
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 <http://www.gnu.org/licenses/>.
|
|||
*/ |
|||
/**
|
|||
* @file drivers/ginput/touch/MCU/ginput_lld_mouse_config.h |
|||
* @brief GINPUT LLD header file for touch driver. |
|||
* |
|||
* @addtogroup GINPUT_LLD_MOUSE |
|||
* @{ |
|||
*/ |
|||
#ifndef _LLD_GINPUT_MOUSE_CONFIG_H |
|||
#define _LLD_GINPUT_MOUSE_CONFIG_H |
|||
|
|||
#define GINPUT_MOUSE_EVENT_TYPE GEVENT_TOUCH |
|||
#define GINPUT_MOUSE_NEED_CALIBRATION TRUE |
|||
#define GINPUT_MOUSE_LLD_CALIBRATION_LOADSAVE FALSE |
|||
#define GINPUT_MOUSE_MAX_CALIBRATION_ERROR 2 |
|||
#define GINPUT_MOUSE_READ_CYCLES 4 |
|||
#define GINPUT_MOUSE_POLL_PERIOD 100 |
|||
#define GINPUT_MOUSE_MAX_CLICK_JITTER 2 |
|||
#define GINPUT_MOUSE_MAX_MOVE_JITTER 2 |
|||
#define GINPUT_MOUSE_CLICK_TIME 700 |
|||
|
|||
#endif /* _LLD_GINPUT_MOUSE_CONFIG_H */ |
|||
/** @} */ |
@ -0,0 +1,9 @@ |
|||
To use this driver: |
|||
|
|||
1. Add in your halconf.h: |
|||
a) #define GFX_USE_GINPUT TRUE |
|||
b) #define GINPUT_NEED_MOUSE TRUE |
|||
|
|||
2. To your makefile add the following lines: |
|||
include $(GFXLIB)/drivers/ginput/touch/MCU/ginput_lld.mk |
|||
|
@ -0,0 +1,5 @@ |
|||
# List the required driver.
|
|||
GFXSRC += $(GFXLIB)/drivers/multiple/Win32/gdisp_lld.c |
|||
|
|||
# Required include directories
|
|||
GFXINC += $(GFXLIB)/drivers/multiple/Win32 |
@ -0,0 +1,58 @@ |
|||
/*
|
|||
ChibiOS/GFX - Copyright (C) 2012 |
|||
Joel Bodenmann aka Tectu <joel@unormal.org> |
|||
|
|||
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 <http://www.gnu.org/licenses/>.
|
|||
*/ |
|||
/**
|
|||
* @file drivers/gdisp/Win32/ginput_lld_mouse_config.h |
|||
* @brief GINPUT LLD header file for mouse/touch driver. |
|||
* |
|||
* @addtogroup GINPUT_LLD_MOUSE |
|||
* @{ |
|||
*/ |
|||
#ifndef _LLD_GINPUT_MOUSE_CONFIG_H |
|||
#define _LLD_GINPUT_MOUSE_CONFIG_H |
|||
|
|||
// This driver supports being both a mouse or a touch device (we don't actually know which it really is)
|
|||
// When operating in mouse mode a long left button click does not generate a context click.
|
|||
// When operating in touch mode we allow sloppier clicks etc
|
|||
#if GINPUT_NEED_MOUSE |
|||
#define GINPUT_MOUSE_EVENT_TYPE GEVENT_MOUSE |
|||
#define GINPUT_MOUSE_CLICK_TIME TIME_INFINITE // Long click != Context Click
|
|||
#define GINPUT_MOUSE_NEED_CALIBRATION FALSE |
|||
#define GINPUT_MOUSE_LLD_CALIBRATION_LOADSAVE FALSE |
|||
#define GINPUT_MOUSE_READ_CYCLES 1 |
|||
#define GINPUT_MOUSE_MAX_CALIBRATION_ERROR -1 |
|||
#define GINPUT_MOUSE_MAX_CLICK_JITTER 0 |
|||
#define GINPUT_MOUSE_MAX_MOVE_JITTER 0 |
|||
#else |
|||
#define GINPUT_MOUSE_EVENT_TYPE GEVENT_TOUCH |
|||
#define GINPUT_MOUSE_CLICK_TIME 700 // Long click = Context Click
|
|||
#define GINPUT_MOUSE_NEED_CALIBRATION FALSE // Can be set to TRUE just for testing
|
|||
#define GINPUT_MOUSE_LLD_CALIBRATION_LOADSAVE FALSE |
|||
#define GINPUT_MOUSE_READ_CYCLES 1 |
|||
#define GINPUT_MOUSE_MAX_CALIBRATION_ERROR 2 |
|||
#define GINPUT_MOUSE_MAX_CLICK_JITTER 2 |
|||
#define GINPUT_MOUSE_MAX_MOVE_JITTER 2 |
|||
#endif |
|||
|
|||
// This driver supports both an "interrupt" mode, and a polled mode
|
|||
#define GINPUT_MOUSE_POLL_PERIOD TIME_INFINITE // Interrupt driven by the Window thread
|
|||
//#define GINPUT_MOUSE_POLL_PERIOD 100 // Poll driven
|
|||
|
|||
#endif /* _LLD_GINPUT_MOUSE_CONFIG_H */ |
|||
/** @} */ |