diff --git a/drivers/VirtualWatchdog.cpp b/drivers/VirtualWatchdog.cpp index 73212d6658..e996da925d 100644 --- a/drivers/VirtualWatchdog.cpp +++ b/drivers/VirtualWatchdog.cpp @@ -31,7 +31,7 @@ VirtualWatchdog::VirtualWatchdog(uint32_t timeout, const char *const str): _name _max_timeout = timeout; // start watchdog Watchdog& watchdog = Watchdog::get_instance(); - watchdog.start(&VirtualWatchdog::process, WatchdogManager::elapsed_ms); + watchdog.start(&VirtualWatchdog::process, Watchdog::elapsed_ms); } VirtualWatchdog::~VirtualWatchdog() @@ -104,7 +104,7 @@ void VirtualWatchdog::process() if (cur_ptr->_current_count > cur_ptr->_max_timeout) { system_reset(); } else { - cur_ptr->_current_count += WatchdogManager::elapsed_ms; + cur_ptr->_current_count += Watchdog::elapsed_ms; } cur_ptr = cur_ptr->_next; } diff --git a/drivers/VirtualWatchdog.h b/drivers/VirtualWatchdog.h index 2a05bf68d7..6d94da820e 100644 --- a/drivers/VirtualWatchdog.h +++ b/drivers/VirtualWatchdog.h @@ -25,7 +25,6 @@ #include "platform/mbed_critical.h" #include "platform/mbed_power_mgmt.h" #include "mbed_assert.h" -#include "WatchdogManager.h" namespace mbed { diff --git a/drivers/Watchdog.cpp b/drivers/Watchdog.cpp index 1078ba90a4..fd920208e4 100644 --- a/drivers/Watchdog.cpp +++ b/drivers/Watchdog.cpp @@ -50,7 +50,7 @@ bool Watchdog::start(Callback func, uint32_t timeout) core_util_critical_section_exit(); if (_running) { us_timestamp_t ticker_timeout = (MS_TO_US(((timeout <= 0) ? 1 : timeout))); - WatchdogManager::attach(callback(this, &Watchdog::kick), ticker_timeout); + _ticker->attach(callback(this, &Watchdog::kick), ticker_timeout); } return _running; } @@ -66,7 +66,7 @@ bool Watchdog::stop() if (sts != WATCHDOG_STATUS_OK) { msts = false; } else { - WatchdogManager::detach(); + _ticker->detach(); _running = false; _callback = NULL; } @@ -83,6 +83,7 @@ void Watchdog::kick() core_util_critical_section_enter(); hal_watchdog_kick(); core_util_critical_section_exit(); + if (_callback) { _callback(); } diff --git a/drivers/Watchdog.h b/drivers/Watchdog.h index 1aa1f51cd3..d4f651c0bd 100644 --- a/drivers/Watchdog.h +++ b/drivers/Watchdog.h @@ -50,6 +50,7 @@ namespace mbed { */ class Watchdog : private NonCopyable { public: + const uint32_t watchdog_timeout = MBED_CONF_TARGET_WATCHDOG_TIMEOUT / 2; /** As Watchdog might not stop ever, there is just one instance - we use single instance. * This ensures we keep Watchdog alive. To operate watchdog, use start/stop methods. @@ -70,7 +71,7 @@ public: * successfully. assert if one of the input parameters is out of range for the current platform. * false if watchdog timer was not started */ - bool start(Callback func = NULL, uint32_t timeout = WatchdogManager::elapsed_ms); + bool start(Callback func = NULL, uint32_t timeout = watchdog_timeout); /** Stops the watchdog timer * @@ -106,12 +107,25 @@ public: bool is_running() const; void kick(); + + private: Watchdog(); ~Watchdog(); bool _running; Callback _callback; + +#if DEVICE_LPTICKER + /** Create singleton instance of LowPowerTicker for watchdog periodic call back of kick. + */ + SingletonPtr _ticker; +#else + /** Create singleton instance of Ticker for watchdog periodic call back of kick. + */ + SingletonPtr _ticker; +#endif + }; } // namespace mbed diff --git a/drivers/WatchdogManager.cpp b/drivers/WatchdogManager.cpp deleted file mode 100644 index bfc2eba7fa..0000000000 --- a/drivers/WatchdogManager.cpp +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2018-2019 Arm Limited and affiliates. - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifdef DEVICE_WATCHDOG - -#include "WatchdogManager.h" - -namespace mbed { - -#if DEVICE_LPTICKER - /** Create singleton instance of LowPowerTicker for watchdog periodic call back of kick. - */ - SingletonPtr _ticker; -#else - /** Create singleton instance of Ticker for watchdog periodic call back of kick. - */ - SingletonPtr _ticker; -#endif - -void WatchdogManager::attach(Callback func, us_timestamp_t timeout) -{ - _ticker->attach_us(func, timeout); -} - -void WatchdogManager::detach() -{ - _ticker->detach(); -} - -} // namespace mbed - - -#endif // DEVICE_WATCHDOG diff --git a/drivers/WatchdogManager.h b/drivers/WatchdogManager.h deleted file mode 100644 index 40db8a0c65..0000000000 --- a/drivers/WatchdogManager.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 2019 Arm Limited and affiliates. - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef MBED_WATCHDOG_MANAGER_H -#define MBED_WATCHDOG_MANAGER_H - -#include "platform/SingletonPtr.h" -#include "drivers/LowPowerTicker.h" -#include "platform/Callback.h" -#include "hal/ticker_api.h" - -#include - - -namespace mbed { - -/** \addtogroup drivers */ - -class WatchdogManager { -public: - static void attach(Callback func, us_timestamp_t timeout); - static void detach(); - // static uint32_t get_elapsed(); - static const uint32_t elapsed_ms = MBED_CONF_TARGET_WATCHDOG_TIMEOUT / 2; -private: -#if DEVICE_LPTICKER - /** Create singleton instance of LowPowerTicker for watchdog periodic call back of kick. - */ - static SingletonPtr _ticker; -#else - /** Create singleton instance of Ticker for watchdog periodic call back of kick. - */ - static SingletonPtr _ticker; -#endif -}; - -} // namespace mbed - -#endif // MBED_WATCHDOG_MANAGER_H