#include "watchdog.h"
#include "timer_registers.h"

const uint32_t Timer_0_Enable				= (1 << 0);
const uint32_t Timer_0_WatchdogEnableMask 	= 0xFF; 

void Watchdog::Initialize(void)
{
	regWrite(TIMERS::TMCON, (regRead(TIMERS::TMCON) & ~Timer_0_Enable));
	regWrite(TIMERS::T0TC, 1);
	regWrite(TIMERS::T0PD, 0);
}

void Watchdog::DrugEmDanno(uint32_t timeoutIntervalInSeconds)
{
	regWrite(TIMERS::TMCON, (regRead(TIMERS::TMCON) & ~Timer_0_Enable));
	uint32_t timeoutIntervalInTicks = timeoutIntervalInSeconds * TicksPerSecond;
	regWrite(TIMERS::T0TC, (timeoutIntervalInTicks | Timer_0_WatchdogEnableMask));
	regWrite(TIMERS::T0PD, 0);
	regWrite(TIMERS::TMCON, (regRead(TIMERS::TMCON) |  Timer_0_Enable));
}
