Skip to content

Commit 5db459d

Browse files
committed
Timer: minor revisions
* C++11-ify a little. * Make it copy/move constructible.
1 parent 029109a commit 5db459d

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

drivers/Timer.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ namespace mbed {
5151
* }
5252
* @endcode
5353
*/
54-
class TimerBase : private NonCopyable<TimerBase> {
54+
class TimerBase {
5555

5656
public:
5757
/** Start the timer
@@ -109,7 +109,12 @@ class TimerBase : private NonCopyable<TimerBase> {
109109
protected:
110110
TimerBase(const ticker_data_t *data);
111111
TimerBase(const ticker_data_t *data, bool lock_deepsleep);
112+
TimerBase(const TimerBase &t);
113+
TimerBase(TimerBase &&t);
112114
~TimerBase();
115+
116+
const TimerBase &operator=(const TimerBase &) = delete;
117+
113118
std::chrono::microseconds slicetime() const;
114119
TickerDataClock::time_point _start{}; // the start time of the latest slice
115120
std::chrono::microseconds _time{}; // any accumulated time from previous slices

drivers/source/Timer.cpp

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,23 @@ TimerBase::TimerBase(const ticker_data_t *data, bool lock_deepsleep) : _ticker_d
3838
reset();
3939
}
4040

41+
TimerBase::TimerBase(const TimerBase &t) : _start(t._start), _time(t._time),
42+
_ticker_data(t._ticker_data), _lock_deepsleep(t._lock_deepsleep), _running(t._running)
43+
44+
{
45+
reset();
46+
if (_running && _lock_deepsleep) {
47+
sleep_manager_lock_deep_sleep();
48+
}
49+
}
50+
51+
TimerBase::TimerBase(TimerBase &&t) : _start(t._start), _time(t._time),
52+
_ticker_data(t._ticker_data), _lock_deepsleep(t._lock_deepsleep), _running(t._running)
53+
54+
{
55+
t._running = false;
56+
}
57+
4158
TimerBase::~TimerBase()
4259
{
4360
if (_running) {

0 commit comments

Comments
 (0)