working touchscreen but gestures not moving display

This commit is contained in:
nasimovy 2025-04-20 15:41:20 +00:00
parent ffa5476be3
commit 3145061cae
3 changed files with 49 additions and 60 deletions

View File

@ -1829,7 +1829,7 @@ void Screen::setup()
new TouchScreenImpl1(dispdev->getWidth(), dispdev->getHeight(), static_cast<TFTDisplay *>(dispdev)->getTouch); new TouchScreenImpl1(dispdev->getWidth(), dispdev->getHeight(), static_cast<TFTDisplay *>(dispdev)->getTouch);
touchScreenImpl1->init(); touchScreenImpl1->init();
#elif HAS_TOUCHSCREEN && HAS_CST226SE #elif HAS_TOUCHSCREEN && HAS_CST226SE
touchScreenCST226SE = new TouchScreenCST226SE(TFT_HEIGHT, TFT_WIDTH, TouchScreenCST226SE::forwardGetTouch); touchScreenCST226SE = new TouchScreenCST226SE(TFT_HEIGHT, TFT_WIDTH);
touchScreenCST226SE->init(); touchScreenCST226SE->init();
#endif #endif

View File

@ -17,8 +17,7 @@ volatile bool isPressed = false;
TouchScreenCST226SE *TouchScreenCST226SE::instance = nullptr; TouchScreenCST226SE *TouchScreenCST226SE::instance = nullptr;
TouchScreenCST226SE *touchScreenCST226SE; TouchScreenCST226SE *touchScreenCST226SE;
TouchScreenCST226SE::TouchScreenCST226SE(uint16_t width, uint16_t height, bool (*getTouch)(int16_t *, int16_t *)) TouchScreenCST226SE::TouchScreenCST226SE(uint16_t width, uint16_t height) : TouchScreenBase("CST226", width, height)
: TouchScreenBase("CST226", width, height), _getTouch(getTouch)
{ {
instance = this; instance = this;
} }
@ -36,6 +35,7 @@ void TouchScreenCST226SE::init()
TOUCH_IRQ, []() { isPressed = true; }, FALLING); TOUCH_IRQ, []() { isPressed = true; }, FALLING);
} }
touch.setMirrorXY(false, true); touch.setMirrorXY(false, true);
touch.setSwapXY(true);
LOG_DEBUG("CST226SE init OK at address 0x%02X", addr); LOG_DEBUG("CST226SE init OK at address 0x%02X", addr);
return; return;
} }
@ -65,64 +65,53 @@ bool TouchScreenCST226SE::getTouch(int16_t &x, int16_t &y)
return false; // No valid touch data return false; // No valid touch data
} }
bool TouchScreenCST226SE::forwardGetTouch(int16_t *x, int16_t *y)
{
// if (instance) {
// bool result = instance->getTouch(*x, *y);
// if (result) {
// LOG_DEBUG("TouchScreen parsed %dx %dy", *x, *y);
// }
// return result;
// } else {
return false; // Instance not initialized
// }
}
void TouchScreenCST226SE::onEvent(const TouchEvent &event) void TouchScreenCST226SE::onEvent(const TouchEvent &event)
{ {
// InputEvent e; LOG_DEBUG("Event triggerd");
// e.source = event.source; InputEvent e;
e.source = event.source;
// e.touchX = event.x; e.touchX = event.x;
// e.touchY = event.y; e.touchY = event.y;
// switch (event.touchEvent) { switch (event.touchEvent) {
// case TOUCH_ACTION_LEFT: { case TOUCH_ACTION_LEFT: {
// e.inputEvent = static_cast<char>(meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_RIGHT); e.inputEvent = static_cast<char>(meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_RIGHT);
// break; break;
// } }
// case TOUCH_ACTION_RIGHT: { case TOUCH_ACTION_RIGHT: {
// e.inputEvent = static_cast<char>(meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_LEFT); e.inputEvent = static_cast<char>(meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_LEFT);
// break; break;
// } }
// case TOUCH_ACTION_UP: { case TOUCH_ACTION_UP: {
// e.inputEvent = static_cast<char>(meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_UP); e.inputEvent = static_cast<char>(meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_UP);
// break; break;
// } }
// case TOUCH_ACTION_DOWN: { case TOUCH_ACTION_DOWN: {
// e.inputEvent = static_cast<char>(meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_DOWN); e.inputEvent = static_cast<char>(meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_DOWN);
// break; break;
// } }
// case TOUCH_ACTION_DOUBLE_TAP: { case TOUCH_ACTION_DOUBLE_TAP: {
// e.inputEvent = static_cast<char>(meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_SELECT); e.inputEvent = static_cast<char>(meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_SELECT);
// break; break;
// } }
// case TOUCH_ACTION_LONG_PRESS: { case TOUCH_ACTION_LONG_PRESS: {
// e.inputEvent = static_cast<char>(meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_CANCEL); e.inputEvent = static_cast<char>(meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_CANCEL);
// break; break;
// } }
// case TOUCH_ACTION_TAP: { case TOUCH_ACTION_TAP: {
// if (moduleConfig.external_notification.enabled && (externalNotificationModule->nagCycleCutoff != UINT32_MAX)) { LOG_DEBUG("tipie tap");
// externalNotificationModule->stopNow(); if (moduleConfig.external_notification.enabled && (externalNotificationModule->nagCycleCutoff != UINT32_MAX)) {
// } else { externalNotificationModule->stopNow();
// powerFSM.trigger(EVENT_INPUT); } else {
// } powerFSM.trigger(EVENT_INPUT);
// break; }
// } break;
// default: }
default:
return; return;
// } }
// this->notifyObservers(&e); this->notifyObservers(&e);
} }
#endif #endif

View File

@ -12,11 +12,11 @@
class TouchScreenCST226SE : public TouchScreenBase class TouchScreenCST226SE : public TouchScreenBase
{ {
public: public:
TouchScreenCST226SE(uint16_t width, uint16_t height, bool (*getTouch)(int16_t *, int16_t *)); TouchScreenCST226SE(uint16_t width, uint16_t height);
// TouchScreenCST226SE(uint16_t width, uint16_t height, bool (*getTouch)(int16_t *, int16_t *));
void init(void); void init(void);
static bool forwardGetTouch(int16_t *x, int16_t *y); // bool (*_getTouch)(int16_t *, int16_t *);
bool (*_getTouch)(int16_t *, int16_t *);
virtual bool getTouch(int16_t &x, int16_t &y); virtual bool getTouch(int16_t &x, int16_t &y);
virtual void onEvent(const TouchEvent &event); virtual void onEvent(const TouchEvent &event);