From 51bf1832b8f388441adc7589076ee6e4a09a660c Mon Sep 17 00:00:00 2001 From: Me No Dev Date: Thu, 28 Apr 2022 02:31:32 +0300 Subject: [PATCH] Fix onRequest being called for every slave address (#6649) Fixes: https://github.com/espressif/arduino-esp32/issues/5907 --- cores/esp32/esp32-hal-i2c-slave.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/cores/esp32/esp32-hal-i2c-slave.c b/cores/esp32/esp32-hal-i2c-slave.c index e73a6db642c..99bc2c54c9b 100644 --- a/cores/esp32/esp32-hal-i2c-slave.c +++ b/cores/esp32/esp32-hal-i2c-slave.c @@ -719,10 +719,12 @@ static void i2c_slave_isr_handler(void* arg) } if(slave_rw){ // READ #if CONFIG_IDF_TARGET_ESP32 - //SEND TX Event - i2c_slave_queue_event_t event; - event.event = I2C_SLAVE_EVT_TX; - pxHigherPriorityTaskWoken |= i2c_slave_send_event(i2c, &event); + if(i2c->dev->status_reg.scl_main_state_last == 6){ + //SEND TX Event + i2c_slave_queue_event_t event; + event.event = I2C_SLAVE_EVT_TX; + pxHigherPriorityTaskWoken |= i2c_slave_send_event(i2c, &event); + } #else //reset TX data i2c_ll_txfifo_rst(i2c->dev);