/** * \file * * * * \author Bernie Innocenti * * \brief Watchdog module, supplies a simple API to manage wdt on supported target. * * $WIZ$ module_name = "wdt" * $WIZ$ module_configuration = "bertos/cfg/cfg_wdt.h" * $WIZ$ module_supports = "avr" */ #ifndef DRV_WDT_H #define DRV_WDT_H #include "cfg/cfg_wdt.h" #include // INLINE /* Configury sanity check */ #if !defined(CONFIG_WATCHDOG) || (CONFIG_WATCHDOG != 0 && CONFIG_WATCHDOG != 1) #error CONFIG_WATCHDOG must be defined to either 0 or 1 #endif #if OS_HOSTED #include #include #if OS_QT #include #elif OS_POSIX #include #else #error unknown CPU #endif #elif CONFIG_WATCHDOG #include CPU_HEADER(wdt) #endif /* CONFIG_WATCHDOG */ #if OS_HOSTED || !CONFIG_WATCHDOG /** * Reset the watchdog timer. */ INLINE void wdt_reset(void) { #if CONFIG_WATCHDOG #if OS_POSIX static struct timeval tv = { 0, 0 }; select(0, NULL, NULL, NULL, &tv); #endif #endif /* CONFIG_WATCHDOG */ } /** * Start the watchdog timer that fire at the select * timeout. * * \param timeout this value is target dependant. * See the target documentation for more details. */ INLINE void wdt_start(uint32_t timeout) { #if CONFIG_WATCHDOG #if OS_QT // Create a dummy QApplication object if (!qApp) { int argc; new QApplication(argc, (char **)NULL); } (void)timeout; #elif OS_POSIX (void)timeout; // NOP #endif #endif /* CONFIG_WATCHDOG */ (void)timeout; // NOP } INLINE void wdt_stop(void) { #if CONFIG_WATCHDOG #if OS_QT // NOP #elif OS_POSIX // NOP #else #error unknown CPU #endif #endif /* CONFIG_WATCHDOG */ } #endif /* OS_HOSTED || !CONFIG_WATCHDOG */ #endif /* DRV_WDT_H */