xref: /btstack/port/msp432p401lp-cc256x/ti/devices/msp432p4xx/driverlib/wdt_a.h (revision 5fd0122a3e19d95e11e1f3eb8a08a2b2acb2557e)
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