1 /* 2 * Copyright (C) 2017-2020 Alibaba Group Holding Limited 3 */ 4 5 /****************************************************************************** 6 * @file drv/wdt.h 7 * @brief Header File for WDT Driver 8 * @version V1.0 9 * @date 9. Oct 2020 10 * @model wdt 11 ******************************************************************************/ 12 13 #ifndef _DRV_WDT_H_ 14 #define _DRV_WDT_H_ 15 16 #include <drv/common.h> 17 18 #ifdef __cplusplus 19 extern "C" { 20 #endif 21 22 typedef struct csi_wdt csi_wdt_t; 23 24 struct csi_wdt { 25 csi_dev_t dev; 26 void (*callback)(csi_wdt_t *wdt, void *arg); 27 void *arg; 28 void *priv; 29 }; 30 31 /** 32 \brief Initialize WDT interface. Initializes the resources needed for the WDT interface 33 \param[in] wdt Handle to operate 34 \param[in] idx WDT index 35 \return Error code \ref csi_error_t 36 */ 37 csi_error_t csi_wdt_init(csi_wdt_t *wdt, uint32_t idx); 38 39 /** 40 \brief De-initialize WDT interface. Stops operation and releases the software resources used by the interface 41 \param[in] wdt Handle to operate 42 \return None 43 */ 44 void csi_wdt_uninit(csi_wdt_t *wdt); 45 46 /** 47 \brief Set the WDT value 48 \param[in] wdt Handle to operate 49 \param[in] ms The timeout value(ms) 50 \return Error code \ref csi_error_t 51 */ 52 csi_error_t csi_wdt_set_timeout(csi_wdt_t *wdt, uint32_t ms); 53 54 /** 55 \brief Start the WDT 56 \param[in] wdt Handle to operate 57 \return Error code \ref csi_error_t 58 */ 59 csi_error_t csi_wdt_start(csi_wdt_t *wdt); 60 61 /** 62 \brief Stop the WDT 63 \param[in] wdt Handle to operate 64 \return None 65 */ 66 void csi_wdt_stop(csi_wdt_t *wdt); 67 68 /** 69 \brief Feed the WDT 70 \param[in] wdt Handle to operate 71 \return Error code \ref csi_error_t 72 */ 73 csi_error_t csi_wdt_feed(csi_wdt_t *wdt); 74 75 /** 76 \brief Get the remaining time to timeout 77 \param[in] wdt Handle to operate 78 \return The remaining time of WDT(ms) 79 */ 80 uint32_t csi_wdt_get_remaining_time(csi_wdt_t *wdt); 81 82 /** 83 \brief Check WDT is running 84 \param[in] wdt Handle to operate 85 \return 86 true - WDT is running 87 false - WDT is stopped 88 */ 89 bool csi_wdt_is_running(csi_wdt_t *wdt); 90 91 /** 92 \brief Attach the callback handler to WDT 93 \param[in] wdt Handle to operate 94 \param[in] callback Callback function 95 \param[in] arg Callback's param 96 \return Error code \ref csi_error_t 97 */ 98 csi_error_t csi_wdt_attach_callback(csi_wdt_t *wdt, void *callback, void *arg); 99 100 /** 101 \brief Detach the callback handler 102 \param[in] wdt Handle to operate 103 \return None 104 */ 105 void csi_wdt_detach_callback(csi_wdt_t *wdt); 106 107 /** 108 \brief Enable WDT power manage 109 \param[in] wdt Handle to operate 110 \return Error code \ref csi_error_t 111 */ 112 csi_error_t csi_wdt_enable_pm(csi_wdt_t *wdt); 113 114 /** 115 \brief Disable WDT power manage 116 \param[in] wdt Handle to operate 117 \return None 118 */ 119 void csi_wdt_disable_pm(csi_wdt_t *wdt); 120 121 #ifdef __cplusplus 122 } 123 #endif 124 125 #endif /* _DRV_WDT_H_ */ 126