Watchdog¶
Overview¶
API Reference¶
-
group
watchdog_interface
Watchdog Interface.
Watchdog Reset Behavior.
Reset behavior after timeout.
-
WDT_FLAG_RESET_NONE
¶ No reset
-
WDT_FLAG_RESET_CPU_CORE
¶ CPU core reset
-
WDT_FLAG_RESET_SOC
¶ Global SoC reset
Defines
-
WDT_OPT_PAUSE_IN_SLEEP
¶ Pause watchdog timer when CPU is in sleep state.
-
WDT_OPT_PAUSE_HALTED_BY_DBG
¶ Pause watchdog timer when CPU is halted by the debugger.
-
WDT_FLAG_RESET_SHIFT
¶ Watchdog reset flag bit field mask shift.
-
WDT_FLAG_RESET_MASK
¶ Watchdog reset flag bit field mask.
Typedefs
-
typedef int (*
wdt_api_setup
)(const struct device *dev, uint8_t options)¶ Callback API for setting up watchdog instance. See wdt_setup() for argument descriptions.
-
typedef int (*
wdt_api_disable
)(const struct device *dev)¶ Callback API for disabling watchdog instance. See wdt_disable() for argument descriptions.
-
typedef int (*
wdt_api_install_timeout
)(const struct device *dev, const struct wdt_timeout_cfg *cfg)¶ Callback API for installing new timeout. See wdt_install_timeout() for argument descriptions.
Functions
-
int
wdt_setup
(const struct device *dev, uint8_t options)¶ Set up watchdog instance.
This function is used for configuring global watchdog settings that affect all timeouts. It should be called after installing timeouts. After successful return, all installed timeouts are valid and must be serviced periodically by calling wdt_feed().
- Parameters
dev – Pointer to the device structure for the driver instance.
options – Configuration options as defined by the WDT_OPT_* constants
- Returns 0
If successful.
- Returns -ENOTSUP
If any of the set options is not supported.
- Returns -EBUSY
If watchdog instance has been already setup.
-
int
wdt_disable
(const struct device *dev)¶ Disable watchdog instance.
This function disables the watchdog instance and automatically uninstalls all timeouts. To set up a new watchdog, install timeouts and call wdt_setup() again. Not all watchdogs can be restarted after they are disabled.
- Parameters
dev – Pointer to the device structure for the driver instance.
- Returns 0
If successful.
- Returns -EFAULT
If watchdog instance is not enabled.
- Returns -EPERM
If watchdog can not be disabled directly by application code.
-
static inline int
wdt_install_timeout
(const struct device *dev, const struct wdt_timeout_cfg *cfg)¶ Install new timeout.
This function must be used before wdt_setup(). Changes applied here have no effects until wdt_setup() is called.
- Parameters
dev – Pointer to the device structure for the driver instance.
cfg – Pointer to timeout configuration structure.
- Returns channel_id
If successful, a non-negative value indicating the index of the channel to which the timeout was assigned. This value is supposed to be used as the parameter in calls to wdt_feed().
- Returns -EBUSY
If timeout can not be installed while watchdog has already been setup.
- Returns -ENOMEM
If no more timeouts can be installed.
- Returns -ENOTSUP
If any of the set flags is not supported.
- Returns -EINVAL
If any of the window timeout value is out of possible range. This value is also returned if watchdog supports only one timeout value for all timeouts and the supplied timeout window differs from windows for alarms installed so far.
-
int
wdt_feed
(const struct device *dev, int channel_id)¶ Feed specified watchdog timeout.
- Parameters
dev – Pointer to the device structure for the driver instance.
channel_id – Index of the fed channel.
- Returns 0
If successful.
- Returns -EAGAIN
If completing the feed operation would stall the caller, for example due to an in-progress watchdog operation such as a previous
wdt_feed()
.- Returns -EINVAL
If there is no installed timeout for supplied channel.
-
struct
wdt_window
¶ - #include <watchdog.h>
Watchdog timeout window.
Each installed timeout needs feeding within the specified time window, otherwise the watchdog will trigger. If the watchdog instance does not support window timeouts then min value must be equal to 0.
Note
If specified values can not be precisely set they are always rounded up.
- param min
Lower limit of watchdog feed timeout in milliseconds.
- param max
Upper limit of watchdog feed timeout in milliseconds.
-
struct
wdt_timeout_cfg
¶ - #include <watchdog.h>
Watchdog timeout configuration struct.
- param window
Timing parameters of watchdog timeout.
- param callback
Timeout callback. Passing NULL means that no callback will be run.
- param next
Pointer to the next timeout configuration. This pointer is used for watchdogs with staged timeouts functionality. Value must be NULL for single stage timeout.
- param flags
Bit field with following parts:
reset [ 0 : 1 ] - perform specified reset after timeout/callback
-