Add GMouse parameter to ADS7843 mouse driver to enable multiple drivers.
Tidy up naming.
This commit is contained in:
parent
eb0cc21872
commit
cf3b8e4ed2
3 changed files with 35 additions and 27 deletions
|
@ -8,6 +8,7 @@
|
||||||
#ifndef _GINPUT_LLD_MOUSE_BOARD_H
|
#ifndef _GINPUT_LLD_MOUSE_BOARD_H
|
||||||
#define _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_CALIBRATE_ERROR 2
|
||||||
#define GMOUSE_ADS7843_PEN_CLICK_ERROR 2
|
#define GMOUSE_ADS7843_PEN_CLICK_ERROR 2
|
||||||
#define GMOUSE_ADS7843_PEN_MOVE_ERROR 2
|
#define GMOUSE_ADS7843_PEN_MOVE_ERROR 2
|
||||||
|
@ -15,6 +16,9 @@
|
||||||
#define GMOUSE_ADS7843_FINGER_CLICK_ERROR 4
|
#define GMOUSE_ADS7843_FINGER_CLICK_ERROR 4
|
||||||
#define GMOUSE_ADS7843_FINGER_MOVE_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 = {
|
static const SPIConfig spicfg = {
|
||||||
0,
|
0,
|
||||||
GPIOC,
|
GPIOC,
|
||||||
|
@ -39,28 +43,35 @@ static bool_t init_board(GMouse* m, unsigned driverinstance)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline bool_t getpin_pressed(void)
|
static inline bool_t getpin_pressed(GMouse* m)
|
||||||
{
|
{
|
||||||
|
(void) m;
|
||||||
|
|
||||||
return (!palReadPad(GPIOC, 4));
|
return (!palReadPad(GPIOC, 4));
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void aquire_bus(void)
|
static inline void aquire_bus(GMouse* m)
|
||||||
{
|
{
|
||||||
|
(void) m;
|
||||||
|
|
||||||
spiAcquireBus(&SPID1);
|
spiAcquireBus(&SPID1);
|
||||||
palClearPad(GPIOC, 6);
|
palClearPad(GPIOC, 6);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void release_bus(void)
|
static inline void release_bus(GMouse* m)
|
||||||
{
|
{
|
||||||
|
(void) m;
|
||||||
|
|
||||||
palSetPad(GPIOC, 6);
|
palSetPad(GPIOC, 6);
|
||||||
spiReleaseBus(&SPID1);
|
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 txbuf[3] = {0};
|
||||||
static uint8_t rxbuf[3] = {0};
|
static uint8_t rxbuf[3] = {0};
|
||||||
uint16_t ret;
|
uint16_t ret;
|
||||||
|
(void) m;
|
||||||
|
|
||||||
txbuf[0] = port;
|
txbuf[0] = port;
|
||||||
|
|
||||||
|
|
|
@ -15,39 +15,32 @@
|
||||||
// Get the hardware interface
|
// Get the hardware interface
|
||||||
#include "gmouse_lld_ADS7843_board.h"
|
#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_X 0xD1
|
||||||
#define CMD_Y 0x91
|
#define CMD_Y 0x91
|
||||||
#define CMD_ENABLE_IRQ 0x80
|
#define CMD_ENABLE_IRQ 0x80
|
||||||
|
|
||||||
void read_xyz(GMouse* m, GMouseReading* pdr)
|
static void MouseXYZ(GMouse* m, GMouseReading* pdr)
|
||||||
{
|
{
|
||||||
(void)m;
|
(void)m;
|
||||||
|
|
||||||
// No buttons
|
// No buttons
|
||||||
pdr->buttons = 0;
|
pdr->buttons = 0;
|
||||||
|
pdr->z = 0;
|
||||||
|
|
||||||
if (getpin_pressed()) {
|
if (getpin_pressed(m)) {
|
||||||
pdr->z = 1; // Set to Z_MAX as we are pressed
|
pdr->z = 1; // Set to Z_MAX as we are pressed
|
||||||
|
|
||||||
aquire_bus();
|
aquire_bus(m);
|
||||||
|
|
||||||
read_value(CMD_X); // Dummy read - disable PenIRQ
|
read_value(m, CMD_X); // Dummy read - disable PenIRQ
|
||||||
pdr->x = read_value(CMD_X); // Read X-Value
|
pdr->x = read_value(m, CMD_X); // Read X-Value
|
||||||
|
|
||||||
read_value(CMD_Y); // Dummy read - disable PenIRQ
|
read_value(m, CMD_Y); // Dummy read - disable PenIRQ
|
||||||
pdr->y = read_value(CMD_Y); // Read Y-Value
|
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();
|
release_bus(m);
|
||||||
} else {
|
|
||||||
// Don't touch x and y values here
|
|
||||||
pdr->z = 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -77,7 +70,7 @@ const GMouseVMT const GMOUSE_DRIVER_VMT[1] = {{
|
||||||
},
|
},
|
||||||
init_board, // init
|
init_board, // init
|
||||||
0, // deinit
|
0, // deinit
|
||||||
read_xyz, // get
|
MouseXYZ, // get
|
||||||
0, // calsave
|
0, // calsave
|
||||||
0 // calload
|
0 // calload
|
||||||
}};
|
}};
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
#ifndef _GINPUT_LLD_MOUSE_BOARD_H
|
#ifndef _GINPUT_LLD_MOUSE_BOARD_H
|
||||||
#define _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_CALIBRATE_ERROR 2
|
||||||
#define GMOUSE_ADS7843_PEN_CLICK_ERROR 2
|
#define GMOUSE_ADS7843_PEN_CLICK_ERROR 2
|
||||||
#define GMOUSE_ADS7843_PEN_MOVE_ERROR 2
|
#define GMOUSE_ADS7843_PEN_MOVE_ERROR 2
|
||||||
|
@ -15,23 +16,26 @@
|
||||||
#define GMOUSE_ADS7843_FINGER_CLICK_ERROR 4
|
#define GMOUSE_ADS7843_FINGER_CLICK_ERROR 4
|
||||||
#define GMOUSE_ADS7843_FINGER_MOVE_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 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) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue