You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by xi...@apache.org on 2024/10/01 13:55:11 UTC
(nuttx-apps) 03/05: test/watchdog:add test case for capture.
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 6358b481fb693f0740be34163d6aed67ec1a4975
Author: yangguangcai <ya...@xiaomi.com>
AuthorDate: Wed Dec 13 15:17:42 2023 +0800
test/watchdog:add test case for capture.
Signed-off-by: yangguangcai <ya...@xiaomi.com>
---
testing/drivertest/drivertest_watchdog.c | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)
diff --git a/testing/drivertest/drivertest_watchdog.c b/testing/drivertest/drivertest_watchdog.c
index a5ba7a8b9..85e94a606 100644
--- a/testing/drivertest/drivertest_watchdog.c
+++ b/testing/drivertest/drivertest_watchdog.c
@@ -83,6 +83,8 @@ struct wdg_state_s
bool test_getstatus;
};
+static sem_t g_semaphore;
+
/****************************************************************************
* Private Data
****************************************************************************/
@@ -272,6 +274,16 @@ static void parse_commandline(FAR struct wdg_state_s *wdg_state, int argc,
}
}
+/****************************************************************************
+ * Name: capture_callback
+ ****************************************************************************/
+
+static int capture_callback(int irq, FAR void *context, FAR void *arg)
+{
+ sem_post(&g_semaphore);
+ return OK;
+}
+
/****************************************************************************
* Name: test_case_wdog_01
*
@@ -425,6 +437,7 @@ static void test_case_wdog_04(FAR void **state)
FAR struct wdg_state_s *wdg_state;
struct watchdog_status_s status;
struct boardioc_reset_cause_s reset_cause;
+ struct watchdog_capture_s watchdog_capture;
wdg_state = (FAR struct wdg_state_s *)*state;
@@ -467,6 +480,22 @@ static void test_case_wdog_04(FAR void **state)
assert_return_code(ret, OK);
}
+ /* Test capture. */
+
+ ret = sem_init(&g_semaphore, 0, 0);
+ assert_return_code(ret, OK);
+
+ watchdog_capture.newhandler = capture_callback;
+ ret = ioctl(dev_fd, WDIOC_CAPTURE, &watchdog_capture);
+ assert_return_code(ret, OK);
+
+ sem_wait(&g_semaphore);
+ sem_destroy(&g_semaphore);
+
+ watchdog_capture.newhandler = watchdog_capture.oldhandler;
+ ret = ioctl(dev_fd, WDIOC_CAPTURE, &watchdog_capture);
+ assert_return_code(ret, OK);
+
/* Then stop pinging */
ret = ioctl(dev_fd, WDIOC_STOP, 0);