This is an automated email from the ASF dual-hosted git repository.

xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx-apps.git

commit 35cf746025fbd23f6367c0e8cb014bb110219b83
Author: ouyangxiangzhen <[email protected]>
AuthorDate: Tue Sep 2 11:06:03 2025 +0800

    testing/drivers: Fix wrong test-cases.
    
    This commit fixed totally wrong test-cases for the periodical timers.
    
    Signed-off-by: ouyangxiangzhen <[email protected]>
---
 testing/drivers/drivertest/drivertest_posix_timer.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/testing/drivers/drivertest/drivertest_posix_timer.c 
b/testing/drivers/drivertest/drivertest_posix_timer.c
index ccca6e1c2..13eb4425a 100644
--- a/testing/drivers/drivertest/drivertest_posix_timer.c
+++ b/testing/drivers/drivertest/drivertest_posix_timer.c
@@ -65,6 +65,7 @@ struct posix_timer_state_s
 {
   struct itimerspec it;
   uint64_t tim;
+  uint32_t trigger_count;
   uint32_t deviation;
 };
 
@@ -157,15 +158,16 @@ static void posix_timer_callback(union sigval arg)
 {
   FAR struct posix_timer_state_s *sigev_para =
                       (FAR struct posix_timer_state_s *)arg.sival_ptr;
-  int range = get_timestamp() - (*sigev_para).tim;
+  uint64_t expected = (*sigev_para).tim +
+                      DEFAULT_TIME_OUT * (*sigev_para).trigger_count;
+  int range = get_timestamp() - expected;
 
   syslog(0, "range: %d ms\n", range);
 
-  assert(range >= sigev_para->it.it_interval.tv_sec * 1000 -
-                  sigev_para->deviation);
+  assert(range >= sigev_para->it.it_interval.tv_sec * 1000);
 
   syslog(LOG_DEBUG, "callback trigger!!!\n");
-  (*sigev_para).tim = get_timestamp();
+  (*sigev_para).trigger_count++;
 }
 
 /****************************************************************************
@@ -226,6 +228,7 @@ int main(int argc, FAR char *argv[])
     .it.it_value.tv_nsec    = 0,
     .it.it_interval.tv_sec  = DEFAULT_TIME_OUT,
     .it.it_interval.tv_nsec = 0,
+    .trigger_count          = 0,
     .deviation              = RTC_DEFAULT_DEVIATION
   };
 

Reply via email to