1*5fd0122aSMatthias Ringwald /* --COPYRIGHT--,BSD 2*5fd0122aSMatthias Ringwald * Copyright (c) 2017, Texas Instruments Incorporated 3*5fd0122aSMatthias Ringwald * All rights reserved. 4*5fd0122aSMatthias Ringwald * 5*5fd0122aSMatthias Ringwald * Redistribution and use in source and binary forms, with or without 6*5fd0122aSMatthias Ringwald * modification, are permitted provided that the following conditions 7*5fd0122aSMatthias Ringwald * are met: 8*5fd0122aSMatthias Ringwald * 9*5fd0122aSMatthias Ringwald * * Redistributions of source code must retain the above copyright 10*5fd0122aSMatthias Ringwald * notice, this list of conditions and the following disclaimer. 11*5fd0122aSMatthias Ringwald * 12*5fd0122aSMatthias Ringwald * * Redistributions in binary form must reproduce the above copyright 13*5fd0122aSMatthias Ringwald * notice, this list of conditions and the following disclaimer in the 14*5fd0122aSMatthias Ringwald * documentation and/or other materials provided with the distribution. 15*5fd0122aSMatthias Ringwald * 16*5fd0122aSMatthias Ringwald * * Neither the name of Texas Instruments Incorporated nor the names of 17*5fd0122aSMatthias Ringwald * its contributors may be used to endorse or promote products derived 18*5fd0122aSMatthias Ringwald * from this software without specific prior written permission. 19*5fd0122aSMatthias Ringwald * 20*5fd0122aSMatthias Ringwald * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21*5fd0122aSMatthias Ringwald * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 22*5fd0122aSMatthias Ringwald * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 23*5fd0122aSMatthias Ringwald * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 24*5fd0122aSMatthias Ringwald * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 25*5fd0122aSMatthias Ringwald * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 26*5fd0122aSMatthias Ringwald * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 27*5fd0122aSMatthias Ringwald * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 28*5fd0122aSMatthias Ringwald * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 29*5fd0122aSMatthias Ringwald * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 30*5fd0122aSMatthias Ringwald * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31*5fd0122aSMatthias Ringwald * --/COPYRIGHT--*/ 32*5fd0122aSMatthias Ringwald #ifndef __WATCHDOG_H__ 33*5fd0122aSMatthias Ringwald #define __WATCHDOG_H__ 34*5fd0122aSMatthias Ringwald 35*5fd0122aSMatthias Ringwald //***************************************************************************** 36*5fd0122aSMatthias Ringwald // 37*5fd0122aSMatthias Ringwald //! \addtogroup wdt_api 38*5fd0122aSMatthias Ringwald //! @{ 39*5fd0122aSMatthias Ringwald // 40*5fd0122aSMatthias Ringwald //***************************************************************************** 41*5fd0122aSMatthias Ringwald 42*5fd0122aSMatthias Ringwald //***************************************************************************** 43*5fd0122aSMatthias Ringwald // 44*5fd0122aSMatthias Ringwald // If building with a C++ compiler, make all of the definitions in this header 45*5fd0122aSMatthias Ringwald // have a C binding. 46*5fd0122aSMatthias Ringwald // 47*5fd0122aSMatthias Ringwald //***************************************************************************** 48*5fd0122aSMatthias Ringwald #ifdef __cplusplus 49*5fd0122aSMatthias Ringwald extern "C" 50*5fd0122aSMatthias Ringwald { 51*5fd0122aSMatthias Ringwald #endif 52*5fd0122aSMatthias Ringwald 53*5fd0122aSMatthias Ringwald /* Includes */ 54*5fd0122aSMatthias Ringwald #include <ti/devices/msp432p4xx/inc/msp.h> 55*5fd0122aSMatthias Ringwald #include <stdint.h> 56*5fd0122aSMatthias Ringwald 57*5fd0122aSMatthias Ringwald #ifdef __MCU_HAS_SYSCTL_A__ 58*5fd0122aSMatthias Ringwald 59*5fd0122aSMatthias Ringwald #define WDT_A_HARD_RESET SYSCTL_A_HARD_RESET 60*5fd0122aSMatthias Ringwald #define WDT_A_SOFT_RESET SYSCTL_A_SOFT_RESET 61*5fd0122aSMatthias Ringwald 62*5fd0122aSMatthias Ringwald #else 63*5fd0122aSMatthias Ringwald 64*5fd0122aSMatthias Ringwald #define WDT_A_HARD_RESET SYSCTL_HARD_RESET 65*5fd0122aSMatthias Ringwald #define WDT_A_SOFT_RESET SYSCTL_SOFT_RESET 66*5fd0122aSMatthias Ringwald 67*5fd0122aSMatthias Ringwald #endif 68*5fd0122aSMatthias Ringwald 69*5fd0122aSMatthias Ringwald //***************************************************************************** 70*5fd0122aSMatthias Ringwald // 71*5fd0122aSMatthias Ringwald // The following are values that can be passed to the clockSelect parameter for 72*5fd0122aSMatthias Ringwald // functions: WDT_A_watchdogTimerInit(), and WDT_A_intervalTimerInit(). 73*5fd0122aSMatthias Ringwald // 74*5fd0122aSMatthias Ringwald //***************************************************************************** 75*5fd0122aSMatthias Ringwald #define WDT_A_CLOCKSOURCE_SMCLK (WDT_A_CTL_SSEL_0) 76*5fd0122aSMatthias Ringwald #define WDT_A_CLOCKSOURCE_ACLK (WDT_A_CTL_SSEL_1) 77*5fd0122aSMatthias Ringwald #define WDT_A_CLOCKSOURCE_VLOCLK (WDT_A_CTL_SSEL_2) 78*5fd0122aSMatthias Ringwald #define WDT_A_CLOCKSOURCE_BCLK (WDT_A_CTL_SSEL_3) 79*5fd0122aSMatthias Ringwald 80*5fd0122aSMatthias Ringwald //***************************************************************************** 81*5fd0122aSMatthias Ringwald // 82*5fd0122aSMatthias Ringwald // The following are values that can be passed to the clockDivider parameter 83*5fd0122aSMatthias Ringwald // for functions: WDT_A_watchdogTimerInit(), and WDT_A_intervalTimerInit(). 84*5fd0122aSMatthias Ringwald // 85*5fd0122aSMatthias Ringwald //***************************************************************************** 86*5fd0122aSMatthias Ringwald #define WDT_A_CLOCKDIVIDER_2G (WDT_A_CTL_IS_0) 87*5fd0122aSMatthias Ringwald #define WDT_A_CLOCKDIVIDER_128M (WDT_A_CTL_IS_1) 88*5fd0122aSMatthias Ringwald #define WDT_A_CLOCKDIVIDER_8192K (WDT_A_CTL_IS_2) 89*5fd0122aSMatthias Ringwald #define WDT_A_CLOCKDIVIDER_512K (WDT_A_CTL_IS_3) 90*5fd0122aSMatthias Ringwald #define WDT_A_CLOCKDIVIDER_32K (WDT_A_CTL_IS_4) 91*5fd0122aSMatthias Ringwald #define WDT_A_CLOCKDIVIDER_8192 (WDT_A_CTL_IS_5) 92*5fd0122aSMatthias Ringwald #define WDT_A_CLOCKDIVIDER_512 (WDT_A_CTL_IS_6) 93*5fd0122aSMatthias Ringwald #define WDT_A_CLOCKDIVIDER_64 (WDT_A_CTL_IS_7) 94*5fd0122aSMatthias Ringwald #define WDT_A_CLOCKITERATIONS_2G WDT_A_CLOCKDIVIDER_2G 95*5fd0122aSMatthias Ringwald #define WDT_A_CLOCKITERATIONS_128M WDT_A_CLOCKDIVIDER_128M 96*5fd0122aSMatthias Ringwald #define WDT_A_CLOCKITERATIONS_8192K WDT_A_CLOCKDIVIDER_8192K 97*5fd0122aSMatthias Ringwald #define WDT_A_CLOCKITERATIONS_512K WDT_A_CLOCKDIVIDER_512K 98*5fd0122aSMatthias Ringwald #define WDT_A_CLOCKITERATIONS_32K WDT_A_CLOCKDIVIDER_32K 99*5fd0122aSMatthias Ringwald #define WDT_A_CLOCKITERATIONS_8192 WDT_A_CLOCKDIVIDER_8192 100*5fd0122aSMatthias Ringwald #define WDT_A_CLOCKITERATIONS_512 WDT_A_CLOCKDIVIDER_512 101*5fd0122aSMatthias Ringwald #define WDT_A_CLOCKITERATIONS_64 WDT_A_CLOCKDIVIDER_64 102*5fd0122aSMatthias Ringwald 103*5fd0122aSMatthias Ringwald //***************************************************************************** 104*5fd0122aSMatthias Ringwald // 105*5fd0122aSMatthias Ringwald // Prototypes for the APIs. 106*5fd0122aSMatthias Ringwald // 107*5fd0122aSMatthias Ringwald //***************************************************************************** 108*5fd0122aSMatthias Ringwald 109*5fd0122aSMatthias Ringwald //***************************************************************************** 110*5fd0122aSMatthias Ringwald // 111*5fd0122aSMatthias Ringwald //! Holds the Watchdog Timer. 112*5fd0122aSMatthias Ringwald //! 113*5fd0122aSMatthias Ringwald //! This function stops the watchdog timer from running. This way no interrupt 114*5fd0122aSMatthias Ringwald //! or PUC is asserted. 115*5fd0122aSMatthias Ringwald //! 116*5fd0122aSMatthias Ringwald //! \return None 117*5fd0122aSMatthias Ringwald // 118*5fd0122aSMatthias Ringwald //***************************************************************************** 119*5fd0122aSMatthias Ringwald extern void WDT_A_holdTimer(void); 120*5fd0122aSMatthias Ringwald 121*5fd0122aSMatthias Ringwald //***************************************************************************** 122*5fd0122aSMatthias Ringwald // 123*5fd0122aSMatthias Ringwald //! Starts the Watchdog Timer. 124*5fd0122aSMatthias Ringwald //! 125*5fd0122aSMatthias Ringwald //! This function starts the watchdog timer functionality to start counting. 126*5fd0122aSMatthias Ringwald //! 127*5fd0122aSMatthias Ringwald //! \return None 128*5fd0122aSMatthias Ringwald // 129*5fd0122aSMatthias Ringwald //***************************************************************************** 130*5fd0122aSMatthias Ringwald extern void WDT_A_startTimer(void); 131*5fd0122aSMatthias Ringwald 132*5fd0122aSMatthias Ringwald //***************************************************************************** 133*5fd0122aSMatthias Ringwald // 134*5fd0122aSMatthias Ringwald //! Clears the timer counter of the Watchdog Timer. 135*5fd0122aSMatthias Ringwald //! 136*5fd0122aSMatthias Ringwald //! This function clears the watchdog timer count to 0x0000h. This function 137*5fd0122aSMatthias Ringwald //! is used to "service the dog" when operating in watchdog mode. 138*5fd0122aSMatthias Ringwald //! 139*5fd0122aSMatthias Ringwald //! \return None 140*5fd0122aSMatthias Ringwald // 141*5fd0122aSMatthias Ringwald //***************************************************************************** 142*5fd0122aSMatthias Ringwald extern void WDT_A_clearTimer(void); 143*5fd0122aSMatthias Ringwald 144*5fd0122aSMatthias Ringwald //***************************************************************************** 145*5fd0122aSMatthias Ringwald // 146*5fd0122aSMatthias Ringwald //! Sets the clock source for the Watchdog Timer in watchdog mode. 147*5fd0122aSMatthias Ringwald //! 148*5fd0122aSMatthias Ringwald //! \param clockSelect is the clock source that the watchdog timer will use. 149*5fd0122aSMatthias Ringwald //! Valid values are 150*5fd0122aSMatthias Ringwald //! - \b WDT_A_CLOCKSOURCE_SMCLK [Default] 151*5fd0122aSMatthias Ringwald //! - \b WDT_A_CLOCKSOURCE_ACLK 152*5fd0122aSMatthias Ringwald //! - \b WDT_A_CLOCKSOURCE_VLOCLK 153*5fd0122aSMatthias Ringwald //! - \b WDT_A_CLOCKSOURCE_BCLK 154*5fd0122aSMatthias Ringwald //! \param clockIterations is the number of clock iterations for a watchdog 155*5fd0122aSMatthias Ringwald //! timeout. 156*5fd0122aSMatthias Ringwald //! Valid values are 157*5fd0122aSMatthias Ringwald //! - \b WDT_A_CLOCKITERATIONS_2G [Default] 158*5fd0122aSMatthias Ringwald //! - \b WDT_A_CLOCKITERATIONS_128M 159*5fd0122aSMatthias Ringwald //! - \b WDT_A_CLOCKITERATIONS_8192K 160*5fd0122aSMatthias Ringwald //! - \b WDT_A_CLOCKITERATIONS_512K 161*5fd0122aSMatthias Ringwald //! - \b WDT_A_CLOCKITERATIONS_32K 162*5fd0122aSMatthias Ringwald //! - \b WDT_A_CLOCKITERATIONS_8192 163*5fd0122aSMatthias Ringwald //! - \b WDT_A_CLOCKITERATIONS_512 164*5fd0122aSMatthias Ringwald //! - \b WDT_A_CLOCKITERATIONS_64 165*5fd0122aSMatthias Ringwald //! 166*5fd0122aSMatthias Ringwald //! This function sets the watchdog timer in watchdog mode, which will cause a 167*5fd0122aSMatthias Ringwald //! PUC when the timer overflows. When in the mode, a PUC can be avoided with a 168*5fd0122aSMatthias Ringwald //! call to WDT_A_resetTimer() before the timer runs out. 169*5fd0122aSMatthias Ringwald //! 170*5fd0122aSMatthias Ringwald //! \return None 171*5fd0122aSMatthias Ringwald // 172*5fd0122aSMatthias Ringwald //***************************************************************************** 173*5fd0122aSMatthias Ringwald extern void WDT_A_initWatchdogTimer(uint_fast8_t clockSelect, 174*5fd0122aSMatthias Ringwald uint_fast8_t clockDivider); 175*5fd0122aSMatthias Ringwald 176*5fd0122aSMatthias Ringwald //***************************************************************************** 177*5fd0122aSMatthias Ringwald // 178*5fd0122aSMatthias Ringwald //! Sets the clock source for the Watchdog Timer in timer interval mode. 179*5fd0122aSMatthias Ringwald //! 180*5fd0122aSMatthias Ringwald //! \param clockSelect is the clock source that the watchdog timer will use. 181*5fd0122aSMatthias Ringwald //! Valid values are 182*5fd0122aSMatthias Ringwald //! - \b WDT_A_CLOCKSOURCE_SMCLK [Default] 183*5fd0122aSMatthias Ringwald //! - \b WDT_A_CLOCKSOURCE_ACLK 184*5fd0122aSMatthias Ringwald //! - \b WDT_A_CLOCKSOURCE_VLOCLK 185*5fd0122aSMatthias Ringwald //! - \b WDT_A_CLOCKSOURCE_BCLK 186*5fd0122aSMatthias Ringwald //! \param clockIterations is the number of clock iterations for a watchdog 187*5fd0122aSMatthias Ringwald //! interval. 188*5fd0122aSMatthias Ringwald //! Valid values are 189*5fd0122aSMatthias Ringwald //! - \b WDT_A_CLOCKITERATIONS_2G [Default] 190*5fd0122aSMatthias Ringwald //! - \b WDT_A_CLOCKITERATIONS_128M 191*5fd0122aSMatthias Ringwald //! - \b WDT_A_CLOCKITERATIONS_8192K 192*5fd0122aSMatthias Ringwald //! - \b WDT_A_CLOCKITERATIONS_512K 193*5fd0122aSMatthias Ringwald //! - \b WDT_A_CLOCKITERATIONS_32K 194*5fd0122aSMatthias Ringwald //! - \b WDT_A_CLOCKITERATIONS_8192 195*5fd0122aSMatthias Ringwald //! - \b WDT_A_CLOCKITERATIONS_512 196*5fd0122aSMatthias Ringwald //! - \b WDT_A_CLOCKITERATIONS_64 197*5fd0122aSMatthias Ringwald //! 198*5fd0122aSMatthias Ringwald //! This function sets the watchdog timer as timer interval mode, which will 199*5fd0122aSMatthias Ringwald //! assert an interrupt without causing a PUC. 200*5fd0122aSMatthias Ringwald //! 201*5fd0122aSMatthias Ringwald //! \return None 202*5fd0122aSMatthias Ringwald // 203*5fd0122aSMatthias Ringwald //***************************************************************************** 204*5fd0122aSMatthias Ringwald extern void WDT_A_initIntervalTimer(uint_fast8_t clockSelect, 205*5fd0122aSMatthias Ringwald uint_fast8_t clockDivider); 206*5fd0122aSMatthias Ringwald 207*5fd0122aSMatthias Ringwald //***************************************************************************** 208*5fd0122aSMatthias Ringwald // 209*5fd0122aSMatthias Ringwald //! Registers an interrupt handler for the watchdog interrupt. 210*5fd0122aSMatthias Ringwald //! 211*5fd0122aSMatthias Ringwald //! \param intHandler is a pointer to the function to be called when the 212*5fd0122aSMatthias Ringwald //! watchdog interrupt occurs. 213*5fd0122aSMatthias Ringwald //! 214*5fd0122aSMatthias Ringwald //! \return None. 215*5fd0122aSMatthias Ringwald // 216*5fd0122aSMatthias Ringwald //***************************************************************************** 217*5fd0122aSMatthias Ringwald extern void WDT_A_registerInterrupt(void (*intHandler)(void)); 218*5fd0122aSMatthias Ringwald 219*5fd0122aSMatthias Ringwald //***************************************************************************** 220*5fd0122aSMatthias Ringwald // 221*5fd0122aSMatthias Ringwald //! Unregisters the interrupt handler for the watchdog. 222*5fd0122aSMatthias Ringwald //! 223*5fd0122aSMatthias Ringwald //! This function unregisters the handler to be called when a watchdog 224*5fd0122aSMatthias Ringwald //! interrupt occurs. This function also masks off the interrupt in the 225*5fd0122aSMatthias Ringwald //! interrupt controller so that the interrupt handler no longer is called. 226*5fd0122aSMatthias Ringwald //! 227*5fd0122aSMatthias Ringwald //! \sa Interrupt_registerInterrupt() for important information about 228*5fd0122aSMatthias Ringwald //! registering interrupt handlers. 229*5fd0122aSMatthias Ringwald //! 230*5fd0122aSMatthias Ringwald //! \return None. 231*5fd0122aSMatthias Ringwald // 232*5fd0122aSMatthias Ringwald //***************************************************************************** 233*5fd0122aSMatthias Ringwald extern void WDT_A_unregisterInterrupt(void); 234*5fd0122aSMatthias Ringwald 235*5fd0122aSMatthias Ringwald //***************************************************************************** 236*5fd0122aSMatthias Ringwald // 237*5fd0122aSMatthias Ringwald //! Sets the type of RESET that happens when a watchdog password violation 238*5fd0122aSMatthias Ringwald //! occurs. 239*5fd0122aSMatthias Ringwald //! 240*5fd0122aSMatthias Ringwald //! \param resetType The type of reset to set 241*5fd0122aSMatthias Ringwald //! 242*5fd0122aSMatthias Ringwald //! The \e resetType parameter must be only one of the following values: 243*5fd0122aSMatthias Ringwald //! - \b WDT_A_HARD_RESET 244*5fd0122aSMatthias Ringwald //! - \b WDT_A_SOFT_RESET 245*5fd0122aSMatthias Ringwald //! 246*5fd0122aSMatthias Ringwald //! \return None. 247*5fd0122aSMatthias Ringwald // 248*5fd0122aSMatthias Ringwald // 249*5fd0122aSMatthias Ringwald //***************************************************************************** 250*5fd0122aSMatthias Ringwald extern void WDT_A_setPasswordViolationReset(uint_fast8_t resetType); 251*5fd0122aSMatthias Ringwald 252*5fd0122aSMatthias Ringwald //***************************************************************************** 253*5fd0122aSMatthias Ringwald // 254*5fd0122aSMatthias Ringwald //! Sets the type of RESET that happens when a watchdog timeout occurs. 255*5fd0122aSMatthias Ringwald //! 256*5fd0122aSMatthias Ringwald //! \param resetType The type of reset to set 257*5fd0122aSMatthias Ringwald //! 258*5fd0122aSMatthias Ringwald //! The \e resetType parameter must be only one of the following values: 259*5fd0122aSMatthias Ringwald //! - \b WDT_A_HARD_RESET 260*5fd0122aSMatthias Ringwald //! - \b WDT_A_SOFT_RESET 261*5fd0122aSMatthias Ringwald //! 262*5fd0122aSMatthias Ringwald //! \return None. 263*5fd0122aSMatthias Ringwald // 264*5fd0122aSMatthias Ringwald // 265*5fd0122aSMatthias Ringwald //***************************************************************************** 266*5fd0122aSMatthias Ringwald extern void WDT_A_setTimeoutReset(uint_fast8_t resetType); 267*5fd0122aSMatthias Ringwald 268*5fd0122aSMatthias Ringwald /* Defines for future devices that might have multiple instances */ 269*5fd0122aSMatthias Ringwald #define WDT_A_holdTimerMultipleTimer(a) WDT_A_holdTimer() 270*5fd0122aSMatthias Ringwald #define WDT_A_startTimerMultipleTimer(a) WDT_A_startTimer() 271*5fd0122aSMatthias Ringwald #define WDT_A_resetTimerMultipleTimer(a) WDT_A_clearTimer() 272*5fd0122aSMatthias Ringwald #define WDT_A_initWatchdogTimerMultipleTimer(a,b,c) WDT_A_initWatchdogTimer(b,c) 273*5fd0122aSMatthias Ringwald #define WDT_A_initIntervalTimerMultipleTimer(a,b,c) WDT_A_initIntervalTimer(b,c) 274*5fd0122aSMatthias Ringwald #define WDT_A_registerInterruptMultipleTimer(a,b) WDT_A_registerInterrupt(b) 275*5fd0122aSMatthias Ringwald #define WDT_A_unregisterInterruptMultipleTimer(a) WDT_A_unregisterInterrupt() 276*5fd0122aSMatthias Ringwald 277*5fd0122aSMatthias Ringwald /* Backwards compatibility layer */ 278*5fd0122aSMatthias Ringwald #define WDT_A_hold WDT_A_holdTimerMultipleTimer 279*5fd0122aSMatthias Ringwald #define WDT_A_start WDT_A_startTimerMultipleTimer 280*5fd0122aSMatthias Ringwald #define WDT_A_resetTimer WDT_A_resetTimerMultipleTimer 281*5fd0122aSMatthias Ringwald #define WDT_A_watchdogTimerInit WDT_A_initWatchdogTimerMultipleTimer 282*5fd0122aSMatthias Ringwald #define WDT_A_intervalTimerInit WDT_A_initIntervalTimerMultipleTimer 283*5fd0122aSMatthias Ringwald 284*5fd0122aSMatthias Ringwald //***************************************************************************** 285*5fd0122aSMatthias Ringwald // 286*5fd0122aSMatthias Ringwald // Mark the end of the C bindings section for C++ compilers. 287*5fd0122aSMatthias Ringwald // 288*5fd0122aSMatthias Ringwald //***************************************************************************** 289*5fd0122aSMatthias Ringwald #ifdef __cplusplus 290*5fd0122aSMatthias Ringwald } 291*5fd0122aSMatthias Ringwald #endif 292*5fd0122aSMatthias Ringwald 293*5fd0122aSMatthias Ringwald //***************************************************************************** 294*5fd0122aSMatthias Ringwald // 295*5fd0122aSMatthias Ringwald // Close the Doxygen group. 296*5fd0122aSMatthias Ringwald //! @} 297*5fd0122aSMatthias Ringwald // 298*5fd0122aSMatthias Ringwald //***************************************************************************** 299*5fd0122aSMatthias Ringwald 300*5fd0122aSMatthias Ringwald #endif // __WATCHDOG_H__ 301