mirror of https://github.com/ARMmbed/mbed-os.git
Watchdog: clean-up start
parent
b166acd1cb
commit
a3599414e1
|
|
@ -33,21 +33,23 @@ Watchdog::~Watchdog()
|
||||||
|
|
||||||
bool Watchdog::start(Callback<void()> func, uint32_t timeout)
|
bool Watchdog::start(Callback<void()> func, uint32_t timeout)
|
||||||
{
|
{
|
||||||
_callback = func;
|
|
||||||
watchdog_status_t sts;
|
|
||||||
MBED_ASSERT(MBED_CONF_TARGET_WATCHDOG_TIMEOUT < get_max_timeout());
|
MBED_ASSERT(MBED_CONF_TARGET_WATCHDOG_TIMEOUT < get_max_timeout());
|
||||||
|
|
||||||
core_util_critical_section_enter();
|
core_util_critical_section_enter();
|
||||||
|
// we update callback always, to be able to register new hook if needed
|
||||||
|
_callback = func;
|
||||||
if (_running) {
|
if (_running) {
|
||||||
core_util_critical_section_exit();
|
core_util_critical_section_exit();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
watchdog_config_t config;
|
watchdog_config_t config;
|
||||||
config.timeout_ms = MBED_CONF_TARGET_WATCHDOG_TIMEOUT;
|
config.timeout_ms = MBED_CONF_TARGET_WATCHDOG_TIMEOUT;
|
||||||
sts = hal_watchdog_init(&config);
|
watchdog_status_t sts = hal_watchdog_init(&config);
|
||||||
if (sts == WATCHDOG_STATUS_OK) {
|
if (sts == WATCHDOG_STATUS_OK) {
|
||||||
_running = true;
|
_running = true;
|
||||||
}
|
}
|
||||||
core_util_critical_section_exit();
|
core_util_critical_section_exit();
|
||||||
|
|
||||||
if (_running) {
|
if (_running) {
|
||||||
us_timestamp_t ticker_timeout = (MS_TO_US(((timeout <= 0) ? 1 : timeout)));
|
us_timestamp_t ticker_timeout = (MS_TO_US(((timeout <= 0) ? 1 : timeout)));
|
||||||
_ticker->attach(callback(this, &Watchdog::kick), ticker_timeout);
|
_ticker->attach(callback(this, &Watchdog::kick), ticker_timeout);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue