From 989bd2e7327e5144879bbeccc5354b474c32e90e Mon Sep 17 00:00:00 2001 From: zhaohe Date: Mon, 18 Sep 2023 22:42:38 +0800 Subject: [PATCH] update --- components/key_monitor/zkey_service.cpp | 9 ++++++--- components/key_monitor/zkey_service.hpp | 9 ++++++--- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/components/key_monitor/zkey_service.cpp b/components/key_monitor/zkey_service.cpp index 4aa5eff..09eb878 100644 --- a/components/key_monitor/zkey_service.cpp +++ b/components/key_monitor/zkey_service.cpp @@ -39,19 +39,22 @@ void ZKeyService::processEachAfterFilter(ZKey* each, bool now_io_state) { if (now_io_state) { each->keep_state_count = 0; each->hasProcessed = false; - if (m_listener) m_listener(each, zke_rising_edge); + each->m_rsing_ticket = zos_get_tick(); + + if (m_listener && !each->isHasProcessed()) m_listener(each, zke_rising_edge); } else { - if (m_listener) m_listener(each, zke_falling_edge); + if (m_listener && !each->isHasProcessed()) m_listener(each, zke_falling_edge); each->keep_state_count = 0; } each->last_after_filter_io_state = now_io_state; } else { if (now_io_state) { - if (m_listener) m_listener(each, zke_keep); + if (m_listener && !each->isHasProcessed()) m_listener(each, zke_keep); } } } + void ZKeyService::processKey(ZKey* each) { /** * @brief zkey_process_each diff --git a/components/key_monitor/zkey_service.hpp b/components/key_monitor/zkey_service.hpp index fc9788f..3069893 100644 --- a/components/key_monitor/zkey_service.hpp +++ b/components/key_monitor/zkey_service.hpp @@ -23,6 +23,8 @@ class ZKey { bool after_filter_state; uint32_t currentstatekeep_count; + uint32_t m_rsing_ticket; + bool hasProcessed; /*useful for user*/ public: friend class ZKeyService; @@ -31,9 +33,10 @@ class ZKey { void init(); - void setHasProcessed(bool hasProcessed); - bool isHasProcessed(); - int getId(); + void setHasProcessed(bool hasProcessed); + bool isHasProcessed(); + int32_t haskeepms() { return zos_haspassedms(m_rsing_ticket); } + int getId(); }; class ZKeyService {