From e8c40c560c8ea3dd16bf32ba9b7314b1b3e47e6d Mon Sep 17 00:00:00 2001 From: Sieren Date: Sun, 7 Feb 2021 15:33:53 +0100 Subject: [PATCH] Add Touch Adapter for M5 Core2s FT6366 --- .../M5Core2/src/M5TouchAdapter.cpp | 32 +++++++++++++++++++ .../m5stackcore2/M5Core2/src/M5TouchAdapter.h | 16 ++++++++++ 2 files changed, 48 insertions(+) create mode 100644 components/m5stackcore2/M5Core2/src/M5TouchAdapter.cpp create mode 100644 components/m5stackcore2/M5Core2/src/M5TouchAdapter.h diff --git a/components/m5stackcore2/M5Core2/src/M5TouchAdapter.cpp b/components/m5stackcore2/M5Core2/src/M5TouchAdapter.cpp new file mode 100644 index 0000000..1ddd7bb --- /dev/null +++ b/components/m5stackcore2/M5Core2/src/M5TouchAdapter.cpp @@ -0,0 +1,32 @@ +#include "M5TouchAdapter.h" + +// Emulates the native (resistive) TFT_eSPI touch interface using M5.Touch + #define TOUCH M5Touch::instance + +uint8_t M5TouchAdapter::getTouchRaw(uint16_t *x, uint16_t *y) { + return getTouch(x, y); +} + +uint16_t M5TouchAdapter::getTouchRawZ(void) { + return (TOUCH->ispressed()) ? 1000 : 0; +} + +void M5TouchAdapter::convertRawXY(uint16_t *x, uint16_t *y) { return; } + +uint8_t M5TouchAdapter::getTouch(uint16_t *x, uint16_t *y, + uint16_t threshold /* = 600 */) { + TOUCH->read(); + if (TOUCH->points) { + *x = TOUCH->point[0].x; + *y = TOUCH->point[0].y; + return true; + } + return false; +} + +void M5TouchAdapter::calibrateTouch(uint16_t *data, uint32_t color_fg, + uint32_t color_bg, uint8_t size) { + return; +} + +void M5TouchAdapter::setTouch(uint16_t *data) { return; } \ No newline at end of file diff --git a/components/m5stackcore2/M5Core2/src/M5TouchAdapter.h b/components/m5stackcore2/M5Core2/src/M5TouchAdapter.h new file mode 100644 index 0000000..5ba5640 --- /dev/null +++ b/components/m5stackcore2/M5Core2/src/M5TouchAdapter.h @@ -0,0 +1,16 @@ +#pragma once + + #include "M5Touch.h" + + class M5TouchAdapter { + public: + // Emulates the TFT_eSPI touch interface using M5.Touch + uint8_t getTouchRaw(uint16_t *x, uint16_t *y); + uint16_t getTouchRawZ(void); + void convertRawXY(uint16_t *x, uint16_t *y); + uint8_t getTouch(uint16_t *x, uint16_t *y, uint16_t threshold = 600); + void calibrateTouch(uint16_t *data, uint32_t color_fg, uint32_t color_bg, + uint8_t size); + void setTouch(uint16_t *data); +}; +// #endif /* _M5DISPLAY_H_ */