Make driver optional; mark AVR specific parts as such.
authorbernie <bernie@38d2e660-2303-0410-9eaa-f027e97ec537>
Tue, 16 Nov 2004 21:02:07 +0000 (21:02 +0000)
committerbernie <bernie@38d2e660-2303-0410-9eaa-f027e97ec537>
Tue, 16 Nov 2004 21:02:07 +0000 (21:02 +0000)
git-svn-id: https://src.develer.com/svnoss/bertos/trunk@273 38d2e660-2303-0410-9eaa-f027e97ec537

drv/wdt.h

index 617cc0b9945dfa25dd6a000d94ff9b0ee27dc69b..3f356cbbcb519f03c179a0b48403f060b4e6a1f5 100755 (executable)
--- a/drv/wdt.h
+++ b/drv/wdt.h
@@ -14,6 +14,9 @@
 
 /*#*
  *#* $Log$
+ *#* Revision 1.2  2004/11/16 21:02:07  bernie
+ *#* Make driver optional; mark AVR specific parts as such.
+ *#*
  *#* Revision 1.1  2004/10/26 08:34:47  bernie
  *#* New DevLib module.
  *#*
 #ifndef DRV_WDT_H
 #define DRV_WDT_H
 
-#include <avr/io.h>
-#include <compiler.h>
-#include <cpu.h>
-#include <macros.h> // BV()
+#include <config.h>
+#include <compiler.h> // 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
+       #include <cpu.h>
+
+       #if CPU_AVR
+               #include <avr/io.h>
+               #include <macros.h> // BV()
+       #else
+               #error unknown CPU
+       #endif
+#endif /* CONFIG_WATCHDOG */
 
 /*!
  * Reset the watchdog timer.
  */
 INLINE void wdt_reset(void)
 {
-       __asm__ __volatile__ ("wdr");
+#if CONFIG_WATCHDOG
+       #if CPU_AVR
+               __asm__ __volatile__ ("wdr");
+       #else
+               #error unknown CPU
+       #endif
+#endif /* CONFIG_WATCHDOG */
 }
 
 /*!
@@ -41,31 +64,37 @@ INLINE void wdt_reset(void)
  */
 INLINE void wdt_init(uint8_t timeout)
 {
-#if CPU_AVR
-       WDTCR |= BV(WDCE) | BV(WDE);
-       WDTCR = timeout;
-#else
-       #error unknown CPU
-#endif
+#if CONFIG_WATCHDOG
+       #if CPU_AVR
+               WDTCR |= BV(WDCE) | BV(WDE);
+               WDTCR = timeout;
+       #else
+               #error unknown CPU
+       #endif
+#endif /* CONFIG_WATCHDOG */
 }
 
 INLINE void wdt_start(void)
 {
-#if CPU_AVR
-       WDTCR |= BV(WDE);
-#else
-       #error unknown CPU
-#endif
+#if CONFIG_WATCHDOG
+       #if CPU_AVR
+               WDTCR |= BV(WDE);
+       #else
+               #error unknown CPU
+       #endif
+#endif /* CONFIG_WATCHDOG */
 }
 
 INLINE void wdt_stop(void)
 {
-#if CPU_AVR
-       WDTCR |= BV(WDCE) | BV(WDE);
-       WDTCR &= ~BV(WDE);
-#else
-       #error unknown CPU
-#endif
+#if CONFIG_WATCHDOG
+       #if CPU_AVR
+               WDTCR |= BV(WDCE) | BV(WDE);
+               WDTCR &= ~BV(WDE);
+       #else
+               #error unknown CPU
+       #endif
+#endif /* CONFIG_WATCHDOG */
 }
 
 #endif /* DRV_WDT_H */