diff --git a/src/input/TouchScreenCST226SE.cpp b/src/input/TouchScreenCST226SE.cpp index 396182eb0..350cb3d05 100644 --- a/src/input/TouchScreenCST226SE.cpp +++ b/src/input/TouchScreenCST226SE.cpp @@ -35,6 +35,7 @@ void TouchScreenCST226SE::init() attachInterrupt( TOUCH_IRQ, []() { isPressed = true; }, FALLING); } + touch.setMirrorXY(false, true); LOG_DEBUG("CST226SE init OK at address 0x%02X", addr); return; } @@ -45,102 +46,83 @@ void TouchScreenCST226SE::init() bool TouchScreenCST226SE::getTouch(int16_t &x, int16_t &y) { - if (!touch.isPressed()) { - return false; - } int16_t x_array[1], y_array[1]; uint8_t touched = touch.getPoint(x_array, y_array, 1); if (touched > 0) { x = x_array[0]; y = y_array[0]; - LOG_DEBUG("TouchScreen filtered %dx %dy", x, y); - return true; - } - // bool pressed = false; + LOG_DEBUG("TouchScreen touch %dx %dy", x, y); - // if (TOUCH_IRQ == -1) { - // pressed = touch.isPressed(); - // } else { - // if (!isPressed) - // return false; - // isPressed = false; - // pressed = touch.isPressed(); - // } - // if (pressed) { - // int16_t x_array[1], y_array[1]; - // uint8_t touched = touch.getPoint(x_array, y_array, 1); - // if (touched > 0) { - // int16_t tx = x_array[0]; - // int16_t ty = y_array[0]; - // LOG_DEBUG("TouchScreen touched %dx %dy", tx, ty); - // if (tx > (TFT_WIDTH) || tx < 0 || ty > (TFT_HEIGHT) || ty < 0) { - // LOG_DEBUG("touch ignored"); - // return false; - // } - // x = tx; - // y = ty; - // LOG_DEBUG("TouchScreen filtered %dx %dy", x, y); - // return true; - // } - // } - return false; + // Check bounds + if (x < 0 || x >= TFT_WIDTH || y < 0 || y >= TFT_HEIGHT) { + LOG_DEBUG("Touch ignored - Out of bounds"); + return false; + } + + return true; // Valid touch detected + } + + return false; // No valid touch data } bool TouchScreenCST226SE::forwardGetTouch(int16_t *x, int16_t *y) { - if (instance) { - return instance->getTouch(*x, *y); - LOG_DEBUG("TouchScreen parsed %dx %dy", x, y); - } else { - return false; - } + // 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) { - InputEvent e; - e.source = event.source; + // InputEvent e; + // e.source = event.source; - e.touchX = event.x; - e.touchY = event.y; + // e.touchX = event.x; + // e.touchY = event.y; - switch (event.touchEvent) { - case TOUCH_ACTION_LEFT: { - e.inputEvent = static_cast(meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_RIGHT); - break; - } - case TOUCH_ACTION_RIGHT: { - e.inputEvent = static_cast(meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_LEFT); - break; - } - case TOUCH_ACTION_UP: { - e.inputEvent = static_cast(meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_UP); - break; - } - case TOUCH_ACTION_DOWN: { - e.inputEvent = static_cast(meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_DOWN); - break; - } - case TOUCH_ACTION_DOUBLE_TAP: { - e.inputEvent = static_cast(meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_SELECT); - break; - } - case TOUCH_ACTION_LONG_PRESS: { - e.inputEvent = static_cast(meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_CANCEL); - break; - } - case TOUCH_ACTION_TAP: { - if (moduleConfig.external_notification.enabled && (externalNotificationModule->nagCycleCutoff != UINT32_MAX)) { - externalNotificationModule->stopNow(); - } else { - powerFSM.trigger(EVENT_INPUT); - } - break; - } - default: - return; - } - this->notifyObservers(&e); + // switch (event.touchEvent) { + // case TOUCH_ACTION_LEFT: { + // e.inputEvent = static_cast(meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_RIGHT); + // break; + // } + // case TOUCH_ACTION_RIGHT: { + // e.inputEvent = static_cast(meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_LEFT); + // break; + // } + // case TOUCH_ACTION_UP: { + // e.inputEvent = static_cast(meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_UP); + // break; + // } + // case TOUCH_ACTION_DOWN: { + // e.inputEvent = static_cast(meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_DOWN); + // break; + // } + // case TOUCH_ACTION_DOUBLE_TAP: { + // e.inputEvent = static_cast(meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_SELECT); + // break; + // } + // case TOUCH_ACTION_LONG_PRESS: { + // e.inputEvent = static_cast(meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_CANCEL); + // break; + // } + // case TOUCH_ACTION_TAP: { + // if (moduleConfig.external_notification.enabled && (externalNotificationModule->nagCycleCutoff != UINT32_MAX)) { + // externalNotificationModule->stopNow(); + // } else { + // powerFSM.trigger(EVENT_INPUT); + // } + // break; + // } + // default: + return; + // } + // this->notifyObservers(&e); } #endif \ No newline at end of file