aboutsummaryrefslogtreecommitdiffstats
path: root/boards/base/STM32F469i-Discovery/gmouse_lld_FT6x06_board.h
diff options
context:
space:
mode:
Diffstat (limited to 'boards/base/STM32F469i-Discovery/gmouse_lld_FT6x06_board.h')
-rw-r--r--boards/base/STM32F469i-Discovery/gmouse_lld_FT6x06_board.h85
1 files changed, 85 insertions, 0 deletions
diff --git a/boards/base/STM32F469i-Discovery/gmouse_lld_FT6x06_board.h b/boards/base/STM32F469i-Discovery/gmouse_lld_FT6x06_board.h
new file mode 100644
index 00000000..ec07d5d0
--- /dev/null
+++ b/boards/base/STM32F469i-Discovery/gmouse_lld_FT6x06_board.h
@@ -0,0 +1,85 @@
+/*
+ * 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
+
+#include "tm_stm32_i2c.h"
+#include "stm32469i_discovery_ts.h"
+#include "ft6x06.h"
+
+// Resolution and Accuracy Settings
+#define GMOUSE_FT6x06_PEN_CALIBRATE_ERROR 8
+#define GMOUSE_FT6x06_PEN_CLICK_ERROR 6
+#define GMOUSE_FT6x06_PEN_MOVE_ERROR 4
+#define GMOUSE_FT6x06_FINGER_CALIBRATE_ERROR 14
+#define GMOUSE_FT6x06_FINGER_CLICK_ERROR 18
+#define GMOUSE_FT6x06_FINGER_MOVE_ERROR 14
+
+// How much extra data to allocate at the end of the GMouse structure for the board's use
+#define GMOUSE_FT6x06_BOARD_DATA_SIZE 0
+
+// Set this to TRUE if you want self-calibration.
+// NOTE: This is not as accurate as real calibration.
+// It requires the orientation of the touch panel to match the display.
+// It requires the active area of the touch panel to exactly match the display size.
+//#define GMOUSE_FT6x06_SELF_CALIBRATE TRUE
+
+#define FT6x06_SLAVE_ADDR 0x54
+
+static bool_t init_board(GMouse* m, unsigned driverinstance) {
+ (void)m;
+
+ TS_StateTypeDef ts_state;
+
+ return TS_OK == BSP_TS_Init(BSP_LCD_GetXSize(), BSP_LCD_GetYSize());
+}
+
+#define aquire_bus(m)
+#define release_bus(m);
+
+static void write_reg(GMouse* m, uint8_t reg, uint8_t val) {
+ (void)m;
+
+ //TM_I2C_Write(I2C1, FT6x06_SLAVE_ADDR, reg, val);
+}
+
+static uint8_t read_byte(GMouse* m, uint8_t reg) {
+ (void)m;
+
+ /*uint8_t data;
+ TM_I2C_Read(I2C1, FT6x06_SLAVE_ADDR, reg, &data);
+ return data;*/
+ TS_StateTypeDef ts_state;
+ if(reg == FT6x06_TOUCH_POINTS){
+ if (TS_OK != BSP_TS_GetState(&ts_state))
+ {
+ return FALSE;
+ }
+ return ts_state.touchDetected;
+ }
+}
+
+static uint16_t read_word(GMouse* m, uint8_t reg) {
+ (void)m;
+
+ /*uint8_t data[2];
+ TM_I2C_ReadMulti(I2C1, FT6x06_SLAVE_ADDR, reg, data, 2);
+ return (data[1]<<8 | data[0]);*/
+
+ TS_StateTypeDef ts_state;
+ if (TS_OK == BSP_TS_GetState(&ts_state))
+ {
+ if(reg == FT6x06_TOUCH1_XH){
+ return (coord_t)ts_state.touchX[0];
+ }else if(reg == FT6x06_TOUCH1_YH){
+ return (coord_t)ts_state.touchY[0];
+ }
+ }
+}
+
+#endif /* _GINPUT_LLD_MOUSE_BOARD_H */