#include <TimerC.h>
#include <ClassLibError.h>
#include <pragma/exec_lib.h>
#include <clib/alib_protos.h>


TimerC::TimerC()
{
	sent = 0;
	tp = CreateMsgPort();
	if(! tp) throw ClassLibError(ClassLibError::NO_MSGPORT);
	tr = (timerequest *)CreateExtIO(tp,sizeof(struct timerequest));
	if(! tr) {
		DeleteMsgPort(tp);
		throw ClassLibError(ClassLibError::NO_MEMORY);
	}
	if(OpenDevice(TIMERNAME, UNIT_VBLANK, (IORequest *)tr, NULL))
	{
		DeleteExtIO((IORequest *)tr);
		DeleteMsgPort(tp);
		throw ClassLibError(ClassLibError::UNSPECIFIED);
	}
	tr->tr_node.io_Command = TR_ADDREQUEST;
}


TimerC::~TimerC()
{
	AbortIO((IORequest *)tr);
	CloseDevice((IORequest *)tr);
	DeleteExtIO((IORequest *)tr);
	DeleteMsgPort(tp);
}

