74bool i2c_wr_function(uint8_t addr, uint8_t reg, uint8_t *
buf,
size_t len,
bool writeReg,
bool isWrite)
77 Wire.beginTransmission(addr);
84 return (Wire.endTransmission() == 0);
87 Wire.beginTransmission(addr);
89 Wire.endTransmission();
91 Wire.requestFrom(addr,
static_cast<uint8_t
>(len));
92 for (
size_t i = 0;
i < len; ++
i) {
93 if (Wire.available()) {
109 uint8_t pin =
reinterpret_cast<uintptr_t
>(param1);
110 uint8_t mode =
reinterpret_cast<uintptr_t
>(param2);
116 uint8_t pin =
reinterpret_cast<uintptr_t
>(param1);
117 uint8_t
level =
reinterpret_cast<uintptr_t
>(param2);
118 digitalWrite(pin,
level);
123 uint8_t pin =
reinterpret_cast<uintptr_t
>(param1);
124 return digitalRead(pin);
134 uint32_t ms =
reinterpret_cast<uintptr_t
>(param1);
141 uint32_t us =
reinterpret_cast<uintptr_t
>(param1);
142 delayMicroseconds(us);
156 digitalWrite(gpio,
level);
165 return digitalRead(gpio);
191 Serial.print(
"Successfully initialized "); Serial.print(model);
192 Serial.print(
",using "); Serial.print(model); Serial.println(
" Driver!");
203 Serial.print(
"Successfully initialized "); Serial.print(model);
204 Serial.print(
",using "); Serial.print(model); Serial.println(
" Driver!");
217 Serial.print(
"Successfully initialized "); Serial.print(model);
218 Serial.print(
",using "); Serial.print(model); Serial.println(
" Driver!");
223 Serial.println(
"Unable to find touch device.");
232 Serial.
begin(115200);
234 Serial.println(
"Start!");
236#if (defined(ARDUINO_ARCH_RP2040) || defined(ARDUINO_ARCH_STM32)) && !defined(ARDUINO_ARCH_MBED)
240#elif defined(ARDUINO_ARCH_NRF52)
243#elif defined(ARDUINO_ARCH_ESP32)
249 SensorWireHelper::dumpDevices(Wire);
254 Serial.println(
"Failed to find XL9555 - check your wiring!");
278 Serial.print(point.
x);
283 Serial.print(point.
y);
bool begin(SensorCommCustom::CustomCallback callback, uint8_t addr)
Initialize the sensor using custom callback interface.
bool digitalRead(uint8_t pin)
Read the digital value from an input pin.
void pinMode(uint8_t pin, uint8_t mode)
Set the direction of a GPIO pin.
void digitalWrite(uint8_t pin, bool value)
Write a digital value to an output pin.
Concrete driver for the XL9555 16‑bit I2C GPIO expander.
void interruptPolling(void)
Polling mode for touch interrupt.
Abstract base class for touch screen drivers.
virtual void setGpioCallback(SensorHalCustom::CustomMode mode_cb, SensorHalCustom::CustomWrite write_cb, SensorHalCustom::CustomRead read_cb)
Set custom GPIO callbacks for pin control (e.g., reset, interrupt).
virtual const TouchPoints & getTouchPoints()=0
Get the current touch points (pure virtual).
virtual const char * getModelName()=0
Get the human-readable model name of the touch controller.
virtual bool begin(SensorCommCustom::CustomCallback callback, SensorCommCustomHal::CustomHalCallback hal_callback, uint8_t addr)
Initialize the touch driver with custom communication callbacks.
virtual void setPins(int rst, int irq)
Set the hardware reset and interrupt pin numbers.
virtual bool isPressed(uint32_t filter_ms=0)
Check if any touch point is currently pressed.
Container for touch point data and optional gesture information.
uint8_t getPointCount() const
Returns the number of stored touch points.
TouchPoint & getPoint(uint8_t index)
Gets a reference to a touch point at the specified index.
bool hasPoints() const
Checks whether any touch points are stored.
void TouchDrvPinMode(uint8_t gpio, uint8_t mode)
void TouchDrvDigitalWrite(uint8_t gpio, uint8_t level)
TouchDrvInterface * touchDrv
uint32_t hal_callback(SensorCommCustomHal::Operation op, void *param1, void *param2)
uint8_t TouchDrvDigitalRead(uint8_t gpio)
bool i2c_wr_function(uint8_t addr, uint8_t reg, uint8_t *buf, size_t len, bool writeReg, bool isWrite)
i2c_wr_function
uint8_t expander_io_tp_reset
IoExpanderXL9555 expander
Represents a single touch point with its properties.
uint16_t x
X coordinate of the touch point.
uint16_t y
Y coordinate of the touch point.