From 8275c8820f230342939a2410dd0b24c0f26a14e5 Mon Sep 17 00:00:00 2001 From: Andrew Hannam Date: Mon, 26 Nov 2012 18:45:26 +1000 Subject: Ginput and structure changes GINPUT Touch including drivers GTIMER fixes GEVENT fixes GWIN button completion Structure changes to better seperate sections of a sub-system --- drivers/ginput/toggle/Pal/ginput_lld.mk | 5 ++ drivers/ginput/toggle/Pal/ginput_lld_toggle.c | 62 +++++++++++++++++++++ .../toggle/Pal/ginput_lld_toggle_board_example.h | 65 ++++++++++++++++++++++ .../Pal/ginput_lld_toggle_board_olimexsam7ex256.h | 60 ++++++++++++++++++++ .../ginput/toggle/Pal/ginput_lld_toggle_config.h | 44 +++++++++++++++ drivers/ginput/toggle/Pal/readme.txt | 13 +++++ 6 files changed, 249 insertions(+) create mode 100644 drivers/ginput/toggle/Pal/ginput_lld.mk create mode 100644 drivers/ginput/toggle/Pal/ginput_lld_toggle.c create mode 100644 drivers/ginput/toggle/Pal/ginput_lld_toggle_board_example.h create mode 100644 drivers/ginput/toggle/Pal/ginput_lld_toggle_board_olimexsam7ex256.h create mode 100644 drivers/ginput/toggle/Pal/ginput_lld_toggle_config.h create mode 100644 drivers/ginput/toggle/Pal/readme.txt (limited to 'drivers/ginput/toggle') diff --git a/drivers/ginput/toggle/Pal/ginput_lld.mk b/drivers/ginput/toggle/Pal/ginput_lld.mk new file mode 100644 index 00000000..d398da9d --- /dev/null +++ b/drivers/ginput/toggle/Pal/ginput_lld.mk @@ -0,0 +1,5 @@ +# List the required driver. +GFXSRC += $(GFXLIB)/drivers/ginput/toggle/Pal/ginput_lld_toggle.c + +# Required include directories +GFXINC += $(GFXLIB)/drivers/ginput/toggle/Pal diff --git a/drivers/ginput/toggle/Pal/ginput_lld_toggle.c b/drivers/ginput/toggle/Pal/ginput_lld_toggle.c new file mode 100644 index 00000000..98c2f61b --- /dev/null +++ b/drivers/ginput/toggle/Pal/ginput_lld_toggle.c @@ -0,0 +1,62 @@ +/* + ChibiOS/RT - Copyright (C) 2012 + Joel Bodenmann aka Tectu + + This file is part of ChibiOS/GFX. + + ChibiOS/GFX is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS/GFX is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file drivers/ginput/togglePal/ginput_lld_toggle.c + * @brief GINPUT Toggle low level driver source for the ChibiOS PAL hardware. + * + * @addtogroup GINPUT_TOGGLE + * @{ + */ + +#include "ch.h" +#include "hal.h" + +#if (GFX_USE_GINPUT && GINPUT_NEED_TOGGLE) /*|| defined(__DOXYGEN__)*/ + +// Declare the static members in the following include file +#define GINPUT_TOGGLE_DECLARE_CONFIG + +#include "lld/ginput/toggle.h" + +/** + * @brief Initialise the port. + * + * @param[in] ptc A pointer to one of the entries in GInputToggleConfigTable + * + * @notapi + */ +void ginput_lld_toggle_init(const GToggleConfig *ptc) { + palSetGroupMode(((IOBus *)ptc->id)->portid, ptc->mask, 0, ptc->mode); +} + +/** + * @brief Get the bits from the port. + * + * @param[in] ptc A pointer to one of the entries in GInputToggleConfigTable + * + * @notapi + */ +unsigned ginput_lld_toggle_getbits(const GToggleConfig *ptc) { + return palReadBus((IOBus *)ptc->id); +} + +#endif /* GFX_USE_GINPUT && GINPUT_NEED_TOGGLE */ +/** @} */ diff --git a/drivers/ginput/toggle/Pal/ginput_lld_toggle_board_example.h b/drivers/ginput/toggle/Pal/ginput_lld_toggle_board_example.h new file mode 100644 index 00000000..e8262b9a --- /dev/null +++ b/drivers/ginput/toggle/Pal/ginput_lld_toggle_board_example.h @@ -0,0 +1,65 @@ +/* + ChibiOS/RT - Copyright (C) 2012 + Joel Bodenmann aka Tectu + + This file is part of ChibiOS/GFX. + + ChibiOS/GFX is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS/GFX is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file drivers/ginput/togglePal/ginput_lld_toggle_board_example.h + * @brief GINPUT Toggle low level driver source for the ChibiOS PAL hardware on the example board. + * + * @addtogroup GINPUT_TOGGLE + * @{ + */ + +#ifndef _GDISP_LLD_TOGGLE_BOARD_H +#define _GDISP_LLD_TOGGLE_BOARD_H + +#ifndef _GINPUT_LLD_TOGGLE_CONFIG_H + // Visible in ginput.h + + #define GINPUT_TOGGLE_SW1 0 // Switch 1 + #define GINPUT_TOGGLE_SW2 1 // Switch 2 + #define GINPUT_TOGGLE_UP 2 // Joystick Up + #define GINPUT_TOGGLE_DOWN 3 // Joystick Down + #define GINPUT_TOGGLE_LEFT 4 // Joystick Left + #define GINPUT_TOGGLE_RIGHT 5 // Joystick Right + #define GINPUT_TOGGLE_CENTER 6 // Joystick Center + +#elif !defined(GINPUT_TOGGLE_DECLARE_CONFIG) + // Visible in ginput_lld.h + + #define GINPUT_TOGGLE_NUM_PORTS 7 // The total number of toggle inputs + +#else + // Visible in ginput_lld_toggle.c + + GToggleConfig GInputToggleConfigTable[] = { + {AT91C_BASE_PIOB, // Switch 1 and Switch 2 + PIOB_SW1_MASK|PIOB_SW2_MASK, + PIOB_SW1_MASK|PIOB_SW2_MASK, + PAL_MODE_INPUT}, + {AT91C_BASE_PIOA, // B1..4 Joystick + PIOA_B1_MASK|PIOA_B2_MASK|PIOA_B3_MASK|PIOA_B4_MASK|PIOA_B5_MASK, + PIOA_B1_MASK|PIOA_B2_MASK|PIOA_B3_MASK|PIOA_B4_MASK|PIOA_B5_MASK, + PAL_MODE_INPUT}, + }; + +#endif + +#endif /* _GDISP_LLD_TOGGLE_BOARD_H */ +/** @} */ diff --git a/drivers/ginput/toggle/Pal/ginput_lld_toggle_board_olimexsam7ex256.h b/drivers/ginput/toggle/Pal/ginput_lld_toggle_board_olimexsam7ex256.h new file mode 100644 index 00000000..3858ad0c --- /dev/null +++ b/drivers/ginput/toggle/Pal/ginput_lld_toggle_board_olimexsam7ex256.h @@ -0,0 +1,60 @@ +/* + ChibiOS/RT - Copyright (C) 2012 + Joel Bodenmann aka Tectu + + This file is part of ChibiOS/GFX. + + ChibiOS/GFX is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS/GFX is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file drivers/ginput/togglePal/ginput_lld_toggle_board_olimexsam7ex256.h + * @brief GINPUT Toggle low level driver source for the ChibiOS PAL hardware on the Olimex SAM7EX256 board. + * + * @addtogroup GINPUT_TOGGLE + * @{ + */ + +#ifndef _GDISP_LLD_TOGGLE_BOARD_H +#define _GDISP_LLD_TOGGLE_BOARD_H + +#define GINPUT_TOGGLE_NUM_PORTS 7 // The total number of toggle inputs +#define GINPUT_TOGGLE_CONFIG_ENTRIES 2 // The total number of GToggleConfig entries + +#define GINPUT_TOGGLE_SW1 0 // Switch 1 +#define GINPUT_TOGGLE_SW2 1 // Switch 2 +#define GINPUT_TOGGLE_UP 2 // Joystick Up +#define GINPUT_TOGGLE_DOWN 3 // Joystick Down +#define GINPUT_TOGGLE_LEFT 4 // Joystick Left +#define GINPUT_TOGGLE_RIGHT 5 // Joystick Right +#define GINPUT_TOGGLE_CENTER 6 // Joystick Center + +#ifdef GINPUT_TOGGLE_DECLARE_CONFIG + // Visible in ginput_lld_toggle.c + + const GToggleConfig GInputToggleConfigTable[GINPUT_TOGGLE_CONFIG_ENTRIES] = { + {AT91C_BASE_PIOB, // Switch 1 and Switch 2 + PIOB_SW1_MASK|PIOB_SW2_MASK, + PIOB_SW1_MASK|PIOB_SW2_MASK, + PAL_MODE_INPUT}, + {AT91C_BASE_PIOA, // B1..4 Joystick + PIOA_B1_MASK|PIOA_B2_MASK|PIOA_B3_MASK|PIOA_B4_MASK|PIOA_B5_MASK, + PIOA_B1_MASK|PIOA_B2_MASK|PIOA_B3_MASK|PIOA_B4_MASK|PIOA_B5_MASK, + PAL_MODE_INPUT}, + }; + +#endif + +#endif /* _GDISP_LLD_TOGGLE_BOARD_H */ +/** @} */ diff --git a/drivers/ginput/toggle/Pal/ginput_lld_toggle_config.h b/drivers/ginput/toggle/Pal/ginput_lld_toggle_config.h new file mode 100644 index 00000000..f58221f9 --- /dev/null +++ b/drivers/ginput/toggle/Pal/ginput_lld_toggle_config.h @@ -0,0 +1,44 @@ +/* + ChibiOS/RT - Copyright (C) 2012 + Joel Bodenmann aka Tectu + + This file is part of ChibiOS/GFX. + + ChibiOS/GFX is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS/GFX is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file drivers/ginput/togglePal/ginput_lld_toggle_config.h + * @brief GINPUT Toggle Driver configuration header. + * + * @addtogroup GDISP + * @{ + */ + +#ifndef _GINPUT_LLD_TOGGLE_CONFIG_H +#define _GINPUT_LLD_TOGGLE_CONFIG_H + +#if GFX_USE_GINPUT && GINPUT_NEED_TOGGLE + +#if defined(BOARD_OLIMEX_SAM7_EX256) + #include "ginput_lld_toggle_board_olimexsam7ex256.h" +#else + /* Include the user supplied board definitions */ + #include "ginput_lld_toggle_board.h" +#endif + +#endif /* GFX_USE_GDISP && GINPUT_NEED_TOGGLE */ + +#endif /* _GINPUT_LLD_TOGGLE_CONFIG_H */ +/** @} */ diff --git a/drivers/ginput/toggle/Pal/readme.txt b/drivers/ginput/toggle/Pal/readme.txt new file mode 100644 index 00000000..e6976f7d --- /dev/null +++ b/drivers/ginput/toggle/Pal/readme.txt @@ -0,0 +1,13 @@ +To use this driver: + +1. Add in your halconf.h: + a) #define GFX_USE_GINPUT TRUE + #define GINPUT_NEED_TOGGLE TRUE + d) If you are not using a known board then create a ginput_lld_toggle_board.h file + and ensure it is on your include path. + Use the ginput_lld_toggle_board_example.h file as a basis. + Currently known boards are: + Olimex SAM7-EX256 + +2. To your makefile add the following lines: + include $(GFXLIB)/drivers/ginput/togglePal/ginput_lld.mk -- cgit v1.2.3