From 8f1a394355baa07e270f150e2ea7e3ad0e6994d5 Mon Sep 17 00:00:00 2001 From: Alexey Zholtikov Date: Mon, 23 Feb 2026 21:27:35 +0300 Subject: [PATCH] feat: added gpio interrupt time --- CMakeLists.txt | 2 +- include/zh_pcf8574.h | 2 ++ version.txt | 2 +- zh_pcf8574.c | 1 + 4 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 49cc12c..6dd255d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1 +1 @@ -idf_component_register(SRCS "zh_pcf8574.c" INCLUDE_DIRS "include" REQUIRES driver esp_event zh_vector) \ No newline at end of file +idf_component_register(SRCS "zh_pcf8574.c" INCLUDE_DIRS "include" REQUIRES driver esp_timer esp_event zh_vector) \ No newline at end of file diff --git a/include/zh_pcf8574.h b/include/zh_pcf8574.h index 62a2ccd..77dd58e 100755 --- a/include/zh_pcf8574.h +++ b/include/zh_pcf8574.h @@ -6,6 +6,7 @@ #include "esp_log.h" #include "driver/gpio.h" +#include "esp_timer.h" #include "driver/i2c_master.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" @@ -112,6 +113,7 @@ extern "C" */ typedef struct { + uint64_t interrupt_time; /*!< Interrupt time. */ zh_pcf8574_gpio_num_t gpio_number; /*!< The GPIO that caused the interrupt. */ uint8_t i2c_address; /*!< The i2c address of PCF8574 expander that caused the interrupt. */ bool gpio_level; /*!< The GPIO level that caused the interrupt. */ diff --git a/version.txt b/version.txt index 4fd0fe3..914ec96 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -2.5.1 \ No newline at end of file +2.6.0 \ No newline at end of file diff --git a/zh_pcf8574.c b/zh_pcf8574.c index 50edc1e..9209bb2 100755 --- a/zh_pcf8574.c +++ b/zh_pcf8574.c @@ -328,6 +328,7 @@ static void IRAM_ATTR _zh_pcf8574_isr_processing_task(void *pvParameter) { event.gpio_number = j; event.gpio_level = new_reg & _gpio_matrix[j]; + event.interrupt_time = esp_timer_get_time(); err = esp_event_post(ZH_PCF8574, 0, &event, sizeof(event), 1000 / portTICK_PERIOD_MS); if (err != ESP_OK) {