Library for a timer that can go for days (but only ms resolution)

Dependents:   ExtendedTimer_Example FindingTemp Final_NSR NearSpaceOzoneSensor ... more

Committer:
JLarkin
Date:
Thu May 09 20:03:12 2019 +0000
Revision:
1:c5e08765149f
Parent:
0:7a6067de3bff
Fixed reset method so doesn't also perform stop.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JLarkin 0:7a6067de3bff 1 #include "ExtendedTimer.h"
JLarkin 0:7a6067de3bff 2
JLarkin 0:7a6067de3bff 3 ExtendedTimer::ExtendedTimer() : _running(), _time() {
JLarkin 0:7a6067de3bff 4 reset();
JLarkin 0:7a6067de3bff 5 }
JLarkin 0:7a6067de3bff 6
JLarkin 0:7a6067de3bff 7 void ExtendedTimer::start() {
JLarkin 0:7a6067de3bff 8 if (!_running) {
JLarkin 0:7a6067de3bff 9 usTimer.reset();
JLarkin 0:7a6067de3bff 10 usTimer.start();
JLarkin 0:7a6067de3bff 11 _running = 1;
JLarkin 0:7a6067de3bff 12 usTimerWatch.attach(this, &ExtendedTimer::usTimerReset,1800);
JLarkin 0:7a6067de3bff 13 }
JLarkin 0:7a6067de3bff 14 }
JLarkin 0:7a6067de3bff 15
JLarkin 0:7a6067de3bff 16 void ExtendedTimer::stop() {
JLarkin 0:7a6067de3bff 17 usTimer.stop();
JLarkin 0:7a6067de3bff 18 usTimerWatch.detach();
JLarkin 0:7a6067de3bff 19 _time += usTimer.read_ms();
JLarkin 0:7a6067de3bff 20 _running = 0;
JLarkin 0:7a6067de3bff 21 }
JLarkin 0:7a6067de3bff 22
JLarkin 0:7a6067de3bff 23 int ExtendedTimer::read_ms() {
JLarkin 0:7a6067de3bff 24 return _time + usTimer.read_ms();
JLarkin 0:7a6067de3bff 25 }
JLarkin 0:7a6067de3bff 26
JLarkin 0:7a6067de3bff 27 float ExtendedTimer::read() {
JLarkin 0:7a6067de3bff 28 return (float)read_ms()/1000.0f;
JLarkin 0:7a6067de3bff 29 }
JLarkin 0:7a6067de3bff 30
JLarkin 0:7a6067de3bff 31 void ExtendedTimer::reset() {
JLarkin 0:7a6067de3bff 32 usTimer.reset();
JLarkin 0:7a6067de3bff 33 _time = 0;
JLarkin 0:7a6067de3bff 34 }
JLarkin 0:7a6067de3bff 35
JLarkin 0:7a6067de3bff 36 ExtendedTimer::operator float() {
JLarkin 0:7a6067de3bff 37 return read();
JLarkin 0:7a6067de3bff 38 }
JLarkin 0:7a6067de3bff 39
JLarkin 0:7a6067de3bff 40 void ExtendedTimer::usTimerReset() {
JLarkin 0:7a6067de3bff 41 _time += usTimer.read_ms();
JLarkin 0:7a6067de3bff 42 usTimer.reset();
JLarkin 0:7a6067de3bff 43 }