home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1995 April / Internet Tools.iso / ip / ppp / mac / macppp2.0.1-src.hqx / MacPPP 2.0.1 src / timer.c < prev   
Encoding:
C/C++ Source or Header  |  1993-07-30  |  1.2 KB  |  54 lines

  1. /*
  2.  *    timer.c - Timer routines
  3.  *
  4.  * Copyright 1992-1993 Merit Network, Inc. and The Regents of the
  5.  *  University of Michigan.  Usage of this source code is restricted
  6.  *  to non-profit, non-commercial purposes.  The source is provided
  7.  *  "as-is", without warranty.
  8.  */
  9. #include "ppp.h"
  10.  
  11. void set_timer( struct TMtimer *t, struct fsm_s *fsm_p, voidProcPtr proc)
  12. {
  13.     if (t->state == TIMER_RUN)
  14.         RmvTime( (QElemPtr) t);
  15.     t->proc = proc;
  16.     t->fsm_p = fsm_p;
  17.     t->duration = fsm_p->pdc.timeout * 1000L;
  18.     t->state = TIMER_STOP;
  19. }
  20.  
  21. void
  22. start_timer ( struct TMtimer *t )
  23. {
  24.     short    sreg;
  25.  
  26.     sreg = set_sr(0x2100);        /* disable timer ints */
  27.     if (t->atm.qType & TASK_QUEUED)    {/* check if timer is primed */
  28.         RmvTime( (QElemPtr) t);
  29.         t->state = TIMER_STOP;
  30.     }
  31.     set_sr(sreg);
  32.  
  33.     if (t->state == TIMER_STOP) {
  34.         bzero((b_8 *) t, (short) sizeof(TMTask));    /* clear tmtask struct */
  35.         t->atm.tmAddr = (ProcPtr) t->proc;
  36.         InsTime((QElemPtr) t);
  37.         t->state = TIMER_RUN;
  38.     }
  39.     PrimeTime( (QElemPtr) t, t->duration);
  40. }
  41.  
  42. void
  43. stop_timer ( struct TMtimer *t )
  44. {
  45.     short    sreg;
  46.     
  47.     sreg = set_sr(0x2100);        /* Disable timer ints */
  48.     if (t->state == TIMER_RUN) {
  49.         RmvTime((QElemPtr) t);
  50.         t->state = TIMER_STOP;
  51.     }
  52.     set_sr(sreg);
  53. }
  54.