From cf3b8e4ed25d74d03cc6e246fe0f4ee129b17bc1 Mon Sep 17 00:00:00 2001 From: inmarket Date: Mon, 13 Oct 2014 16:37:04 +1000 Subject: [PATCH] Add GMouse parameter to ADS7843 mouse driver to enable multiple drivers. Tidy up naming. --- .../gmouse_lld_ADS7843_board.h | 21 ++++++++++---- .../ginput/touch/ADS7843/gmouse_lld_ADS7843.c | 29 +++++++------------ .../gmouse_lld_ADS7843_board_template.h | 12 +++++--- 3 files changed, 35 insertions(+), 27 deletions(-) diff --git a/boards/base/FireBull-STM32F103-FB/gmouse_lld_ADS7843_board.h b/boards/base/FireBull-STM32F103-FB/gmouse_lld_ADS7843_board.h index e4f30818..b202dd85 100644 --- a/boards/base/FireBull-STM32F103-FB/gmouse_lld_ADS7843_board.h +++ b/boards/base/FireBull-STM32F103-FB/gmouse_lld_ADS7843_board.h @@ -8,6 +8,7 @@ #ifndef _GINPUT_LLD_MOUSE_BOARD_H #define _GINPUT_LLD_MOUSE_BOARD_H +// Resolution and Accuracy Settings #define GMOUSE_ADS7843_PEN_CALIBRATE_ERROR 2 #define GMOUSE_ADS7843_PEN_CLICK_ERROR 2 #define GMOUSE_ADS7843_PEN_MOVE_ERROR 2 @@ -15,6 +16,9 @@ #define GMOUSE_ADS7843_FINGER_CLICK_ERROR 4 #define GMOUSE_ADS7843_FINGER_MOVE_ERROR 4 +// How much extra data to allocate at the end of the GMouse structure for the board's use +#define GMOUSE_ADS7843_BOARD_DATA_SIZE 0 + static const SPIConfig spicfg = { 0, GPIOC, @@ -39,28 +43,35 @@ static bool_t init_board(GMouse* m, unsigned driverinstance) return TRUE; } -static inline bool_t getpin_pressed(void) -{ +static inline bool_t getpin_pressed(GMouse* m) +{ + (void) m; + return (!palReadPad(GPIOC, 4)); } -static inline void aquire_bus(void) +static inline void aquire_bus(GMouse* m) { + (void) m; + spiAcquireBus(&SPID1); palClearPad(GPIOC, 6); } -static inline void release_bus(void) +static inline void release_bus(GMouse* m) { + (void) m; + palSetPad(GPIOC, 6); spiReleaseBus(&SPID1); } -static inline uint16_t read_value(uint16_t port) +static inline uint16_t read_value(GMouse* m, uint16_t port) { static uint8_t txbuf[3] = {0}; static uint8_t rxbuf[3] = {0}; uint16_t ret; + (void) m; txbuf[0] = port; diff --git a/drivers/ginput/touch/ADS7843/gmouse_lld_ADS7843.c b/drivers/ginput/touch/ADS7843/gmouse_lld_ADS7843.c index 72cd6f67..ac315262 100644 --- a/drivers/ginput/touch/ADS7843/gmouse_lld_ADS7843.c +++ b/drivers/ginput/touch/ADS7843/gmouse_lld_ADS7843.c @@ -15,39 +15,32 @@ // Get the hardware interface #include "gmouse_lld_ADS7843_board.h" -// If the board file doesn't specify how many extra bytes it wants - assume 0 -#ifndef BOARD_DATA_SIZE - #define BOARD_DATA_SIZE 0 -#endif - #define CMD_X 0xD1 #define CMD_Y 0x91 #define CMD_ENABLE_IRQ 0x80 -void read_xyz(GMouse* m, GMouseReading* pdr) +static void MouseXYZ(GMouse* m, GMouseReading* pdr) { (void)m; // No buttons pdr->buttons = 0; + pdr->z = 0; - if (getpin_pressed()) { + if (getpin_pressed(m)) { pdr->z = 1; // Set to Z_MAX as we are pressed - aquire_bus(); + aquire_bus(m); - read_value(CMD_X); // Dummy read - disable PenIRQ - pdr->x = read_value(CMD_X); // Read X-Value + read_value(m, CMD_X); // Dummy read - disable PenIRQ + pdr->x = read_value(m, CMD_X); // Read X-Value - read_value(CMD_Y); // Dummy read - disable PenIRQ - pdr->y = read_value(CMD_Y); // Read Y-Value + read_value(m, CMD_Y); // Dummy read - disable PenIRQ + pdr->y = read_value(m, CMD_Y); // Read Y-Value - read_value(CMD_ENABLE_IRQ); // Enable IRQ + read_value(m, CMD_ENABLE_IRQ); // Enable IRQ - release_bus(); - } else { - // Don't touch x and y values here - pdr->z = 0; + release_bus(m); } } @@ -77,7 +70,7 @@ const GMouseVMT const GMOUSE_DRIVER_VMT[1] = {{ }, init_board, // init 0, // deinit - read_xyz, // get + MouseXYZ, // get 0, // calsave 0 // calload }}; diff --git a/drivers/ginput/touch/ADS7843/gmouse_lld_ADS7843_board_template.h b/drivers/ginput/touch/ADS7843/gmouse_lld_ADS7843_board_template.h index 7b762310..5a09b5bd 100644 --- a/drivers/ginput/touch/ADS7843/gmouse_lld_ADS7843_board_template.h +++ b/drivers/ginput/touch/ADS7843/gmouse_lld_ADS7843_board_template.h @@ -8,6 +8,7 @@ #ifndef _GINPUT_LLD_MOUSE_BOARD_H #define _GINPUT_LLD_MOUSE_BOARD_H +// Resolution and Accuracy Settings #define GMOUSE_ADS7843_PEN_CALIBRATE_ERROR 2 #define GMOUSE_ADS7843_PEN_CLICK_ERROR 2 #define GMOUSE_ADS7843_PEN_MOVE_ERROR 2 @@ -15,23 +16,26 @@ #define GMOUSE_ADS7843_FINGER_CLICK_ERROR 4 #define GMOUSE_ADS7843_FINGER_MOVE_ERROR 4 +// How much extra data to allocate at the end of the GMouse structure for the board's use +#define GMOUSE_ADS7843_BOARD_DATA_SIZE 0 + static bool_t init_board(GMouse* m, unsigned driverinstance) { } -static inline bool_t getpin_pressed(void) { +static inline bool_t getpin_pressed(GMouse* m) { } -static inline void aquire_bus(void) { +static inline void aquire_bus(GMouse* m) { } -static inline void release_bus(void) { +static inline void release_bus(GMouse* m) { } -static inline uint16_t read_value(uint16_t port) { +static inline uint16_t read_value(GMouse* m, uint16_t port) { }