home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Club Amiga de Montreal - CAM
/
CAM_CD_1.iso
/
files
/
519b.lha
/
Casio_FZ-1
/
timer.c
< prev
Wrap
C/C++ Source or Header
|
1991-06-09
|
2KB
|
89 lines
/* casio reader timer stuff */
#include <stdio.h>
#include <exec/types.h>
#include <functions.h>
#include <intuition/intuition.h>
#include <devices/timer.h>
#include <devices/audio.h>
#include "prototypes.h"
struct timerequest *timer_request;
struct Device *TimerBase;
struct timerequest *CreateTimer(int unit)
{
long error;
register struct MsgPort *timerport;
register struct timerequest *timermsg;
timerport = CreatePort(0L, 0L);
if (!timerport)
return 0;
timermsg = (struct timerequest *)CreateExtIO(timerport, (long)sizeof(struct timerequest));
if (!timermsg)
{
DeletePort(timerport);
return 0;
}
error = OpenDevice(TIMERNAME, (long)unit, timermsg, 0L);
if (error)
{
DeleteTimer(timermsg);
return 0;
}
return timermsg;
}
DeleteTimer(register struct timerequest *tr)
{
register struct MsgPort *tp;
if (tr)
{
tp = tr->tr_node.io_Message.mn_ReplyPort;
if(tp)
DeletePort(tp);
CloseDevice((struct IORequest *)tr);
DeleteExtIO((struct IORequest *)tr);
}
}
void trash_timer(void)
{
AbortIO((struct IORequest *)timer_request);
TimerBase = (struct Device *)-1;
DeleteTimer(timer_request);
}
void init_timer(void)
{
if (!(timer_request = CreateTimer(UNIT_MICROHZ)))
panic("Can't create timer.");
TimerBase = timer_request->tr_node.io_Device;
add_cleanup(trash_timer);
}
void start_timeout_timer(void)
{
timer_request->tr_node.io_Command = TR_ADDREQUEST;
timer_request->tr_time.tv_secs = 3;
timer_request->tr_time.tv_micro = 0;
SendIO((struct IORequest *)timer_request);
}
void abort_timeout_timer(void)
{
AbortIO((struct IORequest *)timer_request);
}