/* * 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 */ #include "gfx.h" #if (GFX_USE_GINPUT && GINPUT_NEED_MOUSE) #define GMOUSE_DRIVER_VMT GMOUSEVMT_ADS7843 #include "src/ginput/driver_mouse.h" // 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) { (void)m; // No buttons pdr->buttons = 0; if (getpin_pressed()) { pdr->z = 1; // Set to Z_MAX as we are pressed aquire_bus(); read_value(CMD_X); // Dummy read - disable PenIRQ pdr->x = read_value(CMD_X); // Read X-Value read_value(CMD_Y); // Dummy read - disable PenIRQ pdr->y = read_value(CMD_Y); // Read Y-Value read_value(CMD_ENABLE_IRQ); // Enable IRQ release_bus(); } else { // Don't touch x and y values here pdr->z = 0; } } const GMouseVMT const GMOUSE_DRIVER_VMT[1] = {{ { GDRIVER_TYPE_TOUCH, GMOUSE_VFLG_TOUCH | GMOUSE_VFLG_CALIBRATE | GMOUSE_VFLG_CAL_TEST | GMOUSE_VFLG_ONLY_DOWN | GMOUSE_VFLG_POORUPDOWN, sizeof(GMouse)+BOARD_DATA_SIZE, _gmouseInitDriver, _gmousePostInitDriver, _gmouseDeInitDriver }, 1, // z_max - (currently?) not supported 0, // z_min - (currently?) not supported 1, // z_touchon 0, // z_touchoff { // pen_jitter GMOUSE_ADS7843_PEN_CALIBRATE_ERROR, // calibrate GMOUSE_ADS7843_PEN_CLICK_ERROR, // click GMOUSE_ADS7843_PEN_MOVE_ERROR // move }, { // finger_jitter GMOUSE_ADS7843_FINGER_CALIBRATE_ERROR, // calibrate GMOUSE_ADS7843_FINGER_CLICK_ERROR, // click GMOUSE_ADS7843_FINGER_MOVE_ERROR // move }, init_board, // init 0, // deinit read_xyz, // get 0, // calsave 0 // calload }}; #endif /* GFX_USE_GINPUT && GINPUT_NEED_MOUSE */