#pragma once #include "esphome/components/i2c/i2c.h" #include "esphome/components/touchscreen/touchscreen.h" #include "esphome/core/component.h" #include "esphome/core/hal.h" namespace esphome { namespace icnt86x { class ICNT86XTouchscreen : public touchscreen::Touchscreen, public i2c::I2CDevice { public: void setup() override; void dump_config() override; bool can_proceed() override { return this->setup_done_; } void set_interrupt_pin(InternalGPIOPin *pin) { this->interrupt_pin_ = pin; } void set_reset_pin(GPIOPin *pin) { this->reset_pin_ = pin; } protected: void update_touches() override; void setup_internal_(); bool read_reg16_(uint16_t reg, uint8_t *data, size_t len); bool write_reg16_(uint16_t reg, uint8_t value); InternalGPIOPin *interrupt_pin_{nullptr}; GPIOPin *reset_pin_{nullptr}; bool setup_done_{false}; }; } // namespace icnt86x } // namespace esphome