From 1260bb120279dc22498c875ac4239bf44b5917bd Mon Sep 17 00:00:00 2001 From: asterix Date: Mon, 1 Dec 2008 18:10:44 +0000 Subject: [PATCH] Move watchdog function platform depend to specific cpu directory. git-svn-id: https://src.develer.com/svnoss/bertos/trunk@1948 38d2e660-2303-0410-9eaa-f027e97ec537 --- bertos/drv/wdt.h | 155 ++++++++++++++++++++--------------------------- 1 file changed, 65 insertions(+), 90 deletions(-) diff --git a/bertos/drv/wdt.h b/bertos/drv/wdt.h index 55b74264..85f33f82 100644 --- a/bertos/drv/wdt.h +++ b/bertos/drv/wdt.h @@ -41,15 +41,16 @@ #define DRV_WDT_H #include "cfg/cfg_wdt.h" -#include // INLINE #include "cfg/cfg_arch.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 CONFIG_WATCHDOG +#if OS_HOSTED || !CONFIG_WATCHDOG #include #include @@ -57,106 +58,80 @@ #include #elif OS_POSIX #include - #elif CPU_AVR - #include - #include // BV() - #if CPU_AVR_ATMEGA1281 // Name is different in atmega1281 - #define WDTCR WDTCSR - #endif - #elif defined(ARCH_FREERTOS) && (ARCH & ARCH_FREERTOS) - #include /* taskYIELD() */ #else #error unknown CPU #endif #endif /* CONFIG_WATCHDOG */ -/** - * Reset the watchdog timer. - */ -INLINE void wdt_reset(void) -{ -#if CONFIG_WATCHDOG - #if OS_QT - // Let Qt handle events - ASSERT(qApp); - qApp->processEvents(); - #elif OS_POSIX - static struct timeval tv = { 0, 0 }; - select(0, NULL, NULL, NULL, &tv); - #elif defined(ARCH_FREERTOS) && (ARCH & ARCH_FREERTOS) - vTaskDelay(1); - #elif CPU_AVR - __asm__ __volatile__ ("wdr"); - #else - #error unknown CPU - #endif -#endif /* CONFIG_WATCHDOG */ -} -/** - * Set watchdog timer timeout. - * - * \param timeout 0: 16.3ms, 7: 2.1s - */ -INLINE void wdt_init(uint8_t timeout) -{ -#if CONFIG_WATCHDOG - #if OS_QT - // Create a dummy QApplication object - if (!qApp) - { - int argc; - new QApplication(argc, (char **)NULL); - } +#if OS_HOSTED || !CONFIG_WATCHDOG + /** + * Reset the watchdog timer. + */ + INLINE void wdt_reset(void) + { + #if CONFIG_WATCHDOG + #if OS_QT + // Let Qt handle events + ASSERT(qApp); + qApp->processEvents(); + #elif OS_POSIX + static struct timeval tv = { 0, 0 }; + select(0, NULL, NULL, NULL, &tv); + #endif + #endif /* CONFIG_WATCHDOG */ + } + + /** + * Set watchdog timer timeout. + * + * \param timeout 0: 16.3ms, 7: 2.1s + */ + INLINE void wdt_init(uint8_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 + #else + #error unknown CPU + #endif + #endif /* CONFIG_WATCHDOG */ (void)timeout; - #elif OS_POSIX - (void)timeout; // NOP - #elif defined(ARCH_FREERTOS) && (ARCH & ARCH_FREERTOS) - /* nop */ - #elif CPU_AVR - WDTCR |= BV(WDCE) | BV(WDE); - WDTCR = timeout; - #else - #error unknown CPU - #endif -#else - (void)timeout; -#endif /* CONFIG_WATCHDOG */ -} + } -INLINE void wdt_start(void) -{ + INLINE void wdt_start(void) + { #if CONFIG_WATCHDOG - #if OS_QT - // NOP - #elif OS_POSIX - // NOP - #elif defined(ARCH_FREERTOS) && (ARCH & ARCH_FREERTOS) - /* nop */ - #elif CPU_AVR - WDTCR |= BV(WDE); - #else - #error unknown CPU - #endif + #if OS_QT + // NOP + #elif OS_POSIX + // NOP + #else + #error unknown CPU + #endif #endif /* CONFIG_WATCHDOG */ -} + } -INLINE void wdt_stop(void) -{ + INLINE void wdt_stop(void) + { #if CONFIG_WATCHDOG - #if OS_QT - // NOP - #elif OS_POSIX - // NOP - #elif defined(ARCH_FREERTOS) && (ARCH & ARCH_FREERTOS) - /* nop */ - #elif CPU_AVR - WDTCR |= BV(WDCE) | BV(WDE); - WDTCR &= ~BV(WDE); - #else - #error unknown CPU - #endif + #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 */ -- 2.25.1