diff options
author | inmarket <andrewh@inmarket.com.au> | 2015-01-21 13:42:47 +1000 |
---|---|---|
committer | inmarket <andrewh@inmarket.com.au> | 2015-01-21 13:42:47 +1000 |
commit | 34939386d7390b0876973a1969f336b814313a22 (patch) | |
tree | 4fb0faf3e66ba46ab1834dddc11ffc91a9f3571d /demos/applications/tetris/Example_Makefiles/stm32f4_chibios_3.x/ginput_lld_mouse_board.h | |
parent | 8b221b803aa56b78e8c898402df26f96a130c712 (diff) | |
download | uGFX-34939386d7390b0876973a1969f336b814313a22.tar.gz uGFX-34939386d7390b0876973a1969f336b814313a22.tar.bz2 uGFX-34939386d7390b0876973a1969f336b814313a22.zip |
December 2014 Winning Demo Competition Entry - Tetris
Diffstat (limited to 'demos/applications/tetris/Example_Makefiles/stm32f4_chibios_3.x/ginput_lld_mouse_board.h')
-rw-r--r-- | demos/applications/tetris/Example_Makefiles/stm32f4_chibios_3.x/ginput_lld_mouse_board.h | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/demos/applications/tetris/Example_Makefiles/stm32f4_chibios_3.x/ginput_lld_mouse_board.h b/demos/applications/tetris/Example_Makefiles/stm32f4_chibios_3.x/ginput_lld_mouse_board.h new file mode 100644 index 00000000..15dda3f4 --- /dev/null +++ b/demos/applications/tetris/Example_Makefiles/stm32f4_chibios_3.x/ginput_lld_mouse_board.h @@ -0,0 +1,61 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +#ifndef _GINPUT_LLD_MOUSE_BOARD_H +#define _GINPUT_LLD_MOUSE_BOARD_H + +static const SPIConfig spicfg = { + 0, + GPIOC, + 6, + /* SPI_CR1_BR_2 |*/ SPI_CR1_BR_1 | SPI_CR1_BR_0, +}; + +static inline void init_board(void) +{ + palSetPadMode(GPIOC, 6, PAL_MODE_OUTPUT_PUSHPULL); + palSetPadMode(GPIOC, 4, PAL_MODE_INPUT); + palSetPadMode(GPIOA, 5, PAL_MODE_ALTERNATE(5)); + palSetPadMode(GPIOA, 6, PAL_MODE_ALTERNATE(5)); + palSetPadMode(GPIOA, 7, PAL_MODE_ALTERNATE(5)); + + spiStart(&SPID1, &spicfg); +} + +static inline bool_t getpin_pressed(void) +{ + return (!palReadPad(GPIOC, 4)); +} + +static inline void aquire_bus(void) +{ + spiAcquireBus(&SPID1); + palClearPad(GPIOC, 6); +} + +static inline void release_bus(void) +{ + palSetPad(GPIOC, 6); + spiReleaseBus(&SPID1); +} + +static inline uint16_t read_value(uint16_t port) +{ + static uint8_t txbuf[3] = {0}; + static uint8_t rxbuf[3] = {0}; + uint16_t ret; + + txbuf[0] = port; + + spiExchange(&SPID1, 3, txbuf, rxbuf); + + ret = (rxbuf[1] << 5) | (rxbuf[2] >> 3); + + return ret; +} + +#endif /* _GINPUT_LLD_MOUSE_BOARD_H */ |