X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=PPI%2FIntervalTimer.cc;h=62b2fa6e1a61993737abff0e6e92793009b883ff;hb=41fe0d795abca302db24e7a955df6ef15ffed722;hp=ecda76da448020ac815a494e79bf34b1faf4ef0c;hpb=b8a3977542aaf217ac472e5266abd0fcffb4f95f;p=senf.git diff --git a/PPI/IntervalTimer.cc b/PPI/IntervalTimer.cc index ecda76d..62b2fa6 100644 --- a/PPI/IntervalTimer.cc +++ b/PPI/IntervalTimer.cc @@ -27,7 +27,8 @@ //#include "IntervalTimer.ih" // Custom includes -#include "Scheduler/Scheduler.hh" +#include "../Scheduler/Scheduler.hh" +#include "EventManager.hh" //#include "IntervalTimer.mpp" #define prefix_ @@ -41,7 +42,7 @@ prefix_ void senf::ppi::IntervalTimer::v_enable() { - info_.intervalStart = ClockService::now(); + info_.intervalStart = manager().now(); info_.number = 0; schedule(); } @@ -49,6 +50,7 @@ prefix_ void senf::ppi::IntervalTimer::v_enable() prefix_ void senf::ppi::IntervalTimer::v_disable() { Scheduler::instance().cancelTimeout(id_); + id_ = 0; } prefix_ void senf::ppi::IntervalTimer::schedule() @@ -60,6 +62,8 @@ prefix_ void senf::ppi::IntervalTimer::schedule() prefix_ void senf::ppi::IntervalTimer::cb() { callback(info_, info_.expected); + if (! enabled()) + return; ++ info_.number; if (info_.number >= eventsPerInterval_) { info_.number = 0;