/* * Copyright (c) Hisilicon Technologies Co., Ltd. 2014-2019. All rights reserved. * Description: sample test for gpio function. */ #include #include #include "uapi_wdg.h" #define TEST_WDG_NO 0 td_s32 main(td_s32 argc, td_char *argv[]) { td_s32 ret; td_u32 loop; td_u32 value; td_u32 wdgnum; (void)(argc); (void)(argv); /* Open WDG */ ret = uapi_wdg_init(); if (ret != TD_SUCCESS) { printf("%s: %d ErrorCode=0x%x\n", __FILE__, __LINE__, ret); return ret; } ret = uapi_wdg_get_num(&wdgnum); if (ret != TD_SUCCESS) { printf("%s: %d ErrorCode=0x%x\n", __FILE__, __LINE__, ret); goto ERR1; } printf("max wdg num:%d\n", wdgnum); /* Set WDG TimeOut */ value = 2000; /* 2000 ms */ ret = uapi_wdg_set_timeout(TEST_WDG_NO, value); if (ret != TD_SUCCESS) { printf("%s: %d ErrorCode=0x%x\n", __FILE__, __LINE__, ret); goto ERR1; } /* Enable WDG */ ret = uapi_wdg_enable(TEST_WDG_NO); if (ret != TD_SUCCESS) { printf("%s: %d ErrorCode=0x%x\n", __FILE__, __LINE__, ret); goto ERR1; } sleep(1); for (loop = 0; loop < 5; loop++) { /* for 5 times */ /* Clear WDG during timeout, can not reset system */ ret = uapi_wdg_clear(TEST_WDG_NO); if (ret != TD_SUCCESS) { printf("%s: %d ErrorCode=0x%x\n", __FILE__, __LINE__, ret); goto ERR1; } printf("Clear wdg Success\n"); sleep(1); } printf("wdg disabled\n"); /* Disable WDG, cat not reset system */ ret = uapi_wdg_disable(TEST_WDG_NO); if (ret != TD_SUCCESS) { printf("%s: %d ErrorCode=0x%x\n", __FILE__, __LINE__, ret); goto ERR1; } sleep(5); /* sleep 5 secends */ printf("\nwdg doesn't reset board,demo passed\n"); printf("now enable wdg and wait reset boardaaaa\n\n"); /* Enable WDG */ ret = uapi_wdg_enable(TEST_WDG_NO); if (ret != TD_SUCCESS) { printf("%s: %d ErrorCode=0x%x\n", __FILE__, __LINE__, ret); goto ERR1; } printf("system reset at onceaa\n"); /* After timeout, system reset at once */ sleep(5); /* sleep 5 secends */ printf("system reset at once\n"); ERR1: uapi_wdg_deinit(); printf("run wdg sample failed\n"); return ret; }