56 lines
842 B
C++
56 lines
842 B
C++
#include <SDL.h>
|
|
|
|
#include "../Timer.h"
|
|
|
|
SDL_TimerID timerId;
|
|
|
|
void timerISR() {
|
|
Timer::instance().update();
|
|
}
|
|
|
|
Timer::Timer() {
|
|
_freq = 50;
|
|
timerId = SDL_AddTimer(1000/_freq, [] (Uint32, void*) -> Uint32 {
|
|
timerISR();
|
|
return 1000 / instance().getFrequency();
|
|
}, nullptr);
|
|
}
|
|
|
|
Timer::~Timer() {
|
|
SDL_RemoveTimer(timerId);
|
|
}
|
|
|
|
void Timer::update() {
|
|
// TODO
|
|
_ticks++;
|
|
if (_callback) _callback();
|
|
}
|
|
|
|
uint32_t Timer::getTicks() const {
|
|
return _ticks;
|
|
}
|
|
|
|
void Timer::setFrequency(uint16_t freq) {
|
|
_freq = freq;
|
|
// TODO
|
|
}
|
|
|
|
uint16_t Timer::getFrequency() const {
|
|
return _freq;
|
|
}
|
|
|
|
void Timer::setDivider(uint16_t div) {
|
|
// TODO
|
|
}
|
|
|
|
Timer::Callback Timer::setCallback(Timer::Callback callback) {
|
|
auto oldCallback = _callback;
|
|
_callback = callback;
|
|
return oldCallback;
|
|
}
|
|
|
|
Timer &Timer::instance() {
|
|
static Timer inst;
|
|
return inst;
|
|
}
|