67 lines
1.7 KiB
C++
67 lines
1.7 KiB
C++
#pragma once
|
|
|
|
#include <a8/xtimer.h>
|
|
#include <a8/singleton.h>
|
|
|
|
namespace f8
|
|
{
|
|
class TimerWp
|
|
{
|
|
public:
|
|
TimerWp(a8::XTimerWp wp): p_(wp) {};
|
|
bool expired() { return p_.expired();};
|
|
auto&& lock() { return p_.lock(); };
|
|
|
|
private:
|
|
a8::XTimerWp p_;
|
|
friend class Timer;
|
|
};
|
|
|
|
class Attacher
|
|
{
|
|
public:
|
|
Attacher();
|
|
void ClearTimerList() { p_.ClearTimerList(); };
|
|
|
|
private:
|
|
a8::Attacher p_;
|
|
friend class Timer;
|
|
};
|
|
|
|
class Timer : public a8::Singleton<Timer>
|
|
{
|
|
|
|
private:
|
|
Timer() {};
|
|
friend class a8::Singleton<Timer>;
|
|
|
|
public:
|
|
void Init();
|
|
void UnInit();
|
|
bool Initialized();
|
|
void Update();
|
|
|
|
void SetTimeout(int expire_time, a8::TimerCb cb);
|
|
void SetTimeoutEx(int expire_time, a8::TimerCb cb, Attacher* attacher);
|
|
TimerWp SetTimeoutWp(int expire_time, a8::TimerCb cb);
|
|
TimerWp SetTimeoutWpEx(int expire_time, a8::TimerCb cb, Attacher* attacher);
|
|
|
|
void SetInterval(int expire_time, a8::TimerCb cb);
|
|
void SetIntervalEx(int expire_time, a8::TimerCb cb, Attacher* attacher);
|
|
TimerWp SetIntervalWp(int expire_time, a8::TimerCb cb);
|
|
TimerWp SetIntervalWpEx(int expire_time, a8::TimerCb cb, Attacher* attacher);
|
|
|
|
void FireEvent(TimerWp& timer_wp, int event, a8::Args* args);
|
|
void ModifyTime(TimerWp& timer_wp, int expire_time);
|
|
void Delete(TimerWp& timer_wp);
|
|
long long GetRemainTime(TimerWp& timer_wp);
|
|
void DeleteCurrentTimer();
|
|
bool IsRunning();
|
|
|
|
private:
|
|
bool initialized_ = false;
|
|
a8::XTimer xtimer_;
|
|
};
|
|
|
|
}
|