added main and defined M_PI

Dependencies:   BNOWrapper

Committer:
JesiMiranda
Date:
Tue Jul 30 21:06:04 2019 +0000
Revision:
7:b548a684290d
Child:
8:729ad465d6c9
added watchdog;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JesiMiranda 7:b548a684290d 1 /// @file Watchdog.h provides the interface to the Watchdog module
JesiMiranda 7:b548a684290d 2 ///
JesiMiranda 7:b548a684290d 3 /// This provides basic Watchdog service for the mbed. You can configure
JesiMiranda 7:b548a684290d 4 /// various timeout intervals that meet your system needs. Additionally,
JesiMiranda 7:b548a684290d 5 /// it is possible to identify if the Watchdog was the cause of any
JesiMiranda 7:b548a684290d 6 /// system restart, permitting the application code to take appropriate
JesiMiranda 7:b548a684290d 7 /// behavior.
JesiMiranda 7:b548a684290d 8 ///
JesiMiranda 7:b548a684290d 9 /// Adapted from Simon's Watchdog code from http://mbed.org/forum/mbed/topic/508/
JesiMiranda 7:b548a684290d 10 ///
JesiMiranda 7:b548a684290d 11 /// @note Copyright © 2011 by Smartware Computing, all rights reserved.
JesiMiranda 7:b548a684290d 12 /// This software may be used to derive new software, as long as
JesiMiranda 7:b548a684290d 13 /// this copyright statement remains in the source file.
JesiMiranda 7:b548a684290d 14 /// @author David Smart
JesiMiranda 7:b548a684290d 15 ///
JesiMiranda 7:b548a684290d 16 /// History
JesiMiranda 7:b548a684290d 17 /// \li v1.00 - 20110616: initial release with some documentation improvements
JesiMiranda 7:b548a684290d 18 ///
JesiMiranda 7:b548a684290d 19 #ifndef WATCHDOG_H
JesiMiranda 7:b548a684290d 20 #define WATCHDOG_H
JesiMiranda 7:b548a684290d 21 #include "mbed.h"
JesiMiranda 7:b548a684290d 22
JesiMiranda 7:b548a684290d 23 /// The Watchdog class provides the interface to the Watchdog feature
JesiMiranda 7:b548a684290d 24 ///
JesiMiranda 7:b548a684290d 25 /// Embedded programs, by their nature, are usually unattended. If things
JesiMiranda 7:b548a684290d 26 /// go wrong, it is usually important that the system attempts to recover.
JesiMiranda 7:b548a684290d 27 /// Aside from robust software, a hardware watchdog can monitor the
JesiMiranda 7:b548a684290d 28 /// system and initiate a system reset when appropriate.
JesiMiranda 7:b548a684290d 29 ///
JesiMiranda 7:b548a684290d 30 /// This Watchdog is patterned after one found elsewhere on the mbed site,
JesiMiranda 7:b548a684290d 31 /// however this one also provides a method for the application software
JesiMiranda 7:b548a684290d 32 /// to determine the cause of the reset - watchdog or otherwise.
JesiMiranda 7:b548a684290d 33 ///
JesiMiranda 7:b548a684290d 34 /// example:
JesiMiranda 7:b548a684290d 35 /// @code
JesiMiranda 7:b548a684290d 36 /// Watchdog wd;
JesiMiranda 7:b548a684290d 37 ///
JesiMiranda 7:b548a684290d 38 /// ...
JesiMiranda 7:b548a684290d 39 /// main() {
JesiMiranda 7:b548a684290d 40 /// if (wd.WatchdogCausedReset())
JesiMiranda 7:b548a684290d 41 /// pc.printf("Watchdog caused reset.\r\n");
JesiMiranda 7:b548a684290d 42 ///
JesiMiranda 7:b548a684290d 43 /// wd.Configure(3.0); // sets the timeout interval
JesiMiranda 7:b548a684290d 44 /// for (;;) {
JesiMiranda 7:b548a684290d 45 /// wd.Service(); // kick the dog before the timeout
JesiMiranda 7:b548a684290d 46 /// // do other work
JesiMiranda 7:b548a684290d 47 /// }
JesiMiranda 7:b548a684290d 48 /// }
JesiMiranda 7:b548a684290d 49 /// @endcode
JesiMiranda 7:b548a684290d 50 ///
JesiMiranda 7:b548a684290d 51 class Watchdog {
JesiMiranda 7:b548a684290d 52 public:
JesiMiranda 7:b548a684290d 53 /// Create a Watchdog object
JesiMiranda 7:b548a684290d 54 ///
JesiMiranda 7:b548a684290d 55 /// example:
JesiMiranda 7:b548a684290d 56 /// @code
JesiMiranda 7:b548a684290d 57 /// Watchdog wd; // placed before main
JesiMiranda 7:b548a684290d 58 /// @endcode
JesiMiranda 7:b548a684290d 59 Watchdog();
JesiMiranda 7:b548a684290d 60
JesiMiranda 7:b548a684290d 61 /// Configure the timeout for the Watchdog
JesiMiranda 7:b548a684290d 62 ///
JesiMiranda 7:b548a684290d 63 /// This configures the Watchdog service and starts it. It must
JesiMiranda 7:b548a684290d 64 /// be serviced before the timeout, or the system will be restarted.
JesiMiranda 7:b548a684290d 65 ///
JesiMiranda 7:b548a684290d 66 /// example:
JesiMiranda 7:b548a684290d 67 /// @code
JesiMiranda 7:b548a684290d 68 /// ...
JesiMiranda 7:b548a684290d 69 /// wd.Configure(1.4); // configure for a 1.4 second timeout
JesiMiranda 7:b548a684290d 70 /// ...
JesiMiranda 7:b548a684290d 71 /// @endcode
JesiMiranda 7:b548a684290d 72 ///
JesiMiranda 7:b548a684290d 73 /// @param[in] timeout in seconds, as a floating point number
JesiMiranda 7:b548a684290d 74 /// @returns none
JesiMiranda 7:b548a684290d 75 ///
JesiMiranda 7:b548a684290d 76 void Configure(float timeout);
JesiMiranda 7:b548a684290d 77
JesiMiranda 7:b548a684290d 78 /// Service the Watchdog so it does not cause a system reset
JesiMiranda 7:b548a684290d 79 ///
JesiMiranda 7:b548a684290d 80 /// example:
JesiMiranda 7:b548a684290d 81 /// @code
JesiMiranda 7:b548a684290d 82 /// wd.Service();
JesiMiranda 7:b548a684290d 83 /// @endcode
JesiMiranda 7:b548a684290d 84 /// @returns none
JesiMiranda 7:b548a684290d 85 void Service();
JesiMiranda 7:b548a684290d 86
JesiMiranda 7:b548a684290d 87 /// WatchdogCausedReset identifies if the cause of the system
JesiMiranda 7:b548a684290d 88 /// reset was the Watchdog
JesiMiranda 7:b548a684290d 89 ///
JesiMiranda 7:b548a684290d 90 /// example:
JesiMiranda 7:b548a684290d 91 /// @code
JesiMiranda 7:b548a684290d 92 /// if (wd.WatchdogCausedReset())) {
JesiMiranda 7:b548a684290d 93 /// @endcode
JesiMiranda 7:b548a684290d 94 ///
JesiMiranda 7:b548a684290d 95 /// @returns true if the Watchdog was the cause of the reset
JesiMiranda 7:b548a684290d 96 bool WatchdogCausedReset();
JesiMiranda 7:b548a684290d 97 private:
JesiMiranda 7:b548a684290d 98 bool wdreset;
JesiMiranda 7:b548a684290d 99 };
JesiMiranda 7:b548a684290d 100
JesiMiranda 7:b548a684290d 101 #endif // WATCHDOG_H