From df91cacfcc1b65d3e3a14777910f22a65cdc7b28 Mon Sep 17 00:00:00 2001 From: fvanroie <15969459+fvanroie@users.noreply.github.com> Date: Fri, 29 Oct 2021 03:46:26 +0200 Subject: [PATCH] Restructure touch drivers --- src/drv/old/hasp_drv_analogTouch.h | 2 +- src/drv/tft/tft_driver.h | 2 +- src/drv/tft/tft_driver_lovyangfx.h | 2 +- src/drv/tft/tft_driver_tftespi.h | 2 +- src/drv/touch/touch_driver.h | 13 ++++---- src/drv/touch/touch_driver_analog.h | 2 +- src/drv/touch/touch_driver_ft6336u.h | 45 +++++++++++++------------- src/drv/touch/touch_driver_gt911.h | 2 +- src/drv/touch/touch_driver_lovyangfx.h | 4 +-- src/drv/touch/touch_driver_stmpe610.h | 6 ++-- src/drv/touch/touch_driver_tftespi.h | 2 +- src/drv/touch/touch_helper.h | 2 +- src/hasp_gui.cpp | 2 +- 13 files changed, 44 insertions(+), 42 deletions(-) diff --git a/src/drv/old/hasp_drv_analogTouch.h b/src/drv/old/hasp_drv_analogTouch.h index 2af85c08..1c9f53ca 100644 --- a/src/drv/old/hasp_drv_analogTouch.h +++ b/src/drv/old/hasp_drv_analogTouch.h @@ -9,7 +9,7 @@ #include #ifdef ARDUINO -#include "Arduino.h" +#include #define ADC_MAX 4095 // maximum value for ESP32 ADC (default 11db, 12 bits) #define aXM TOUCH_anDC // analog input pin connected to LCD_RS diff --git a/src/drv/tft/tft_driver.h b/src/drv/tft/tft_driver.h index 6e2ab140..31462ecf 100644 --- a/src/drv/tft/tft_driver.h +++ b/src/drv/tft/tft_driver.h @@ -5,7 +5,7 @@ #define HASP_BASE_TFT_DRIVER_H #ifdef ARDUINO -#include "Arduino.h" +#include #endif #include "lvgl.h" diff --git a/src/drv/tft/tft_driver_lovyangfx.h b/src/drv/tft/tft_driver_lovyangfx.h index f20f1f87..3fb20415 100644 --- a/src/drv/tft/tft_driver_lovyangfx.h +++ b/src/drv/tft/tft_driver_lovyangfx.h @@ -5,7 +5,7 @@ #define HASP_LOVYANGFX_DRIVER_H #if defined(ARDUINO) && defined(LGFX_USE_V1) -#include "Arduino.h" +#include #include "lvgl.h" #include "LovyanGFX.hpp" diff --git a/src/drv/tft/tft_driver_tftespi.h b/src/drv/tft/tft_driver_tftespi.h index 6fc1e73d..50753b3d 100644 --- a/src/drv/tft/tft_driver_tftespi.h +++ b/src/drv/tft/tft_driver_tftespi.h @@ -5,7 +5,7 @@ #define HASP_TFTESPI_DRIVER_H #if defined(ARDUINO) && defined(USER_SETUP_LOADED) -#include "Arduino.h" +#include #include "lvgl.h" #include "TFT_eSPI.h" diff --git a/src/drv/touch/touch_driver.h b/src/drv/touch/touch_driver.h index 0c1b99ef..0faceac9 100644 --- a/src/drv/touch/touch_driver.h +++ b/src/drv/touch/touch_driver.h @@ -5,7 +5,7 @@ #define HASP_BASE_TOUCH_DRIVER_H #ifdef ARDUINO -#include "Arduino.h" +#include #endif #include "hasplib.h" @@ -27,6 +27,7 @@ class BaseTouch { {} IRAM_ATTR bool read(lv_indev_drv_t* indev_driver, lv_indev_data_t* data) { + data->state = LV_INDEV_STATE_REL; return false; } void calibrate(uint16_t* calData) @@ -70,11 +71,11 @@ class BaseTouch { #warning Building for Generic Touch using dev::BaseTouch; extern dev::BaseTouch haspTouch; -IRAM_ATTR bool touch_read(lv_indev_drv_t* indev_driver, lv_indev_data_t* data) -{ - data->state = LV_INDEV_STATE_REL; - return false; -} +// IRAM_ATTR bool touch_read(lv_indev_drv_t* indev_driver, lv_indev_data_t* data) +// { +// data->state = LV_INDEV_STATE_REL; +// return false; +// } #endif #endif diff --git a/src/drv/touch/touch_driver_analog.h b/src/drv/touch/touch_driver_analog.h index db6d7d0d..91dbb145 100644 --- a/src/drv/touch/touch_driver_analog.h +++ b/src/drv/touch/touch_driver_analog.h @@ -7,7 +7,7 @@ #ifdef ARDUINO #include "hasp_conf.h" -#include "Arduino.h" +#include #include "../old/hasp_drv_analogTouch.h" #include "ArduinoLog.h" diff --git a/src/drv/touch/touch_driver_ft6336u.h b/src/drv/touch/touch_driver_ft6336u.h index 701ee07e..b4b84a6d 100644 --- a/src/drv/touch/touch_driver_ft6336u.h +++ b/src/drv/touch/touch_driver_ft6336u.h @@ -5,11 +5,12 @@ #define HASP_FT6336T_TOUCH_DRIVER_H #ifdef ARDUINO -#include "Arduino.h" -#include "lvgl.h" +#include "hasp_conf.h" +#include #include #include "FT6336U.h" +#include "ArduinoLog.h" #include "touch_driver.h" // base class #include "touch_helper.h" // i2c scanner @@ -19,8 +20,6 @@ extern uint8_t hasp_sleep_state; #define RST_PIN (TOUCH_RST) // -1 if pin is connected to VCC else set pin number -FT6336U* ft6336u_touch; - // Read touch points // HASP_ATTRIBUTE_FAST_MEM bool FT6336U_getXY(int16_t* touchX, int16_t* touchY) // { @@ -56,6 +55,25 @@ namespace dev { class TouchFt6336u : public BaseTouch { public: + FT6336U* ft6336u_touch; + + IRAM_ATTR bool read(lv_indev_drv_t* indev_driver, lv_indev_data_t* data) + { + if(ft6336u_touch->read_touch_number() == 1) { + if(hasp_sleep_state != HASP_SLEEP_OFF) hasp_update_sleep_state(); // update Idle + + data->point.x = ft6336u_touch->read_touch1_x(); + data->point.y = ft6336u_touch->read_touch1_y(); + data->state = LV_INDEV_STATE_PR; + + } else { + data->state = LV_INDEV_STATE_REL; + } + + /*Return `false` because we are not buffering and no more data to read*/ + return false; + } + void init(int w, int h) { LOG_INFO(TAG_DRVR, F("Touch SDA : %d"), TOUCH_SDA); @@ -86,30 +104,13 @@ class TouchFt6336u : public BaseTouch { LOG_ERROR(TAG_DRVR, F("FT6336U touch driver failed to start")); } } - - IRAM_ATTR bool read(lv_indev_drv_t* indev_driver, lv_indev_data_t* data) - { - if(ft6336u_touch->read_touch_number() == 1) { - if(hasp_sleep_state != HASP_SLEEP_OFF) hasp_update_sleep_state(); // update Idle - - data->point.x = ft6336u_touch->read_touch1_x(); - data->point.y = ft6336u_touch->read_touch1_y(); - data->state = LV_INDEV_STATE_PR; - - } else { - data->state = LV_INDEV_STATE_REL; - } - - /*Return `false` because we are not buffering and no more data to read*/ - return false; - } }; } // namespace dev #warning Using FT6336 using dev::TouchFt6336u; -extern dev::TouchFt6336u haspTouch; +dev::TouchFt6336u haspTouch; #endif // ARDUINO diff --git a/src/drv/touch/touch_driver_gt911.h b/src/drv/touch/touch_driver_gt911.h index 02dd90f5..37a2464f 100644 --- a/src/drv/touch/touch_driver_gt911.h +++ b/src/drv/touch/touch_driver_gt911.h @@ -7,7 +7,7 @@ #ifdef ARDUINO #include "hasp_conf.h" -#include "Arduino.h" +#include #include #include "Goodix.h" #include "ArduinoLog.h" diff --git a/src/drv/touch/touch_driver_lovyangfx.h b/src/drv/touch/touch_driver_lovyangfx.h index 06f2da9b..a3c907b7 100644 --- a/src/drv/touch/touch_driver_lovyangfx.h +++ b/src/drv/touch/touch_driver_lovyangfx.h @@ -5,7 +5,7 @@ #define HASP_LOVYANGFX_TOUCH_DRIVER_H #ifdef ARDUINO -#include "Arduino.h" +#include #include "touch_driver.h" // base class #include "dev/device.h" // for haspTft @@ -33,7 +33,7 @@ namespace dev { class TouchLovyanGfx : public BaseTouch { public: - static IRAM_ATTR bool read(lv_indev_drv_t* indev_driver, lv_indev_data_t* data) + IRAM_ATTR bool read(lv_indev_drv_t* indev_driver, lv_indev_data_t* data) { int16_t touchX = 0; int16_t touchY = 0; diff --git a/src/drv/touch/touch_driver_stmpe610.h b/src/drv/touch/touch_driver_stmpe610.h index ce73e3eb..f15594c8 100644 --- a/src/drv/touch/touch_driver_stmpe610.h +++ b/src/drv/touch/touch_driver_stmpe610.h @@ -5,7 +5,7 @@ #define HASP_STMPE610_TOUCH_DRIVER_H #ifdef ARDUINO -#include "Arduino.h" +#include #include #include "Adafruit_STMPE610.h" #include "ArduinoLog.h" @@ -23,8 +23,6 @@ extern uint8_t hasp_sleep_state; #define TS_MINY 100 #define TS_MAXY 3750 -static Adafruit_STMPE610 stmpe610_touchpanel = Adafruit_STMPE610(TOUCH_CS); - // bool touch_read(lv_indev_drv_t* indev_driver, lv_indev_data_t* data) // { // data->state = LV_INDEV_STATE_REL; @@ -58,6 +56,8 @@ namespace dev { class TouchStmpe610 : public BaseTouch { public: + Adafruit_STMPE610 stmpe610_touchpanel = Adafruit_STMPE610(TOUCH_CS); + IRAM_ATTR bool read(lv_indev_drv_t* indev_driver, lv_indev_data_t* data) { data->state = LV_INDEV_STATE_REL; diff --git a/src/drv/touch/touch_driver_tftespi.h b/src/drv/touch/touch_driver_tftespi.h index 5446ce21..80692fd3 100644 --- a/src/drv/touch/touch_driver_tftespi.h +++ b/src/drv/touch/touch_driver_tftespi.h @@ -5,7 +5,7 @@ #define HASP_TFTESPI_TOUCH_DRIVER_H #ifdef ARDUINO -#include "Arduino.h" +#include #include "touch_driver.h" // base class #include "dev/device.h" // for haspTft diff --git a/src/drv/touch/touch_helper.h b/src/drv/touch/touch_helper.h index 8ecac790..6d64c25e 100644 --- a/src/drv/touch/touch_helper.h +++ b/src/drv/touch/touch_helper.h @@ -5,7 +5,7 @@ #define HASP_TOUCH_HELPER_H #ifdef ARDUINO -#include "Arduino.h" +#include #include #include "ArduinoLog.h" #include "hasp_debug.h" diff --git a/src/hasp_gui.cpp b/src/hasp_gui.cpp index 924cd5f9..982ffc8d 100644 --- a/src/hasp_gui.cpp +++ b/src/hasp_gui.cpp @@ -93,7 +93,7 @@ IRAM_ATTR void gui_flush_cb(lv_disp_drv_t* disp, const lv_area_t* area, lv_color IRAM_ATTR bool gui_touch_read(lv_indev_drv_t* indev_driver, lv_indev_data_t* data) { - // return haspTouch.read(indev_driver, data); + return haspTouch.read(indev_driver, data); } void guiCalibrate(void)