diff --git a/src/drv/touch/touch_driver_stmpe610.h b/src/drv/touch/touch_driver_stmpe610.h index 46a7c108..c4ee5628 100644 --- a/src/drv/touch/touch_driver_stmpe610.h +++ b/src/drv/touch/touch_driver_stmpe610.h @@ -23,67 +23,44 @@ extern uint8_t hasp_sleep_state; #define TS_MINY 100 #define TS_MAXY 3750 -// bool touch_read(lv_indev_drv_t* indev_driver, lv_indev_data_t* data) -// { -// data->state = LV_INDEV_STATE_REL; +static Adafruit_STMPE610 stmpe610_touchpanel = Adafruit_STMPE610(TOUCH_CS); -// // while touched, but the state is released => read next point -// while(data->state == LV_INDEV_STATE_REL && stmpe610_touchpanel.touched()) { +bool touch_read(lv_indev_drv_t* indev_driver, lv_indev_data_t* data) +{ + data->state = LV_INDEV_STATE_REL; -// TS_Point point = stmpe610_touchpanel.getPoint(); -// Log.trace(TAG_DRVR, F("STMPE610: x=%i y=%i z=%i"), point.x, point.y, point.z); + // while touched, but the state is released => read next point + while(data->state == LV_INDEV_STATE_REL && stmpe610_touchpanel.touched()) { -// if(point.z && point.x < 4096 && point.y < 4096) { // valid reading -// if(hasp_sleep_state != HASP_SLEEP_OFF) hasp_update_sleep_state(); // update Idle -// data->state = LV_INDEV_STATE_PR; + TS_Point point = stmpe610_touchpanel.getPoint(); + Log.trace(TAG_DRVR, F("STMPE610: x=%i y=%i z=%i"), point.x, point.y, point.z); -// #if HX8357D_DRIVER == 1 -// data->point.x = map(point.x, TS_MINX, TS_MAXX, TFT_WIDTH, 0); -// data->point.y = map(point.y, TS_MINY, TS_MAXY, 0, TFT_HEIGHT); -// #else -// data->point.x = map(point.x, TS_MINX, TS_MAXX, 0, TFT_WIDTH); -// data->point.y = map(point.y, TS_MINY, TS_MAXY, 0, TFT_HEIGHT); -// #endif -// } -// } + if(point.z && point.x < 4096 && point.y < 4096) { // valid reading + if(hasp_sleep_state != HASP_SLEEP_OFF) hasp_update_sleep_state(); // update Idle + data->state = LV_INDEV_STATE_PR; -// /*Return `false` because we are not buffering and no more data to read*/ -// return false; -// } +#if HX8357D_DRIVER == 1 + data->point.x = map(point.x, TS_MINX, TS_MAXX, TFT_WIDTH, 0); + data->point.y = map(point.y, TS_MINY, TS_MAXY, 0, TFT_HEIGHT); +#else + data->point.x = map(point.x, TS_MINX, TS_MAXX, 0, TFT_WIDTH); + data->point.y = map(point.y, TS_MINY, TS_MAXY, 0, TFT_HEIGHT); +#endif + } + } + + /*Return `false` because we are not buffering and no more data to read*/ + return false; +} 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; - - // while touched, but the state is released => read next point - while(data->state == LV_INDEV_STATE_REL && stmpe610_touchpanel.touched()) { - - TS_Point point = stmpe610_touchpanel.getPoint(); - Log.trace(TAG_DRVR, F("STMPE610: x=%i y=%i z=%i"), point.x, point.y, point.z); - - if(point.z && point.x < 4096 && point.y < 4096) { // valid reading - if(hasp_sleep_state != HASP_SLEEP_OFF) hasp_update_sleep_state(); // update Idle - data->state = LV_INDEV_STATE_PR; - -#if HX8357D_DRIVER == 1 - data->point.x = map(point.x, TS_MINX, TS_MAXX, TFT_WIDTH, 0); - data->point.y = map(point.y, TS_MINY, TS_MAXY, 0, TFT_HEIGHT); -#else - data->point.x = map(point.x, TS_MINX, TS_MAXX, 0, TFT_WIDTH); - data->point.y = map(point.y, TS_MINY, TS_MAXY, 0, TFT_HEIGHT); -#endif - } - } - - /*Return `false` because we are not buffering and no more data to read*/ - return false; + return touch_read(indev_driver, data); } void init(int w, int h) @@ -100,7 +77,7 @@ class TouchStmpe610 : public BaseTouch { } // namespace dev using dev::TouchStmpe610; -dev::TouchStmpe610 haspTouch; +extern dev::TouchStmpe610 haspTouch; #endif // ARDUINO diff --git a/src/drv/touch/touch_driver_tftespi.h b/src/drv/touch/touch_driver_tftespi.h index 80692fd3..96555cd0 100644 --- a/src/drv/touch/touch_driver_tftespi.h +++ b/src/drv/touch/touch_driver_tftespi.h @@ -66,7 +66,7 @@ class TouchTftEspi : public BaseTouch { } // namespace dev using dev::TouchTftEspi; -extern dev::TouchTftEspi haspTouch; +dev::TouchTftEspi haspTouch; #endif // ARDUINO