#ifndef LOW_LEVEL_TOUCH_FT6336U_H #define LOW_LEVEL_TOUCH_FT6336U_H #include "low_level_touch.h" #include "../lib/ft6336u/ft6336u.h" // FT6336U Touch Driver Implementation class LowLevelTouchFT6336U : public LowLevelTouch { private: int screen_width; int screen_height; bool swap_xy; bool invert_x; bool invert_y; bool initialized; public: LowLevelTouchFT6336U(int width, int height, bool swap_xy = false, bool invert_x = false, bool invert_y = false); virtual ~LowLevelTouchFT6336U(); // Core operations bool init() override; bool read_touch(TouchData* data) override; bool is_touched() override; // Touch properties int get_screen_width() const override { return screen_width; } int get_screen_height() const override { return screen_height; } TouchType get_type() const override { return TOUCH_TYPE_FT6336U; } uint8_t get_max_touch_points() const override { return 2; } // Device information uint8_t get_chip_id() override; uint8_t get_firmware_version() override; // Coordinate transformation void set_coordinate_transform(bool swap_xy, bool invert_x, bool invert_y) override; // Interrupt callback void set_interrupt_callback(void (*callback)(unsigned int gpio, uint32_t events)) override; // Test/diagnostic bool test_communication() override; }; #endif // LOW_LEVEL_TOUCH_FT6336U_H