Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff -u Timer-master/Event.cpp Timer/Event.cpp
- --- Timer-master/Event.cpp 2013-10-20 03:24:16.000000000 +0200
- +++ Timer/Event.cpp 2013-09-28 23:49:09.270507800 +0200
- @@ -34,7 +34,7 @@
- eventType = EVENT_NONE;
- }
- -void Event::update(void)
- +uint8_t Event::update(void)
- {
- unsigned long now = millis();
- if (now - lastEventTime >= period)
- @@ -52,9 +52,20 @@
- }
- lastEventTime = now;
- count++;
- - }
- +
- if (repeatCount > -1 && count >= repeatCount)
- {
- eventType = EVENT_NONE;
- }
- + return true;
- + }
- + return false;
- +}
- +
- +unsigned long Event::next(void) {
- + unsigned int next = lastEventTime + period - millis();
- + /* In der Callback Methode selbst ist lastEventtime noch nicht aktualisiert.
- + */
- + if (next == 0) { next = period; }
- + return next;
- }
- diff -u Timer-master/Event.h Timer/Event.h
- --- Timer-master/Event.h 2013-10-20 03:24:16.000000000 +0200
- +++ Timer/Event.h 2013-09-28 23:48:58.965820300 +0200
- @@ -34,7 +34,7 @@
- public:
- Event(void);
- - void update(void);
- + uint8_t update(void);
- int8_t eventType;
- unsigned long period;
- int repeatCount;
- @@ -43,6 +43,7 @@
- void (*callback)(void);
- unsigned long lastEventTime;
- int count;
- + unsigned long next(void);
- };
- #endif
- diff -u Timer-master/Timer.cpp Timer/Timer.cpp
- --- Timer-master/Timer.cpp 2013-10-20 03:24:16.000000000 +0200
- +++ Timer/Timer.cpp 2013-11-20 21:51:41.577148400 +0100
- @@ -109,15 +109,17 @@
- }
- }
- -void Timer::update(void)
- +uint8_t Timer::update(void)
- {
- + boolean fired = false;
- for (int8_t i = 0; i < MAX_NUMBER_OF_EVENTS; i++)
- {
- if (_events[i].eventType != EVENT_NONE)
- {
- - _events[i].update();
- + fired |= _events[i].update();
- }
- }
- + return fired;
- }
- int8_t Timer::findFreeEventIndex(void)
- @@ -131,3 +133,16 @@
- }
- return NO_TIMER_AVAILABLE;
- }
- +
- +unsigned long Timer::next(void) {
- + unsigned long min = 0;
- + unsigned long next;
- + for (int8_t i = 0; i < MAX_NUMBER_OF_EVENTS; i++) {
- + if (_events[i].eventType != EVENT_NONE) {
- + next = _events[i].next();
- + if (min == 0) { min = next; }
- + else if (next < min) { min = next; }
- + }
- + }
- + return min;
- +}
- \ No newline at end of file
- diff -u Timer-master/Timer.h Timer/Timer.h
- --- Timer-master/Timer.h 2013-10-20 03:24:16.000000000 +0200
- +++ Timer/Timer.h 2013-09-28 23:50:27.280273400 +0200
- @@ -55,8 +55,8 @@
- */
- int8_t pulseImmediate(uint8_t pin, unsigned long period, uint8_t pulseValue);
- void stop(int8_t id);
- - void update(void);
- -
- + uint8_t update(void);
- + unsigned long next(void);
- protected:
- Event _events[MAX_NUMBER_OF_EVENTS];
- int8_t findFreeEventIndex(void);
- Common subdirectories: Timer-master/examples and Timer/examples
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement