#ifndef TICKS_H #define TICKS_H #include #include class Timer { public: using Callback = void (*)(); Timer(); ~Timer(); void setFrequency(uint16_t freq); void setDivider(uint16_t div); Callback setCallback(Callback); [[nodiscard]] uint32_t getTicks() const; private: friend void timerISR(); _go32_dpmi_seginfo _oldIsr{}, _newIsr{}; uint32_t _ticks{0}; uint32_t _elapsed{0}; uint16_t _div{0}; void (*_callback)(){nullptr}; void update(); }; extern Timer timer; #endif