diff options
71 files changed, 557 insertions, 1697 deletions
| diff --git a/Doxygenfile b/Doxygenfile index 13686d18..295695d4 100644 --- a/Doxygenfile +++ b/Doxygenfile @@ -32,7 +32,7 @@ PROJECT_NAME           = ChibiOS/GFX  # This could be handy for archiving the generated documentation or  # if some version control system is used. -PROJECT_NUMBER         = 1.4 +PROJECT_NUMBER         = 1.5  # Using the PROJECT_BRIEF tag one can provide an optional one line description  # for a project that appears at the top of each page and should give viewer diff --git a/demos/applications/notepad/gfxconf.h b/demos/applications/notepad/gfxconf.h index 64334447..45413580 100644 --- a/demos/applications/notepad/gfxconf.h +++ b/demos/applications/notepad/gfxconf.h @@ -25,7 +25,7 @@  #define GDISP_NEED_ARC			FALSE
  #define GDISP_NEED_SCROLL		FALSE
  #define GDISP_NEED_PIXELREAD	FALSE
 -#define GDISP_NEED_CONTROL		FALSE
 +#define GDISP_NEED_CONTROL		TRUE
  #define GDISP_NEED_MULTITHREAD	TRUE
  #define GDISP_NEED_ASYNC		FALSE
  #define GDISP_NEED_MSGAPI		FALSE
 diff --git a/demos/applications/notepad/main.c b/demos/applications/notepad/main.c index 71978488..919aaafc 100644 --- a/demos/applications/notepad/main.c +++ b/demos/applications/notepad/main.c @@ -75,6 +75,7 @@ int main(void) {  	gdispInit();
  	ginputGetMouse(0);
 +	gdispSetOrientation(GDISP_ROTATE_90);
  	drawScreen();
 diff --git a/docs/src/gdisp.dox b/docs/src/gdisp.dox deleted file mode 100644 index 0fdeae34..00000000 --- a/docs/src/gdisp.dox +++ /dev/null @@ -1,26 +0,0 @@ -/*	
 -	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/>.
 -*/
 -
 -/**
 - * @addtogroup GDISP
 - * @details The GDISP module provides high level abstraction to interface
 - * 			pixel oriented graphic displays.
 - */
 -
 diff --git a/docs/src/graph.dox b/docs/src/graph.dox deleted file mode 100644 index b9ca456d..00000000 --- a/docs/src/graph.dox +++ /dev/null @@ -1,28 +0,0 @@ -/*	
 -	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/>.
 -*/
 -
 -/**
 - * @addtogroup GRAPH
 - * @details The GRAPH module provides high level HAL independed routines
 - *			to draw graphs on a graphic display. The graph is highly
 - *			configurable. There are many options to controll the look
 - *			of the graph.
 - */
 -
 diff --git a/docs/src/gtimer.dox b/docs/src/gtimer.dox deleted file mode 100644 index 65dca871..00000000 --- a/docs/src/gtimer.dox +++ /dev/null @@ -1,36 +0,0 @@ -/*	
 -	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/>.
 -*/
 -
 -/**
 - * @addtogroup GTIMER
 - * @details The GTIMER module provides high level, simple and hardware
 - * 			independend timers. The timers are meant to be used in different
 - *			ChibiOS/GFX modules and are not very accurate. 
 - *			
 - * @details	The reason why ChibiOS/GFX has it's own timer abstraction is because
 - *			virtual timers provided by ChibiOS/RT are interrupt context only.
 - *			While great for what they are designed for, they make coding of the input
 - *			drivers much more complex.
 - *			For non-performance critical drivers like these input drivers,  it would also
 - *			hog an in-ordinate amount of critical (interrupt locked) system time.
 - *			This contrary to the goals of a real-time operating system. So a user-land
 - *			(thread based) timer mechanism is also required.
 - */
 -
 diff --git a/docs/src/gwin.dox b/docs/src/gwin.dox deleted file mode 100644 index b8ea478a..00000000 --- a/docs/src/gwin.dox +++ /dev/null @@ -1,27 +0,0 @@ -/*	
 -	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/>.
 -*/
 -
 -/**
 - * @addtogroup GWIN
 - * @details	The GWIN module provides simple window management.
 - * @details	Please note that GWIN is a module ontop of GDISP. Therefore, GDISP
 - *			has to be set up correctly.
 - */
 -
 diff --git a/docs/src/touchscreen.dox b/docs/src/touchscreen.dox deleted file mode 100644 index 0a1819b9..00000000 --- a/docs/src/touchscreen.dox +++ /dev/null @@ -1,26 +0,0 @@ -/*	
 -	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/>.
 -*/
 -
 -/**
 - * @addtogroup TOUCHSCREEN
 - * @details The TOUCHSCREEN module provides high level abstraction to interface
 - * 			touchscreens.
 - */
 -
 diff --git a/drivers/gdisp/SSD1289/gdisp_lld.c b/drivers/gdisp/SSD1289/gdisp_lld.c index 49600349..6b7069c9 100644 --- a/drivers/gdisp/SSD1289/gdisp_lld.c +++ b/drivers/gdisp/SSD1289/gdisp_lld.c @@ -95,7 +95,7 @@ static __inline void set_cursor(coord_t x, coord_t y) {  	}
  }
 -static __inline void set_viewport(coord_t x, coord_t y, coord_t cx, coord_t cy) {
 +void set_viewport(coord_t x, coord_t y, coord_t cx, coord_t cy) {
  	set_cursor(x, y);
 @@ -134,6 +134,19 @@ static __inline void set_viewport(coord_t x, coord_t y, coord_t cx, coord_t cy)  	set_cursor(x, y);
  }
 +void reset_viewport(void) {
 +    switch(GDISP.Orientation) {
 +        case GDISP_ROTATE_0:
 +        case GDISP_ROTATE_180:
 +            set_viewport(0, 0, GDISP_SCREEN_WIDTH, GDISP_SCREEN_HEIGHT);
 +            break;
 +        case GDISP_ROTATE_90:
 +        case GDISP_ROTATE_270:
 +            set_viewport(0, 0, GDISP_SCREEN_HEIGHT, GDISP_SCREEN_WIDTH);
 +            break;
 +    }
 +}
 +
  /*===========================================================================*/
  /* Driver interrupt handlers.                                                */
  /*===========================================================================*/
 @@ -167,9 +180,9 @@ bool_t GDISP_LLD(init)(void) {  	acquire_bus();
  	write_reg(0x0000,0x0001);		delay(5);
 -    write_reg(0x0003,0xA8A4);    	delay(5);
 -    write_reg(0x000C,0x0000);    	delay(5);
 -    write_reg(0x000D,0x080C);    	delay(5);
 +	write_reg(0x0003,0xA8A4);    	delay(5);
 +	write_reg(0x000C,0x0000);    	delay(5);
 +	write_reg(0x000D,0x080C);    	delay(5);
      write_reg(0x000E,0x2B00);    	delay(5);
      write_reg(0x001E,0x00B0);    	delay(5);
  	write_reg(0x0001,0x2B3F);		delay(5);
 @@ -277,14 +290,15 @@ void GDISP_LLD(drawpixel)(coord_t x, coord_t y, color_t color) {  	 * @notapi
  	 */
  	void GDISP_LLD(clear)(color_t color) {
 -	    unsigned i;
 +		unsigned i;
  		acquire_bus();
 -	    set_cursor(0, 0);
 -	    stream_start();
 -	    for(i = 0; i < GDISP_SCREEN_WIDTH * GDISP_SCREEN_HEIGHT; i++)
 -	    	write_data(color);
 -	    stream_stop();
 +		reset_viewport();
 +		set_cursor(0, 0);
 +		stream_start();
 +		for(i = 0; i < GDISP_SCREEN_WIDTH * GDISP_SCREEN_HEIGHT; i++)
 +			write_data(color);
 +		stream_stop();
  		release_bus();
  	}
  #endif
 @@ -485,6 +499,7 @@ void GDISP_LLD(drawpixel)(coord_t x, coord_t y, color_t color) {  	 * @notapi
  	 */
  	void GDISP_LLD(control)(unsigned what, void *value) {
 +		acquire_bus();
  		switch(what) {
  		case GDISP_CONTROL_POWER:
  			if (GDISP.Powermode == (gdisp_powermode_t)value)
 @@ -557,6 +572,7 @@ void GDISP_LLD(drawpixel)(coord_t x, coord_t y, color_t color) {  		case GDISP_CONTROL_CONTRAST:
  */
  		}
 +		release_bus();
  	}
  #endif
 diff --git a/drivers/ginput/toggle/Pal/ginput_lld_toggle.c b/drivers/ginput/toggle/Pal/ginput_lld_toggle.c index a3a360d8..e2ecc116 100644 --- a/drivers/ginput/toggle/Pal/ginput_lld_toggle.c +++ b/drivers/ginput/toggle/Pal/ginput_lld_toggle.c @@ -22,7 +22,8 @@   * @file    drivers/ginput/toggle/Pal/ginput_lld_toggle.c
   * @brief   GINPUT Toggle low level driver source for the ChibiOS PAL hardware.
   *
 - * @addtogroup GINPUT_TOGGLE
 + * @defgroup Toggle Toggle
 + * @ingroup GINPUT
   * @{
   */
 diff --git a/drivers/ginput/toggle/Pal/ginput_lld_toggle_board_example.h b/drivers/ginput/toggle/Pal/ginput_lld_toggle_board_example.h index a96178b0..20fc44b5 100644 --- a/drivers/ginput/toggle/Pal/ginput_lld_toggle_board_example.h +++ b/drivers/ginput/toggle/Pal/ginput_lld_toggle_board_example.h @@ -22,7 +22,8 @@   * @file    drivers/ginput/toggle/Pal/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
 + * @defgroup Toggle Toggle
 + * @ingroup GINPUT
   * @{
   */
 diff --git a/drivers/ginput/toggle/Pal/ginput_lld_toggle_board_olimexsam7ex256.h b/drivers/ginput/toggle/Pal/ginput_lld_toggle_board_olimexsam7ex256.h index 3ba5858d..4f3d6800 100644 --- a/drivers/ginput/toggle/Pal/ginput_lld_toggle_board_olimexsam7ex256.h +++ b/drivers/ginput/toggle/Pal/ginput_lld_toggle_board_olimexsam7ex256.h @@ -22,7 +22,8 @@   * @file    drivers/ginput/toggle/Pal/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
 + * @defgroup Toggle Toggle
 + * @ingroup GINPUT
   * @{
   */
 diff --git a/drivers/ginput/toggle/Pal/ginput_lld_toggle_config.h b/drivers/ginput/toggle/Pal/ginput_lld_toggle_config.h index 774be200..162d35df 100644 --- a/drivers/ginput/toggle/Pal/ginput_lld_toggle_config.h +++ b/drivers/ginput/toggle/Pal/ginput_lld_toggle_config.h @@ -22,7 +22,8 @@   * @file    drivers/ginput/toggle/Pal/ginput_lld_toggle_config.h
   * @brief   GINPUT Toggle Driver configuration header.
   *
 - * @addtogroup GDISP
 + * @defgroup Toggle Toggle
 + * @ingroup GINPUT
   * @{
   */
 diff --git a/drivers/ginput/touch/ADS7843/ginput_lld_mouse.c b/drivers/ginput/touch/ADS7843/ginput_lld_mouse.c index a308c0dc..65065176 100644 --- a/drivers/ginput/touch/ADS7843/ginput_lld_mouse.c +++ b/drivers/ginput/touch/ADS7843/ginput_lld_mouse.c @@ -22,7 +22,8 @@   * @file    drivers/ginput/touch/ADS7843/ginput_lld_mouse.c
   * @brief   GINPUT Touch low level driver source for the ADS7843.
   *
 - * @addtogroup GINPUT_MOUSE
 + * @defgroup Mouse Mouse
 + * @ingroup GINPUT
   * @{
   */
 @@ -38,6 +39,8 @@  	#include "ginput_lld_mouse_board.h"
  #elif defined(BOARD_FIREBULL_STM32_F103)
  	#include "ginput_lld_mouse_board_firebull_stm32f103.h"
 +#elif defined(BOARD_OLIMEX_STM32_E407)
 +	#include "ginput_lld_mouse_board_olimex_stm32_e407.h"
  #else
  	#include "ginput_lld_mouse_board_example.h"
  #endif
 diff --git a/drivers/ginput/touch/ADS7843/ginput_lld_mouse_board_example.h b/drivers/ginput/touch/ADS7843/ginput_lld_mouse_board_example.h index 9fbbaa56..9f4f2dc1 100644 --- a/drivers/ginput/touch/ADS7843/ginput_lld_mouse_board_example.h +++ b/drivers/ginput/touch/ADS7843/ginput_lld_mouse_board_example.h @@ -22,7 +22,8 @@   * @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
 + * @defgroup Mouse Mouse
 + * @ingroup GINPUT
   * @{
   */
 diff --git a/drivers/ginput/touch/ADS7843/ginput_lld_mouse_board_firebull_stm32f103.h b/drivers/ginput/touch/ADS7843/ginput_lld_mouse_board_firebull_stm32f103.h index 9df301a4..04d77be6 100644 --- a/drivers/ginput/touch/ADS7843/ginput_lld_mouse_board_firebull_stm32f103.h +++ b/drivers/ginput/touch/ADS7843/ginput_lld_mouse_board_firebull_stm32f103.h @@ -22,7 +22,8 @@   * @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
 + * @defgroup Mouse Mouse
 + * @ingroup GINPUT
   * @{
   */
 diff --git a/drivers/ginput/touch/XPT2046/ginput_lld_mouse_board_firebull_stm32f103.h b/drivers/ginput/touch/ADS7843/ginput_lld_mouse_board_olimex_stm32_e407.h index 893ec865..6c5f7e37 100644 --- a/drivers/ginput/touch/XPT2046/ginput_lld_mouse_board_firebull_stm32f103.h +++ b/drivers/ginput/touch/ADS7843/ginput_lld_mouse_board_olimex_stm32_e407.h @@ -19,10 +19,11 @@  */
  /**
 - * @file    drivers/ginput/touch/XPT2046/ginput_lld_mouse_board_example.h
 - * @brief   GINPUT Touch low level driver source for the XPT2046 on the example board.
 + * @file    drivers/ginput/touch/ADS7843/ginput_lld_mouse_board_olimex_stm32_e407.h
 + * @brief   GINPUT Touch low level driver source for the ADS7843 on an Olimex STM32E407.
   *
 - * @addtogroup GINPUT_MOUSE
 + * @defgroup Mouse Mouse
 + * @ingroup GINPUT
   * @{
   */
 @@ -31,8 +32,8 @@  static const SPIConfig spicfg = { 
      NULL,
 -	GPIOC, 
 -    6,
 +	GPIOG, 
 +    10,
      /* SPI_CR1_BR_2 |*/ SPI_CR1_BR_1 | SPI_CR1_BR_0,
  };
 @@ -42,7 +43,7 @@ static const SPIConfig spicfg = {   * @notapi
   */
  static __inline void init_board(void) {
 -	spiStart(&SPID1, &spicfg);
 +	spiStart(&SPID2, &spicfg);
  }
  /**
 @@ -52,7 +53,7 @@ static __inline void init_board(void) {   * @notapi
   */
  static __inline bool_t getpin_pressed(void) {
 -	return (!palReadPad(GPIOC, 4));
 +	return (!palReadPad(GPIOG, 0));
  }
  /**
   * @brief   Aquire the bus ready for readings
 @@ -60,9 +61,9 @@ static __inline bool_t getpin_pressed(void) {   * @notapi
   */
  static __inline void aquire_bus(void) {
 -	spiAcquireBus(&SPID1);
 +	spiAcquireBus(&SPID2);
      //TOUCHSCREEN_SPI_PROLOGUE();
 -    palClearPad(GPIOC, 6);
 +    palClearPad(GPIOG, 10);
  }
  /**
 @@ -71,8 +72,8 @@ static __inline void aquire_bus(void) {   * @notapi
   */
  static __inline void release_bus(void) {
 -	palSetPad(GPIOC, 6);
 -	spiReleaseBus(&SPID1);
 +	palSetPad(GPIOG, 10);
 +	spiReleaseBus(&SPID2);
      //TOUCHSCREEN_SPI_EPILOGUE();
  }
 @@ -91,7 +92,7 @@ static __inline uint16_t read_value(uint16_t port) {      txbuf[0] = port;
 -    spiExchange(&SPID1, 3, txbuf, rxbuf);
 +    spiExchange(&SPID2, 3, txbuf, rxbuf);
      ret = (rxbuf[1] << 5) | (rxbuf[2] >> 3); 
 diff --git a/drivers/ginput/touch/ADS7843/ginput_lld_mouse_config.h b/drivers/ginput/touch/ADS7843/ginput_lld_mouse_config.h index 688f3486..30a13841 100644 --- a/drivers/ginput/touch/ADS7843/ginput_lld_mouse_config.h +++ b/drivers/ginput/touch/ADS7843/ginput_lld_mouse_config.h @@ -21,9 +21,12 @@   * @file    drivers/ginput/touch/ADS7843/ginput_lld_mouse_config.h
   * @brief   GINPUT LLD header file for mouse/touch driver.
   *
 - * @addtogroup GINPUT_LLD_MOUSE
 + * @defgroup Mouse Mouse
 + * @ingroup GINPUT 
 + *
   * @{
   */
 +
  #ifndef _LLD_GINPUT_MOUSE_CONFIG_H
  #define _LLD_GINPUT_MOUSE_CONFIG_H
 diff --git a/drivers/ginput/touch/MCU/ginput_lld_mouse.c b/drivers/ginput/touch/MCU/ginput_lld_mouse.c index 61b512cd..b43a14e7 100644 --- a/drivers/ginput/touch/MCU/ginput_lld_mouse.c +++ b/drivers/ginput/touch/MCU/ginput_lld_mouse.c @@ -22,7 +22,9 @@   * @file    drivers/ginput/touch/MCU/ginput_lld_mouse.c
   * @brief   GINPUT Touch low level driver source for the MCU.
   *
 - * @addtogroup GINPUT_MOUSE
 + * @defgroup Mouse Mouse
 + * @ingroup GINPUT
 + *
   * @{
   */
 diff --git a/drivers/ginput/touch/MCU/ginput_lld_mouse_board_example.h b/drivers/ginput/touch/MCU/ginput_lld_mouse_board_example.h index 5a09b274..913d50c9 100644 --- a/drivers/ginput/touch/MCU/ginput_lld_mouse_board_example.h +++ b/drivers/ginput/touch/MCU/ginput_lld_mouse_board_example.h @@ -22,7 +22,9 @@   * @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
 + * @defgroup Mouse Mouse
 + * @ingroup GINPUT
 + *
   * @{
   */
 diff --git a/drivers/ginput/touch/MCU/ginput_lld_mouse_board_olimex_stm32_lcd.h b/drivers/ginput/touch/MCU/ginput_lld_mouse_board_olimex_stm32_lcd.h index 2fa6fe44..510e8e81 100644 --- a/drivers/ginput/touch/MCU/ginput_lld_mouse_board_olimex_stm32_lcd.h +++ b/drivers/ginput/touch/MCU/ginput_lld_mouse_board_olimex_stm32_lcd.h @@ -22,7 +22,9 @@   * @file    drivers/ginput/touch/MCU/ginput_lld_mouse_board_olimex_stm32_lcd.h
   * @brief   GINPUT Touch low level driver source for the MCU on the example board.
   *
 - * @addtogroup GINPUT_MOUSE
 + * @defgroup Mouse Mouse
 + * @ingroup GINPUT
 + *
   * @{
   */
 diff --git a/drivers/ginput/touch/MCU/ginput_lld_mouse_config.h b/drivers/ginput/touch/MCU/ginput_lld_mouse_config.h index 4711625b..1b5c7b6b 100644 --- a/drivers/ginput/touch/MCU/ginput_lld_mouse_config.h +++ b/drivers/ginput/touch/MCU/ginput_lld_mouse_config.h @@ -21,21 +21,24 @@   * @file    drivers/ginput/touch/MCU/ginput_lld_mouse_config.h
   * @brief   GINPUT LLD header file for touch driver.
   *
 - * @addtogroup GINPUT_LLD_MOUSE
 + * @defgroup Mouse Mouse
 + * @ingroup GINPUT
 + *
   * @{
   */
 +
  #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		10
 +#define GINPUT_MOUSE_MAX_CALIBRATION_ERROR		12
  #define GINPUT_MOUSE_READ_CYCLES				4
 -#define GINPUT_MOUSE_POLL_PERIOD				100
 -#define GINPUT_MOUSE_MAX_CLICK_JITTER			4
 -#define GINPUT_MOUSE_MAX_MOVE_JITTER			4
 -#define GINPUT_MOUSE_CLICK_TIME					700
 +#define GINPUT_MOUSE_POLL_PERIOD				25
 +#define GINPUT_MOUSE_MAX_CLICK_JITTER			2
 +#define GINPUT_MOUSE_MAX_MOVE_JITTER			2
 +#define GINPUT_MOUSE_CLICK_TIME					500
  #endif /* _LLD_GINPUT_MOUSE_CONFIG_H */
  /** @} */
 diff --git a/drivers/ginput/touch/XPT2046/ginput_lld.mk b/drivers/ginput/touch/XPT2046/ginput_lld.mk deleted file mode 100644 index c513d54c..00000000 --- a/drivers/ginput/touch/XPT2046/ginput_lld.mk +++ /dev/null @@ -1,5 +0,0 @@ -# List the required driver.
 -GFXSRC += $(GFXLIB)/drivers/ginput/touch/XPT2046/ginput_lld_mouse.c
 -
 -# Required include directories
 -GFXINC += $(GFXLIB)/drivers/ginput/touchXPT20466
 diff --git a/drivers/ginput/touch/XPT2046/ginput_lld_mouse.c b/drivers/ginput/touch/XPT2046/ginput_lld_mouse.c deleted file mode 100644 index 9fb35c9b..00000000 --- a/drivers/ginput/touch/XPT2046/ginput_lld_mouse.c +++ /dev/null @@ -1,141 +0,0 @@ -/*
 -    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/XPT2046/ginput_lld_mouse.c
 - * @brief   GINPUT Touch low level driver source for the XPT2046.
 - *
 - * @addtogroup GINPUT_MOUSE
 - * @{
 - */
 -
 -#include "ch.h"
 -#include "hal.h"
 -#include "gfx.h"
 -
 -#if (GFX_USE_GINPUT && GINPUT_NEED_MOUSE) /*|| defined(__DOXYGEN__)*/
 -
 -#include "ginput/lld/mouse.h"
 -
 -#if defined(GINPUT_MOUSE_USE_CUSTOM_BOARD) && GINPUT_MOUSE_USE_CUSTOM_BOARD
 -	#include "ginput_lld_mouse_board.h"
 -#elif defined(BOARD_FIREBULL_STM32_F103)
 -	#include "ginput_lld_mouse_board_firebull_stm32f103.h"
 -#else
 -	#include "ginput_lld_mouse_board_example.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) {
 -	uint16_t i;
 -
 -	// 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 */
 -/** @} */
 diff --git a/drivers/ginput/touch/XPT2046/ginput_lld_mouse_board_example.h b/drivers/ginput/touch/XPT2046/ginput_lld_mouse_board_example.h deleted file mode 100644 index 8c11c96e..00000000 --- a/drivers/ginput/touch/XPT2046/ginput_lld_mouse_board_example.h +++ /dev/null @@ -1,87 +0,0 @@ -/*
 -    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/XPT2046/ginput_lld_mouse_board_example.h
 - * @brief   GINPUT Touch low level driver source for the XPT2046 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 "ginputXPT2046: 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 "ginputXPT2046: 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 "ginputXPT2046: 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 "ginputXPT2046: 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 "ginputXPT2046: You must supply a definition for read_value for your board"
 -}
 -
 -#endif /* _GINPUT_LLD_MOUSE_BOARD_H */
 -/** @} */
 diff --git a/drivers/ginput/touch/XPT2046/ginput_lld_mouse_config.h b/drivers/ginput/touch/XPT2046/ginput_lld_mouse_config.h deleted file mode 100644 index 880c6a60..00000000 --- a/drivers/ginput/touch/XPT2046/ginput_lld_mouse_config.h +++ /dev/null @@ -1,41 +0,0 @@ -/*
 -    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/XPT2046/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		5
 -#define GINPUT_MOUSE_READ_CYCLES				4
 -#define GINPUT_MOUSE_POLL_PERIOD				25
 -#define GINPUT_MOUSE_MAX_CLICK_JITTER			10
 -#define GINPUT_MOUSE_MAX_MOVE_JITTER			2
 -#define GINPUT_MOUSE_CLICK_TIME					500
 -
 -#endif /* _LLD_GINPUT_MOUSE_CONFIG_H */
 -/** @} */
 diff --git a/drivers/ginput/touch/XPT2046/readme.txt b/drivers/ginput/touch/XPT2046/readme.txt deleted file mode 100644 index 22921c1a..00000000 --- a/drivers/ginput/touch/XPT2046/readme.txt +++ /dev/null @@ -1,9 +0,0 @@ -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/XPT2046/ginput_lld.mk
 -
 diff --git a/drivers/multiple/Win32/ginput_lld_mouse_config.h b/drivers/multiple/Win32/ginput_lld_mouse_config.h index 2e740af8..ceeedcb9 100644 --- a/drivers/multiple/Win32/ginput_lld_mouse_config.h +++ b/drivers/multiple/Win32/ginput_lld_mouse_config.h @@ -21,9 +21,12 @@   * @file    drivers/multiple/Win32/ginput_lld_mouse_config.h
   * @brief   GINPUT LLD header file for mouse/touch driver.
   *
 - * @addtogroup GINPUT_LLD_MOUSE
 + * @defgroup Mouse Mouse
 + * @ingroup GINPUT
 + *
   * @{
   */
 +
  #ifndef _LLD_GINPUT_MOUSE_CONFIG_H
  #define _LLD_GINPUT_MOUSE_CONFIG_H
 @@ -56,3 +59,4 @@  #endif /* _LLD_GINPUT_MOUSE_CONFIG_H */
  /** @} */
 +
 diff --git a/drivers/multiple/Win32/ginput_lld_toggle_config.h b/drivers/multiple/Win32/ginput_lld_toggle_config.h index 58e47260..84ebaaa2 100644 --- a/drivers/multiple/Win32/ginput_lld_toggle_config.h +++ b/drivers/multiple/Win32/ginput_lld_toggle_config.h @@ -22,7 +22,9 @@   * @file    drivers/multiple/Win32/ginput_lld_toggle_config.h
   * @brief   GINPUT Toggle Driver configuration header.
   *
 - * @addtogroup GINPUT_TOGGLE
 + * @defgroup Toggle Toggle
 + * @ingroup GINPUT
 + *
   * @{
   */
 @@ -49,3 +51,4 @@  #endif	/* _GINPUT_LLD_TOGGLE_CONFIG_H */
  /** @} */
 +
 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 <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/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 <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/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 <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/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 <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/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 <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/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 <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/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 */
 -/** @} */
 -
 diff --git a/gfxconf.example.h b/gfxconf.example.h index 8cbaea05..7bcdab43 100644 --- a/gfxconf.example.h +++ b/gfxconf.example.h @@ -80,3 +80,4 @@  */
  #endif /* _GFXCONF_H */
 +
 diff --git a/include/gdisp/gdisp.h b/include/gdisp/gdisp.h index 117f865a..f8d5745f 100644 --- a/include/gdisp/gdisp.h +++ b/include/gdisp/gdisp.h @@ -23,6 +23,11 @@   * @brief   GDISP Graphic Driver subsystem header file.
   *
   * @addtogroup GDISP
 + *
 + * @details		The GDISP module provides high level abstraction to interface pixel oriented graphic displays.
 + *
 + * @pre			GFX_USE_GDISP must be set to TRUE in gfxconf.h
 + *
   * @{
   */
 diff --git a/include/gdisp/lld/gdisp_lld_msgs.h b/include/gdisp/lld/gdisp_lld_msgs.h index 31a82237..6fe78567 100644 --- a/include/gdisp/lld/gdisp_lld_msgs.h +++ b/include/gdisp/lld/gdisp_lld_msgs.h @@ -19,7 +19,7 @@  */
  /**
 - * @file    include/lld/gdisp/gdisp_lld_msgs.h
 + * @file	include/gdisp/lld/gdisp_lld_msgs.h
   * @brief   GDISP Graphic Driver subsystem low level driver message structures.
   *
   * @addtogroup GDISP
 diff --git a/include/gevent/gevent.h b/include/gevent/gevent.h index a68a5fc0..67a6185a 100644 --- a/include/gevent/gevent.h +++ b/include/gevent/gevent.h @@ -22,6 +22,12 @@   * @brief   GEVENT GFX User Event subsystem header file.
   *
   * @addtogroup GEVENT
 + *
 + * @details		GEVENT provides a simple to use but yet powerful event
 + *				system.
 + *
 + * @pre			GFX_USE_GEVENT must be set to TRUE in your gfxconf.h
 + *
   * @{
   */
  #ifndef _GEVENT_H
 @@ -31,13 +37,9 @@  #if GFX_USE_GEVENT || defined(__DOXYGEN__)
 -/**
 - * @brief   Data part of a static GListener initializer.
 - */
 +/* Data part of a static GListener initializer */
  #define _GLISTENER_DATA(name) { _SEMAPHORE_DATA(name.waitqueue, 0), _BSEMAPHORE_DATA(name.eventlock, FALSE), 0, 0, {0} }
 -/**
 - * @brief   Static GListener initializer.
 - */
 +/* Static GListener initializer */
  #define GLISTENER_DECL(name) GListener name = _GLISTENER_DATA(name)
  /*===========================================================================*/
 @@ -120,79 +122,118 @@ extern "C" {  /*---------- Listener Functions --------------------------------------------*/
 -/* Initialise a Listener.
 +/**
 + * @brief	Create a Listener
 + * @details	If insufficient resources are available it will either assert or return NULL
 + *			depending on the value of GEVENT_ASSERT_NO_RESOURCE.
 + *
 + * @param[in] pl	A listener
   */
  void geventListenerInit(GListener *pl);
 -/* Attach a source to a listener.
 - *	Flags are interpreted by the source when generating events for each listener.
 - *	If this source is already assigned to the listener it will update the flags.
 - *	If insufficient resources are available it will either assert or return FALSE
 - *	depending on the value of GEVENT_ASSERT_NO_RESOURCE.
 +/**
 + * @brief 	Attach a source to a listener
 + * @details	Flags are interpreted by the source when generating events for each listener.
 + *			If this source is already assigned to the listener it will update the flags.
 + *			If insufficient resources are available it will either assert or return FALSE
 + *			depending on the value of GEVENT_ASSERT_NO_RESOURCE.
 + *
 + * @param[in] pl	The listener
 + * @param[in] gsh	The source which has to be attached to the listener
 + * @param[in] flags	The flags
 + *
 + * @return TRUE if succeeded, FALSE otherwise
   */
  bool_t geventAttachSource(GListener *pl, GSourceHandle gsh, unsigned flags);
 -/* Detach a source from a listener
 - *	If gsh is NULL detach all sources from this listener and if there is still
 - *		a thread waiting for events on this listener, it is sent the exit event.
 +/**
 + * @brief	Detach a source from a listener
 + * @details	If gsh is NULL detach all sources from this listener and if there is still
 + *			a thread waiting for events on this listener, it is sent the exit event.
 + *
 + * @param[in] pl	The listener
 + * @param[in] gsh	The source
   */
  void geventDetachSource(GListener *pl, GSourceHandle gsh);
 -/* Wait for an event on a listener from an assigned source.
 - *		The type of the event should be checked (pevent->type) and then pevent should be typecast to the
 - *		actual event type if it needs to be processed.
 - * timeout specifies the time to wait in system ticks.
 - *		TIME_INFINITE means no timeout - wait forever for an event.
 - *		TIME_IMMEDIATE means return immediately
 - * Returns NULL on timeout or if a callback function is already registered.
 - * Note: The GEvent buffer is staticly allocated within the GListener so the event does not
 +/**
 + * @brief	Wait for an event on a listener from an assigned source.
 + * @details	The type of the event should be checked (pevent->type) and then pevent should
 + *			be typecast to the actual event type if it needs to be processed.
 + * 			timeout specifies the time to wait in system ticks.
 + *			TIME_INFINITE means no timeout - wait forever for an event.
 + *			TIME_IMMEDIATE means return immediately
 + * @note	The GEvent buffer is staticly allocated within the GListener so the event does not
   *			need to be dynamicly freed however it will get overwritten by the next call to
   *			this routine.
 + *
 + * @param[in] pl		The listener
 + * @param[in] timeout	The timeout
 + *
 + * @return	NULL on timeout
   */
  GEvent *geventEventWait(GListener *pl, systime_t timeout);
 -/* Register a callback for an event on a listener from an assigned source.
 - *		The type of the event should be checked (pevent->type) and then pevent should be typecast to the
 - *		actual event type if it needs to be processed.
 - * Note: The GEvent buffer is valid only during the time of the callback. The callback MUST NOT save
 - * 		a pointer to the buffer for use outside the callback.
 - * Note: An existing callback function is de-registered by passing a NULL for 'fn'. Any existing
 - * 		callback function is replaced. Any thread currently waiting using geventEventWait will be sent the exit event.
 - * Note: Callbacks occur in a thread context but stack space must be kept to a minumum and
 - * 		the callback must process quickly as all other events are performed on a single thread.
 - * Note: In the callback function you should never call ANY event functions using your own GListener handle
 - * 		as it WILL create a deadlock and lock the system up.
 - * Note: Applications should not use this call - geventEventWait() is the preferred mechanism for an
 - * 		application. This call is provided for GUI objects that may not have their own thread.
 +/* @brief	Register a callback for an event on a listener from an assigned source.
 + * @details	The type of the event should be checked (pevent->type) and then pevent should be typecast to the
 + *			actual event type if it needs to be processed.
 + *
 + * @params[in] pl		The Listener
 + * @params[in] fn		The function to call back
 + * @params[in] param	A parameter to pass the callback function
 + *
 + * @note	The GEvent buffer is valid only during the time of the callback. The callback MUST NOT save
 + * 			a pointer to the buffer for use outside the callback.
 + * @note	An existing callback function is de-registered by passing a NULL for 'fn'. Any existing
 + * 			callback function is replaced. Any thread currently waiting using geventEventWait will be sent the exit event.
 + * @note	Callbacks occur in a thread context but stack space must be kept to a minumum and
 + * 			the callback must process quickly as all other events are performed on a single thread.
 + * @note	In the callback function you should never call ANY event functions using your own GListener handle
 + * 			as it WILL create a deadlock and lock the system up.
 + * @note	Applications should not use this call - geventEventWait() is the preferred mechanism for an
 + * 			application. This call is provided for GUI objects that may not have their own thread.
   */
  void geventRegisterCallback(GListener *pl, GEventCallbackFn fn, void *param);
  /*---------- Source Functions --------------------------------------------*/
 -/* Sources create their own GSourceHandles which are pointers to any arbitrary structure
 -	typecast to a GSourceHandle.
 -*/
 -
 -/* Called by a source with a possible event to get a listener record.
 - *	'lastlr' should be NULL on the first call and thereafter the result of the previous call.
 - *	It will return NULL when there are no more listeners for this source.
 +/**
 + * @brief	Called by a source with a possible event to get a listener record.
 + * @details	@p lastlr should be NULL on the first call and thereafter the result of the previous call.
 + *
 + * @param[in] gsh		The source handler
 + * @param[in] lastlr	The source listener
 + *
 + * @return	NULL when there are no more listeners for this source
   */
  GSourceListener *geventGetSourceListener(GSourceHandle gsh, GSourceListener *lastlr);
 -/* Get the event buffer from the GSourceListener.
 - *	Returns NULL if the listener is not currently listening.
 - *	A NULL return allows the source to record (perhaps in glr->scrflags) that the listener has missed events.
 - *	This can then be notified as part of the next event for the listener.
 - *	The buffer can only be accessed untill the next call to geventGetSourceListener or geventSendEvent
 +/**
 + * @brief	Get the event buffer from the GSourceListener.
 + * @details	A NULL return allows the source to record (perhaps in glr->scrflags) that the listener
 + *			has missed events. This can then be notified as part of the next event for the listener.
 + *			The buffer can only be accessed untill the next call to geventGetSourceListener
 + *			or geventSendEvent
 + *
 + * @param[in] psl	The source listener
 + *
 + * @return	NULL if the listener is not currently listening.
   */
  GEvent *geventGetEventBuffer(GSourceListener *psl);
 -/* Called by a source to indicate the listener's event buffer has been filled.
 - *	After calling this function the source must not reference in fields in the GSourceListener or the event buffer.
 +/** 
 + * @brief	Called by a source to indicate the listener's event buffer has been filled.
 + * @details	After calling this function the source must not reference in fields in the GSourceListener or the event buffer.
 + *
 + * @param[in] psl	The source listener
   */
  void geventSendEvent(GSourceListener *psl);
 -/* Detach any listener that has this source attached */
 +/**
 + * @brief	Detach any listener that has this source attached
 + *
 + * @param[in] gsh	The source handle
 + */
  void geventDetachSourceListeners(GSourceHandle gsh);
  #ifdef __cplusplus
 @@ -203,3 +244,4 @@ void geventDetachSourceListeners(GSourceHandle gsh);  #endif /* _GEVENT_H */
  /** @} */
 +
 diff --git a/include/ginput/dial.h b/include/ginput/dial.h index 90db94ac..5679685e 100644 --- a/include/ginput/dial.h +++ b/include/ginput/dial.h @@ -21,7 +21,15 @@   * @file    include/ginput/dial.h
   * @brief   GINPUT GFX User Input subsystem header file.
   *
 - * @addtogroup GINPUT
 + * @defgroup Dial Dial
 + * @ingroup GINPUT
 + *
 + * @details	A dial provides a powerful way to navigate through menus
 + *			on a display. 
 + *
 + * @pre		GFX_USE_GINPUT must be set to TRUE in your gfxconf.h
 + * @pre		GINPUT_NEED_DIAL must be set to TRUE in your gfxconf.h
 + *
   * @{
   */
  #ifndef _GINPUT_DIAL_H
 @@ -50,15 +58,58 @@ typedef struct GEventDial_t {  extern "C" {
  #endif
 -	/* Dial Functions */
 -	GSourceHandle ginputGetDial(uint16_t instance);						// Instance = 0 to n-1
 -	void ginputResetDialRange(uint16_t instance);						// Reset the maximum value back to the hardware default.
 -	uint16_t ginputGetDialRange(uint16_t instance);						// Get the maximum value. The readings are scaled to be 0...max-1. 0 means over the full uint16_t range.
 -	void ginputSetDialRange(uint16_t instance, uint16_t max);			// Set the maximum value.
 -	void ginputSetDialSensitivity(uint16_t instance, uint16_t diff);	// Set the level change required before a dial event is generated.
 -																		//		- This is done after range scaling
 -	/* Get the current keyboard button status.
 -	 *	Returns FALSE on error (eg invalid instance)
 +	/**
 +	 * @brief	Create a dial input instance
 +	 *
 +	 * @param[in] instance	The ID of the dial input instance (from 0 to 9999)
 +	 *
 +	 * @return	The soure handle of the created dial instance
 +	 */
 +	GSourceHandle ginputGetDial(uint16_t instance);				
 +	
 +	/**
 +	 * @brief	Reset the value back to the hardware default
 +	 *
 +	 * @param[in] instance	The ID of the dial input instance
 +	 */
 +	void ginputResetDialRange(uint16_t instance);				
 +
 +	/**
 +	 * @brief	Get the maximum value
 +	 * @details	The readings are scaled to be 0 ... max-1.
 +	 *			0 means over the full uint16_t range.
 +	 *
 +	 * @param[in] instance	The ID of the dial input instance
 +	 *
 +	 * @return	The maximum value
 +	 */
 +	uint16_t ginputGetDialRange(uint16_t instance);
 +
 +	/**
 +	 * @brief	Set the maximum value
 +	 * @note	This shouldn't be set higher that the hardwares possible maximum value
 +	 *
 +	 * @param[in] instance	The ID of the dial input instance
 +	 * @param[in] max		The maximum value to be set
 +	 */
 +	void ginputSetDialRange(uint16_t instance, uint16_t max);
 +
 +	/**
 +	 * @brief	Set the level change required before a dial even is generated (threshold)
 +	 * @note	This is done after range scaling
 +	 *
 +	 * @param[in] instance	The ID of the dial input instance
 +	 * @param[in] diff		The amount of level changes
 +	 */
 +	void ginputSetDialSensitivity(uint16_t instance, uint16_t diff);
 +																	
 +	/**
 +	 * @brief	Get the current dial status
 +	 *
 +	 * @param[in] instance	The ID of the dial input instance
 +	 * @param[in] pdial		The dial event struct
 +	 *
 +	 * @return	Returns FALSE on an error (eg invalid instance)
  	 */
  	bool_t ginputGetDialStatus(uint16_t instance, GEventDial *pdial);
 diff --git a/include/ginput/ginput.h b/include/ginput/ginput.h index ec8acca7..59f7640c 100644 --- a/include/ginput/ginput.h +++ b/include/ginput/ginput.h @@ -22,6 +22,12 @@   * @brief   GINPUT GFX User Input subsystem header file.
   *
   * @addtogroup GINPUT
 + *
 + * @details		GINPUT provides an easy and common interface to use different input devices
 + *				such as touchscreens and mices.
 + *
 + * @pre			GFX_USE_GINPUT must be set to TRUE in your gfxconf.h
 + *
   * @{
   */
  #ifndef _GINPUT_H
 diff --git a/include/ginput/keyboard.h b/include/ginput/keyboard.h index cbb11194..9f5df32e 100644 --- a/include/ginput/keyboard.h +++ b/include/ginput/keyboard.h @@ -21,9 +21,11 @@   * @file    include/ginput/keyboard.h
   * @brief   GINPUT GFX User Input subsystem header file.
   *
 - * @addtogroup GINPUT
 + * @defgroup Keyboard Keyboard
 + * @ingroup GINPUT
   * @{
   */
 +
  #ifndef _GINPUT_KEYBOARD_H
  #define _GINPUT_KEYBOARD_H
 @@ -108,11 +110,22 @@ typedef struct GEventKeyboard_t {  extern "C" {
  #endif
 -	/* Keyboard Functions */
 -	GSourceHandle ginputGetKeyboard(uint16_t instance);					// Instance = 0 to n-1
 +	/**
 +	 * @brief	Create a keyboard input instance
 +	 *
 +	 * @param[in] instance	The ID of the keyboard input instance (from 0 to 9999)
 +	 *
 +	 * @return	The source handle of the created input instance
 +	 */
 +	GSourceHandle ginputGetKeyboard(uint16_t instance);
 -	/* Get the current keyboard button status.
 -	 *	Returns FALSE on error (eg invalid instance)
 +	/**
 +	 * @brief	Get the current keyboard status
 +	 *
 +	 * @param[in] instance	The ID of the keyboard input instance
 +	 * @param[in] pkeyboard	The keyboard event struct
 +	 *
 +	 * @return Returns FALSE on an error (eg invalid instance)
  	 */
  	bool_t ginputGetKeyboardStatus(uint16_t instance, GEventKeyboard *pkeyboard);
 @@ -124,3 +137,4 @@ extern "C" {  #endif /* _GINPUT_KEYBOARD_H */
  /** @} */
 +
 diff --git a/include/ginput/lld/mouse.h b/include/ginput/lld/mouse.h index 09a0fb6a..5f4ba52c 100644 --- a/include/ginput/lld/mouse.h +++ b/include/ginput/lld/mouse.h @@ -21,9 +21,11 @@   * @file    include/ginput/lld/mouse.h
   * @brief   GINPUT LLD header file for mouse/touch drivers.
   *
 - * @addtogroup GINPUT_MOUSE
 + * @defgroup Mouse Mouse
 + * @ingroup GINPUT
   * @{
   */
 +
  #ifndef _LLD_GINPUT_MOUSE_H
  #define _LLD_GINPUT_MOUSE_H
 @@ -116,3 +118,4 @@ extern "C" {  #endif /* _LLD_GINPUT_MOUSE_H */
  /** @} */
 +
 diff --git a/include/ginput/lld/toggle.h b/include/ginput/lld/toggle.h index 2b437ed9..a75a670f 100644 --- a/include/ginput/lld/toggle.h +++ b/include/ginput/lld/toggle.h @@ -21,9 +21,11 @@   * @file    include/ginput/lld/toggle.h
   * @brief   GINPUT header file for toggle drivers.
   *
 - * @addtogroup GINPUT_TOGGLE
 + * @defgroup Toggle Toggle
 + * @ingroup GINPUT
   * @{
   */
 +
  #ifndef _LLD_GINPUT_TOGGLE_H
  #define _LLD_GINPUT_TOGGLE_H
 @@ -68,3 +70,4 @@ extern "C" {  #endif /* _LLD_GINPUT_TOGGLE_H */
  /** @} */
 +
 diff --git a/include/ginput/mouse.h b/include/ginput/mouse.h index 0aaea77b..5385ff17 100644 --- a/include/ginput/mouse.h +++ b/include/ginput/mouse.h @@ -21,9 +21,18 @@   * @file    include/ginput/mouse.h
   * @brief   GINPUT GFX User Input subsystem header file for mouse and touch.
   *
 - * @addtogroup GINPUT
 + * @defgroup Mouse Mouse
 + * @ingroup GINPUT
 + *
 + * @details GINPUT allows it to easily interface touchscreens and mices to
 + *			your application.
 + *
 + * @pre		GFX_USE_GINPUT must be set to TRUE in your gfxconf.h
 + * @pre		GINPUT_NEED_MOUSE must be set to TRUE in your gfxconf.h
 + * 
   * @{
   */
 +
  #ifndef _GINPUT_MOUSE_H
  #define _GINPUT_MOUSE_H
 @@ -85,17 +94,34 @@ typedef struct GEventMouse_t {  extern "C" {
  #endif
 -	/* Mouse Functions */
 -	GSourceHandle ginputGetMouse(uint16_t instance);					// Instance = 0 to n-1
 +	/**
 +	 * @brief	Creates an instance of a mouse and returns the Source handler
 +	 * @note	hack: if the instance is 9999, no calibration will be performed!
 +	 *
 +	 * @param[in] instance		The ID of the mouse input instance (from 0 to 9999)
 +	 *
 +	 * @return		The source handle of the created instance
 +	 */
 +	GSourceHandle ginputGetMouse(uint16_t instance);
 -	/* Get the current mouse position and button status.
 -	 *	Unlike a listener event, this status cannot record meta events such as "CLICK"
 -	 *	Returns FALSE on error (eg invalid instance)
 +	/**
 +	 * @brief	Get the current mouse position and button status
 +	 * @note	Unlinke a listener event, this status cannot record meta events such as
 +	 *			"CLICK".
 +	 *
 +	 * @param[in] instance	The ID of the mouse input instance
 +	 * @param[in] pmouse	The mouse event
 +	 *
 +	 * @return	FALSE on an error (eg. invalid instance)
  	 */
  	bool_t ginputGetMouseStatus(uint16_t instance, GEventMouse *pmouse);
 -	/* Run a calibration.
 -	 *	Returns FALSE if the driver doesn't support it or if the handle is invalid.
 +	/**
 +	 * @brief	Performs a calibration
 +	 *
 +	 * @param[in] instance	The ID of the mouse input instance
 +	 *
 +	 * @return	FALSE if the driver dosen't support a calibration of if the handle is invalid
  	 */
  	bool_t ginputCalibrateMouse(uint16_t instance);
 @@ -107,9 +133,31 @@ extern "C" {  	 */
  	typedef void (*GMouseCalibrationSaveRoutine)(uint16_t instance, const uint8_t *calbuf, size_t sz);			// Save calibration data
  	typedef const char * (*GMouseCalibrationLoadRoutine)(uint16_t instance);									// Load calibration data (returns NULL if not data saved)
 +
 +	/**
 +	 * @brief	Set the routines to store and restore calibration data
 +	 *
 +	 * @details	This function should be called before first calling ginputGetMouse() for a particular instance
 +	 *			as the gdispGetMouse() routine may attempt to fetch calibration data and perform a startup calibration if there is no way to get it.
 +	 *			If this is called after gdispGetMouse() has been called and the driver requires calibration storage, it will immediately save the
 +	 *			data is has already obtained.
 + 	 * 			The 'requireFree' parameter indicates if the fetch buffer must be free()'d to deallocate the buffer provided by the Fetch routine.
 +	 *
 +	 * @param[in] instance		The ID of the mouse input instance
 +	 * @param[in] fnsave		The routine to save the data
 +	 * @param[in] fnload		The routine to restore the data
 +	 * @param[in] requireFree	ToDo
 +	 */	
  	void ginputSetMouseCalibrationRoutines(uint16_t instance, GMouseCalibrationSaveRoutine fnsave, GMouseCalibrationLoadRoutine fnload, bool_t requireFree);
 -	/* Test if a particular mouse/touch instance requires routines to save its calibration data. */
 +	/**
 +	 * @brief	Test if a particular mouse/touch instance requires routines to save it's alibration data
 +	 * @note	Not implemented yet
 +	 *
 +	 * @param[in] instance		The ID of the mouse input instance
 +	 *
 +	 * @return	TRUE if needed
 +	 */
  	bool_t ginputRequireMouseCalibrationStorage(uint16_t instance);
  #ifdef __cplusplus
 @@ -120,3 +168,4 @@ extern "C" {  #endif /* _GINPUT_MOUSE_H */
  /** @} */
 +
 diff --git a/include/ginput/toggle.h b/include/ginput/toggle.h index f0bbf203..bec4ed32 100644 --- a/include/ginput/toggle.h +++ b/include/ginput/toggle.h @@ -21,9 +21,18 @@   * @file    include/ginput/toggle.h
   * @brief   GINPUT GFX User Input subsystem header file.
   *
 - * @addtogroup GINPUT
 + * @defgroup Toggle Toggle
 + * @ingroup GINPUT
 + *
 + * @details	GINPUT allows it to interface toggle buttons easily to your
 + *			application.
 + *
 + * @pre		GFX_USE_GINPUT must be set to TRUE in your gfxconf.h
 + * @pre		GINPUT_NEED_TOGGLE must be set to TRUE in your gfxconf.h
 + *
   * @{
   */
 +
  #ifndef _GINPUT_TOGGLE_H
  #define _GINPUT_TOGGLE_H
 @@ -65,12 +74,30 @@ typedef struct GEventToggle_t {  extern "C" {
  #endif
 -	/* Hardware Toggle/Switch/Button Functions */
 -	GSourceHandle ginputGetToggle(uint16_t instance);					// Instance = 0 to n-1
 -	void ginputInvertToggle(uint16_t instance, bool_t invert);			// If invert is true, invert the on/off sense for the toggle
 +	/**
 +	 * @brief	Create a toggle input instance
 +	 *
 +	 * @param[in] instance	The ID of the toggle input instance (from 0 to 9999)
 +	 *
 +	 * @return	The source handle of the created instance
 +	 */
 +	GSourceHandle ginputGetToggle(uint16_t instance);	
 -	/* Get the current toggle status.
 -	 *	Returns FALSE on error (eg invalid instance)
 +	/** 
 +	 * @brief	Can be used to invert the sense of a toggle
 +	 *
 +	 * @param[in] instance	The ID of the toggle input instance
 +	 * @param[in] invert	If TRUE, will be inverted
 +	 */
 +	void ginputInvertToggle(uint16_t instance, bool_t invert);
 +
 +	/**
 +	 * @brief	Get the current toggle status
 +	 *
 +	 * @param[in] instance	The ID of the toggle input instance
 +	 * @param[in] ptoggle	The toggle event struct
 +	 *
 +	 * @return Returns FALSE on an error (eg invalid instance)
  	 */
  	bool_t ginputGetToggleStatus(uint16_t instance, GEventToggle *ptoggle);
 @@ -82,3 +109,4 @@ extern "C" {  #endif /* _GINPUT_TOGGLE_H */
  /** @} */
 +
 diff --git a/include/gtimer/gtimer.h b/include/gtimer/gtimer.h index 623120dc..95ab6ba7 100644 --- a/include/gtimer/gtimer.h +++ b/include/gtimer/gtimer.h @@ -22,8 +22,21 @@   * @brief   GTIMER GFX User Timer subsystem header file.
   *
   * @addtogroup GTIMER
 + *
 + * @details	The reason why ChibiOS/GFX has it's own timer abstraction is because
 + *			virtual timers provided by ChibiOS/RT are interrupt context only.
 + *			While great for what they are designed for, they make coding of the input
 + *			drivers much more complex.
 + *			For non-performance critical drivers like these input drivers,  it would also
 + *			hog an in-ordinate amount of critical (interrupt locked) system time.
 + *			This contrary to the goals of a real-time operating system. So a user-land
 + *			(thread based) timer mechanism is also required.
 + *
 + * @pre		GFX_USE_GTIMER must be set to TRUE in your gfxconf.h
 + *
   * @{
   */
 +
  #ifndef _GTIMER_H
  #define _GTIMER_H
 @@ -35,19 +48,13 @@  /* Type definitions                                                          */
  /*===========================================================================*/
 -/**
 - * @brief   Data part of a static GTimer initializer.
 - */
 +/* Data part of a static GTimer initialiser */
  #define _GTIMER_DATA() {0,0,0,0,0,0,0}
 -/**
 - * @brief   Static GTimer initializer.
 - */
 +/* Static GTimer initialiser */
  #define GTIMER_DECL(name) GTimer name = _GTIMER_DATA()
 -/**
 - * @brief   A callback function (executed in a thread context).
 - */
 +/* A callback function (executed in a thread context) */
  typedef void (*GTimerFunction)(void *param);
  /**
 @@ -61,7 +68,7 @@ typedef struct GTimer_t {  	uint16_t			flags;
  	struct GTimer_t		*next;
  	struct GTimer_t		*prev;
 -	} GTimer;
 +} GTimer;
  /*===========================================================================*/
  /* External declarations.                                                    */
 @@ -71,11 +78,97 @@ typedef struct GTimer_t {  extern "C" {
  #endif
 +/**
 + * @brief   Initialise a timer.
 + *
 + * @param[in] pt 	pointer to a GTimer structure
 + *
 + * @api
 + */
  void gtimerInit(GTimer *pt);
 +
 +/**
 + * @brief   Set a timer going or alter its properties if it is already going.
 + *
 + * @param[in] pt	Pointer to a GTimer structure
 + * @param[in] fn		The callback function
 + * @param[in] param		The parameter to pass to the callback function
 + * @param[in] periodic	Is the timer a periodic timer? FALSE is a once-only timer.
 + * @param[in] millisec	The timer period. The following special values are allowed:
 + *							TIME_IMMEDIATE	causes the callback function to be called asap.
 + *											A periodic timer with this value will fire once only.
 + *							TIME_INFINITE	never timeout (unless triggered by gtimerJab or gtimerJabI)
 + *
 + * @note				If the timer is already active its properties are updated with the new parameters.
 + *						The current period will be immediately canceled (without the callback function being
 + *						called) and the timer will be restart with the new timer properties.
 + * @note				The callback function should be careful not to over-run the thread stack.
 + *						Define a new value for the macro GTIME_THREAD_STACK_SIZE if you want to
 + *						change the default size.
 + * @note				The callback function should return as quickly as possible as all
 + *						timer callbacks are performed by a single thread. If a callback function
 + *						takes too long it could affect the timer response for other timers.
 + * @note				A timer callback function is not a replacement for a dedicated thread if the
 + *						function wants to perform computationally expensive stuff.
 + * @note				As the callback function is called on GTIMER's thread, the function must make sure it uses
 + *						appropriate synchronisation controls such as semaphores or mutexes around any data
 + *						structures it shares with other threads such as the main application thread.
 + *
 + * @api
 + */
  void gtimerStart(GTimer *pt, GTimerFunction fn, void *param, bool_t periodic, systime_t millisec);
 +
 +/**
 + * @brief   Stop a timer (periodic or otherwise)
 + *
 + * @param[in] pt		Pointer to a GTimer structure
 + *
 + * @note				If the timer is not active this does nothing.
 + *
 + * @api
 + */
  void gtimerStop(GTimer *pt);
 +
 +/**
 + * @brief   Test if a timer is currently active
 + *
 + * @param[in] pt		Pointer to a GTimer structure
 + *
 + * @return	TRUE if active, FALSE otherwise
 + *
 + * @api
 + */
  bool_t gtimerIsActive(GTimer *pt);
 +
 +/**
 + * @brief   			Jab a timer causing the current period to immediate expire
 + * @details				The callback function will be called as soon as possible.
 + *
 + * @pre					Use from a normal thread context.
 + *
 + * @param[in] pt		Pointer to a GTimer structure
 + *
 + * @note				If the timer is not active this does nothing.
 + * @note				Repeated Jabs before the callback function actually happens are ignored.
 + *
 + * @api
 + */
  void gtimerJab(GTimer *pt);
 +
 +/**
 + * @brief   			Jab a timer causing the current period to immediate expire
 + * @details				The callback function will be called as soon as possible.
 + *
 + * @pre					Use from an interrupt routine context.
 + *
 + * @param[in] pt		Pointer to a GTimer structure
 + *
 + * @note				If the timer is not active this does nothing.
 + * @note				Repeated Jabs before the callback function actually happens are ignored.
 + *
 + * @iclass
 + * @api
 + */
  void gtimerJabI(GTimer *pt);
  #ifdef __cplusplus
 diff --git a/include/gwin/button.h b/include/gwin/button.h index 6fc564c7..698c840a 100644 --- a/include/gwin/button.h +++ b/include/gwin/button.h @@ -21,9 +21,18 @@   * @file    include/gwin/button.h
   * @brief   GWIN Graphic window subsystem header file.
   *
 - * @addtogroup GWIN
 + * @defgroup Button Button
 + * @ingroup GWIN
 + *
 + * @details		GWIN allows it to easily create buttons with different styles
 + *				and check for different meta states such as: PRESSED, CLICKED,
 + *				RELEASED etc.
 + *
 + * @pre			GFX_USE_GWIN must be set to TRUE in your gfxconf.h
 + * @pre			GWIN_NEED_BUTTON must be set to TRUE in your gfxconf.h
   * @{
   */
 +
  #ifndef _GWIN_BUTTON_H
  #define _GWIN_BUTTON_H
 diff --git a/include/gwin/console.h b/include/gwin/console.h index 4e78d747..9fa867c8 100644 --- a/include/gwin/console.h +++ b/include/gwin/console.h @@ -21,9 +21,18 @@   * @file    include/gwin/console.h
   * @brief   GWIN Graphic window subsystem header file.
   *
 - * @addtogroup GWIN
 + * @defgroup Console Console
 + * @ingroup GWIN
 + *
 + * @details		GWIN allows it to create a console/terminal like window.
 + *				You can simply use chprintf() to print to the terminal.
 + *
 + * @pre			GFX_USE_GWIN must be set to TRUE in your gfxconf.h
 + * @pre			GWIN_NEED_CONSOLE must be set to TRUE in your gfxconf.h
 + *
   * @{
   */
 +
  #ifndef _GWIN_CONSOLE_H
  #define _GWIN_CONSOLE_H
 diff --git a/include/gwin/graph.h b/include/gwin/graph.h index 58c5fdee..155fd9a9 100644 --- a/include/gwin/graph.h +++ b/include/gwin/graph.h @@ -22,7 +22,13 @@   * @file	include/gwin/graph.h
   * @brief	GWIN GRAPH module header file.
   *
 - * @addtogroup GWIN_GRAPH
 + * @defgroup Graph Graph
 + * @ingroup GWIN
 + *
 + * @details	GWIN allows it to easily draw graphs.
 + * @pre		GFX_USE_GWIN must be set to TRUE in your gfxconf.h
 + * @pre		GWIN_NEED_GRAPH must be set to TRUE in your gfxconf.h
 + *
   * @{
   */
 diff --git a/include/gwin/gwin.h b/include/gwin/gwin.h index cca02d7e..e109dd83 100644 --- a/include/gwin/gwin.h +++ b/include/gwin/gwin.h @@ -21,9 +21,20 @@   * @file    include/gwin/gwin.h
   * @brief   GWIN Graphic window subsystem header file.
   *
 - * @addtogroup GWIN
 + * @defgroup Window Window
 + * @ingroup GWIN
 + *
 + * @details	GWIN provides a basic window manager which allows it to easily
 + *			create and destroy different windows on runtime. Each window
 + *			will have it's own properties such as colors, brushes as well as
 + *			it's own drawing origin.
 + *			Moving the windows around is not supported yet.
 + *
 + * @pre		GFX_USE_GWIN must be set to TRUE in your gfxconf.h
 + *
   * @{
   */
 +
  #ifndef _GWIN_H
  #define _GWIN_H
 diff --git a/include/gwin/options.h b/include/gwin/options.h index 899da5a4..e5e335bb 100644 --- a/include/gwin/options.h +++ b/include/gwin/options.h @@ -19,7 +19,7 @@  */
  /**
 - * @file    include/gwin_options.h
 + * @file    include/gwin/options.h
   * @brief   GWIN sub-system options header file.
   *
   * @addtogroup GWIN
 @@ -45,9 +45,9 @@  	 * @details	Defaults to FALSE
  	 * @note	To use chprintf() for printing in a console window you need to
  	 * 			include in your application source file...
 -	 * 				#include "chprintf.h"
 +	 * 			#include "chprintf.h"
  	 * 			Also in your makefile, as part of your list of C source files, include
 -	 * 			    ${CHIBIOS}/os/various/chprintf.c
 +	 * 			${CHIBIOS}/os/various/chprintf.c
  	 */
  	#ifndef GWIN_NEED_CONSOLE
  		#define GWIN_NEED_CONSOLE	FALSE
 diff --git a/releases.txt b/releases.txt index 20cab579..00015354 100644 --- a/releases.txt +++ b/releases.txt @@ -2,7 +2,7 @@  *** Releases                                                              ***
  *****************************************************************************
 -current stable: 1.4
 +current release: 1.5
  *** changes after 1.4 ***
 @@ -22,6 +22,8 @@ DEPRECATE:	graph deprecated - replaced with gwin functionality  DEPRECATE:	touchscreen deprecated - replaced with ginput functionality
  FEATURE:	Numerous documentation improvements
  FEATURE:	Added a number of module demo and test programs
 +DEPRECATE:	Remove of XPT2046 since full compatibility with ADS7843
 +
  *** changes after 1.3 ***
  FIX:		Nokia 6610 fix
 diff --git a/src/gdisp/fonts.c b/src/gdisp/fonts.c index e02dc3bd..59293359 100644 --- a/src/gdisp/fonts.c +++ b/src/gdisp/fonts.c @@ -737,7 +737,7 @@ static bool_t matchfont(const char *pattern, const char *name) {   * @details	The supplied name is matched against the font name. A '*' will replace 0 or more characters.
   * @return	Returns a font or NULL if no matching font could be found.
   *
 - * @params[in] name		The font name to find.
 + * @param[in] name		The font name to find.
   *
   * @note				Wildcard matching will match the shortest possible match.
   *
 @@ -756,7 +756,7 @@ font_t gdispOpenFont(const char *name) {  /**
   * @brief	Release a font after use.
   *
 - * @params[in] font		The font to release.
 + * @param[in] font		The font to release.
   *
   * @api
   */
 @@ -768,7 +768,7 @@ void gdispCloseFont(font_t font) {   * @brief	Get the name of the specified font.
   * @returns	The name of the font.
   *
 - * @params[in] font		The font to get the name for.
 + * @param[in] font		The font to get the name for.
   *
   * @api
   */
 diff --git a/src/gdisp/gdisp.c b/src/gdisp/gdisp.c index 1f37e107..48d00b95 100644 --- a/src/gdisp/gdisp.c +++ b/src/gdisp/gdisp.c @@ -19,7 +19,7 @@  */
  /**
 - * @file    src/gdisp.c
 + * @file    src/gdisp/gdisp.c
   * @brief   GDISP Driver code.
   *
   * @addtogroup GDISP
 diff --git a/src/gevent/gevent.c b/src/gevent/gevent.c index be3ad7df..f3d909f0 100644 --- a/src/gevent/gevent.c +++ b/src/gevent/gevent.c @@ -19,7 +19,7 @@  */
  /**
 - * @file    src/gevent.c
 + * @file    src/gevent/gevent.c
   * @brief   GEVENT Driver code.
   *
   * @addtogroup GEVENT
 @@ -61,13 +61,6 @@ static void deleteAssignments(GListener *pl, GSourceHandle gsh) {  	}
  }
 -/**
 - * @brief	Create a Listener
 - * @details	If insufficient resources are available it will either assert or return NULL
 - *			depending on the value of GEVENT_ASSERT_NO_RESOURCE.
 - *
 - * @param[in] pl	A listener
 - */
  void geventListenerInit(GListener *pl) {
  	chSemInit(&pl->waitqueue, 0);			// Next wait'er will block
  	chBSemInit(&pl->eventlock, FALSE);		// Only one thread at a time looking at the event buffer
 @@ -75,19 +68,6 @@ void geventListenerInit(GListener *pl) {  	pl->event.type = GEVENT_NULL;			// Always safety
  }
 -/**
 - * @brief 	Attach a source to a listener
 - * @details	Flags are interpreted by the source when generating events for each listener.
 - *			If this source is already assigned to the listener it will update the flags.
 - *			If insufficient resources are available it will either assert or return FALSE
 - *			depending on the value of GEVENT_ASSERT_NO_RESOURCE.
 - *
 - * @param[in] pl	The listener
 - * @param[in] gsh	The source which has to be attached to the listener
 - * @param[in] flags	The flags
 - *
 - * @return TRUE if succeeded, FALSE otherwise
 - */
  bool_t geventAttachSource(GListener *pl, GSourceHandle gsh, unsigned flags) {
  	GSourceListener *psl, *pslfree;
 @@ -127,14 +107,6 @@ bool_t geventAttachSource(GListener *pl, GSourceHandle gsh, unsigned flags) {  	return pslfree != 0;
  }
 -/**
 - * @brief	Detach a source from a listener
 - * @details	If gsh is NULL detach all sources from this listener and if there is still
 - *			a thread waiting for events on this listener, it is sent the exit event.
 - *
 - * @param[in] pl	The listener
 - * @param[in] gsh	The source
 - */
  void geventDetachSource(GListener *pl, GSourceHandle gsh) {
  	if (pl && gsh) {
  		chMtxLock(&geventMutex);
 @@ -149,47 +121,12 @@ void geventDetachSource(GListener *pl, GSourceHandle gsh) {  	}
  }
 -/**
 - * @brief	Wait for an event on a listener from an assigned source.
 - * @details	The type of the event should be checked (pevent->type) and then pevent should
 - *			be typecast to the actual event type if it needs to be processed.
 - * 			timeout specifies the time to wait in system ticks.
 - *			TIME_INFINITE means no timeout - wait forever for an event.
 - *			TIME_IMMEDIATE means return immediately
 - * @note	The GEvent buffer is staticly allocated within the GListener so the event does not
 - *			need to be dynamicly freed however it will get overwritten by the next call to
 - *			this routine.
 - *
 - * @param[in] pl		The listener
 - * @param[in] timeout	The timeout
 - *
 - * @return	NULL on timeout
 - */
  GEvent *geventEventWait(GListener *pl, systime_t timeout) {
  	if (pl->callback || chSemGetCounterI(&pl->waitqueue) < 0)
  		return 0;
  	return chSemWaitTimeout(&pl->waitqueue, timeout) == RDY_OK ? &pl->event : 0;
  }
 -/* @brief	Register a callback for an event on a listener from an assigned source.
 - * @details	The type of the event should be checked (pevent->type) and then pevent should be typecast to the
 - *			actual event type if it needs to be processed.
 - *
 - * @params[in] pl		The Listener
 - * @params[in] fn		The function to call back
 - * @params[in] param	A parameter to pass the callback function
 - *
 - * @note	The GEvent buffer is valid only during the time of the callback. The callback MUST NOT save
 - * 			a pointer to the buffer for use outside the callback.
 - * @note	An existing callback function is de-registered by passing a NULL for 'fn'. Any existing
 - * 			callback function is replaced. Any thread currently waiting using geventEventWait will be sent the exit event.
 - * @note	Callbacks occur in a thread context but stack space must be kept to a minumum and
 - * 			the callback must process quickly as all other events are performed on a single thread.
 - * @note	In the callback function you should never call ANY event functions using your own GListener handle
 - * 			as it WILL create a deadlock and lock the system up.
 - * @note	Applications should not use this call - geventEventWait() is the preferred mechanism for an
 - * 			application. This call is provided for GUI objects that may not have their own thread.
 - */
  void geventRegisterCallback(GListener *pl, GEventCallbackFn fn, void *param) {
  	if (pl) {
  		chMtxLock(&geventMutex);
 @@ -205,15 +142,6 @@ void geventRegisterCallback(GListener *pl, GEventCallbackFn fn, void *param) {  	}
  }
 -/**
 - * @brief	Called by a source with a possible event to get a listener record.
 - * @details	@p lastlr should be NULL on the first call and thereafter the result of the previous call.
 - *
 - * @param[in] gsh		The source handler
 - * @param[in] lastlr	The source listener
 - *
 - * @return	NULL when there are no more listeners for this source
 - */
  GSourceListener *geventGetSourceListener(GSourceHandle gsh, GSourceListener *lastlr) {
  	GSourceListener *psl;
 @@ -239,28 +167,11 @@ GSourceListener *geventGetSourceListener(GSourceHandle gsh, GSourceListener *las  	return 0;
  }
 -/**
 - * @brief	Get the event buffer from the GSourceListener.
 - * @details	A NULL return allows the source to record (perhaps in glr->scrflags) that the listener
 - *			has missed events. This can then be notified as part of the next event for the listener.
 - *			The buffer can only be accessed untill the next call to geventGetSourceListener
 - *			or geventSendEvent
 - *
 - * @param[in] psl	The source listener
 - *
 - * @return	NULL if the listener is not currently listening.
 - */
  GEvent *geventGetEventBuffer(GSourceListener *psl) {
  	// We already know we have the event lock
  	return &psl->pListener->callback || chSemGetCounterI(&psl->pListener->waitqueue) < 0 ? &psl->pListener->event : 0;
  }
 -/** 
 - * @brief	Called by a source to indicate the listener's event buffer has been filled.
 - * @details	After calling this function the source must not reference in fields in the GSourceListener or the event buffer.
 - *
 - * @param[in] psl	The source listener
 - */
  void geventSendEvent(GSourceListener *psl) {
  	chMtxLock(&geventMutex);
  	if (psl->pListener->callback) {				// This test needs to be taken inside the mutex
 @@ -276,11 +187,6 @@ void geventSendEvent(GSourceListener *psl) {  	}
  }
 -/**
 - * @brief	Detach any listener that has this source attached
 - *
 - * @param[in] gsh	The source handle
 - */
  void geventDetachSourceListeners(GSourceHandle gsh) {
  	chMtxLock(&geventMutex);
  	deleteAssignments(0, gsh);
 diff --git a/src/ginput/dial.c b/src/ginput/dial.c index 233daa08..a447d8bc 100644 --- a/src/ginput/dial.c +++ b/src/ginput/dial.c @@ -22,7 +22,8 @@   * @file    src/ginput/dial.c
   * @brief   GINPUT dial code.
   *
 - * @addtogroup GINPUT
 + * @defgroup Dial Dial
 + * @ingroup GINPUT
   * @{
   */
  #include "ch.h"
 diff --git a/src/ginput/keyboard.c b/src/ginput/keyboard.c index bd443e77..56ff5e8a 100644 --- a/src/ginput/keyboard.c +++ b/src/ginput/keyboard.c @@ -22,9 +22,12 @@   * @file    src/ginput/keyboard.c
   * @brief   GINPUT keyboard code.
   *
 - * @addtogroup GINPUT
 + * @defgroup Keyboard Keyboard
 + * @ingroup GINPUT
 + *
   * @{
   */
 +
  #include "ch.h"
  #include "hal.h"
  #include "gfx.h"
 diff --git a/src/ginput/mouse.c b/src/ginput/mouse.c index 5e762ef9..35a55bc5 100644 --- a/src/ginput/mouse.c +++ b/src/ginput/mouse.c @@ -22,7 +22,8 @@   * @file    src/ginput/mouse.c
   * @brief   GINPUT mouse/touch code.
   *
 - * @addtogroup GINPUT_MOUSE
 + * @defgroup Mouse Mouse
 + * @ingroup GINPUT
   * @{
   */
  #include "ch.h"
 @@ -322,7 +323,6 @@ static void MousePoll(void *param) {  	}
  }
 -/* Mouse Functions */
  GSourceHandle ginputGetMouse(uint16_t instance) {
  	#if GINPUT_MOUSE_NEED_CALIBRATION
  		Calibration		*pc;
 @@ -377,10 +377,6 @@ GSourceHandle ginputGetMouse(uint16_t instance) {  	return (GSourceHandle)&MouseConfig;
  }
 -/* Get the current mouse position and button status.
 - *	Unlike a listener event, this status cannot record meta events such as "CLICK"
 - *	Returns FALSE on error (eg invalid instance)
 - */
  bool_t ginputGetMouseStatus(uint16_t instance, GEventMouse *pe) {
  	if (instance || (MouseConfig.flags & (FLG_INIT_DONE|FLG_IN_CAL)) != FLG_INIT_DONE)
  		return FALSE;
 @@ -401,9 +397,6 @@ bool_t ginputGetMouseStatus(uint16_t instance, GEventMouse *pe) {  	return TRUE;
  }
 -/* Run a mouse calibration.
 - *	Returns FALSE if the driver doesn't support it or if the handle is invalid.
 - */
  bool_t ginputCalibrateMouse(uint16_t instance) {
  	#if !GINPUT_MOUSE_NEED_CALIBRATION
  		(void) instance;
 @@ -527,6 +520,7 @@ bool_t ginputCalibrateMouse(uint16_t instance) {  			MouseConfig.fnsavecal(instance, (const uint8_t *)&MouseConfig.caldata, sizeof(MouseConfig.caldata));
  			MouseConfig.flags |= FLG_CAL_SAVED;
  		}
 +	
  		return TRUE;
  	#endif
  }
 diff --git a/src/ginput/toggle.c b/src/ginput/toggle.c index 3b2e98bf..66021cd0 100644 --- a/src/ginput/toggle.c +++ b/src/ginput/toggle.c @@ -22,7 +22,8 @@   * @file    src/ginput/toggle.c
   * @brief   GINPUT toggle code.
   *
 - * @addtogroup GINPUT_TOGGLE
 + * @defgroup Toggle Toggle
 + * @ingroup GINPUT
   * @{
   */
  #include "ch.h"
 diff --git a/src/gtimer/gtimer.c b/src/gtimer/gtimer.c index 76c527f4..76dd57e2 100644 --- a/src/gtimer/gtimer.c +++ b/src/gtimer/gtimer.c @@ -43,7 +43,7 @@  /* Don't rework this macro to use a ternary operator - the gcc compiler stuffs it up */
  #define TimeIsWithin(x, start, end)	((end >= start && x >= start && x <= end) || (end < start && (x >= start || x <= end)))
 -// This mutex protects access to our tables
 +/* This mutex protects access to our tables */
  static MUTEX_DECL(mutex);
  static Thread 			*pThread = 0;
  static GTimer			*pTimerHead = 0;
 @@ -141,46 +141,10 @@ static msg_t GTimerThreadHandler(void *arg) {  	return 0;
  }
 -/**
 - * @brief   Initialise a timer.
 - *
 - * @param[in] pt 	pointer to a GTimer structure
 - *
 - * @api
 - */
  void gtimerInit(GTimer *pt) {
  	pt->flags = 0;
  }
 -/**
 - * @brief   Set a timer going or alter its properties if it is already going.
 - *
 - * @param[in] pt	Pointer to a GTimer structure
 - * @param[in] fn		The callback function
 - * @param[in] param		The parameter to pass to the callback function
 - * @param[in] periodic	Is the timer a periodic timer? FALSE is a once-only timer.
 - * @param[in] millisec	The timer period. The following special values are allowed:
 - *							TIME_IMMEDIATE	causes the callback function to be called asap.
 - *											A periodic timer with this value will fire once only.
 - *							TIME_INFINITE	never timeout (unless triggered by gtimerJab or gtimerJabI)
 - *
 - * @note				If the timer is already active its properties are updated with the new parameters.
 - *						The current period will be immediately canceled (without the callback function being
 - *						called) and the timer will be restart with the new timer properties.
 - * @note				The callback function should be careful not to over-run the thread stack.
 - *						Define a new value for the macro GTIME_THREAD_STACK_SIZE if you want to
 - *						change the default size.
 - * @note				The callback function should return as quickly as possible as all
 - *						timer callbacks are performed by a single thread. If a callback function
 - *						takes too long it could affect the timer response for other timers.
 - * @note				A timer callback function is not a replacement for a dedicated thread if the
 - *						function wants to perform computationally expensive stuff.
 - * @note				As the callback function is called on GTIMER's thread, the function must make sure it uses
 - *						appropriate synchronisation controls such as semaphores or mutexes around any data
 - *						structures it shares with other threads such as the main application thread.
 - *
 - * @api
 - */
  void gtimerStart(GTimer *pt, GTimerFunction fn, void *param, bool_t periodic, systime_t millisec) {
  	chMtxLock(&mutex);
 @@ -230,15 +194,6 @@ void gtimerStart(GTimer *pt, GTimerFunction fn, void *param, bool_t periodic, sy  	chMtxUnlock();
  }
 -/**
 - * @brief   Stop a timer (periodic or otherwise)
 - *
 - * @param[in] pt		Pointer to a GTimer structure
 - *
 - * @note				If the timer is not active this does nothing.
 - *
 - * @api
 - */
  void gtimerStop(GTimer *pt) {
  	chMtxLock(&mutex);
  	if (pt->flags & GTIMER_FLG_SCHEDULED) {
 @@ -257,32 +212,10 @@ void gtimerStop(GTimer *pt) {  	chMtxUnlock();
  }
 -/**
 - * @brief   Test if a timer is currently active
 - *
 - * @param[in] pt		Pointer to a GTimer structure
 - *
 - * @return	TRUE if active, FALSE otherwise
 - *
 - * @api
 - */
  bool_t gtimerIsActive(GTimer *pt) {
  	return (pt->flags & GTIMER_FLG_SCHEDULED) ? TRUE : FALSE;
  }
 -/**
 - * @brief   			Jab a timer causing the current period to immediate expire
 - * @details				The callback function will be called as soon as possible.
 - *
 - * @pre					Use from a normal thread context.
 - *
 - * @param[in] pt		Pointer to a GTimer structure
 - *
 - * @note				If the timer is not active this does nothing.
 - * @note				Repeated Jabs before the callback function actually happens are ignored.
 - *
 - * @api
 - */
  void gtimerJab(GTimer *pt) {
  	chMtxLock(&mutex);
 @@ -294,20 +227,6 @@ void gtimerJab(GTimer *pt) {  	chMtxUnlock();
  }
 -/**
 - * @brief   			Jab a timer causing the current period to immediate expire
 - * @details				The callback function will be called as soon as possible.
 - *
 - * @pre					Use from an interrupt routine context.
 - *
 - * @param[in] pt		Pointer to a GTimer structure
 - *
 - * @note				If the timer is not active this does nothing.
 - * @note				Repeated Jabs before the callback function actually happens are ignored.
 - *
 - * @iclass
 - * @api
 - */
  void gtimerJabI(GTimer *pt) {
  	// Jab it!
  	pt->flags |= GTIMER_FLG_JABBED;
 @@ -318,3 +237,4 @@ void gtimerJabI(GTimer *pt) {  #endif /* GFX_USE_GTIMER */
  /** @} */
 +
 diff --git a/src/gwin/button.c b/src/gwin/button.c index 0c2c1ab3..9a06f4fe 100644 --- a/src/gwin/button.c +++ b/src/gwin/button.c @@ -17,14 +17,16 @@      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    src/gwin/button.c
   * @brief   GWIN sub-system button code.
   *
 - * @addtogroup GWIN_BUTTON
 + * @defgroup Button Button
 + * @ingroup GWIN
 + *
   * @{
   */
 +
  #include "ch.h"
  #include "hal.h"
  #include "gfx.h"
 diff --git a/src/gwin/console.c b/src/gwin/console.c index 7854b658..0297da30 100644 --- a/src/gwin/console.c +++ b/src/gwin/console.c @@ -17,14 +17,16 @@      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    src/gwin/console.c
   * @brief   GWIN sub-system console code.
   *
 - * @addtogroup GWIN_CONSOLE
 + * @defgroup Console Console
 + * @ingroup GWIN
 + *
   * @{
   */
 +
  #include "ch.h"
  #include "hal.h"
  #include "gfx.h"
 diff --git a/src/gwin/graph.c b/src/gwin/graph.c index cc457d7d..39628047 100644 --- a/src/gwin/graph.c +++ b/src/gwin/graph.c @@ -17,14 +17,16 @@      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    src/gwin/button.c
   * @brief   GWIN sub-system button code.
   *
 - * @addtogroup GWIN_BUTTON
 + * @defgroup Button Button
 + * @ingroup GWIN
 + *
   * @{
   */
 +
  #include "ch.h"
  #include "hal.h"
  #include "gfx.h"
 diff --git a/src/gwin/gwin.c b/src/gwin/gwin.c index 999ea304..4eef79ad 100644 --- a/src/gwin/gwin.c +++ b/src/gwin/gwin.c @@ -17,14 +17,16 @@      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    src/gwin/gwin.c
   * @brief   GWIN sub-system code.
   *
 - * @addtogroup GWIN
 + * @defgroup Window Window
 + * @ingroup GWIN
 + *
   * @{
   */
 +
  #include "ch.h"
  #include "hal.h"
  #include "gfx.h"
 | 
