-- IntervalTimerFace.mesa
-- Last Edited by: Taft, February 24, 1983 10:21 am

IntervalTimerFace: DEFINITIONS =
  BEGIN

  ClockPulses: TYPE = LONG CARDINAL;
  -- This is what is returned by ProcessorFace.GetClockPulses and by the RCLK instruction.
  -- Its resolution is defined by ProcessorFace.microsecondsPerHundredPulses.

  SetExpirationTime: PROCEDURE [time: ClockPulses];
  -- Sets the timer to expire at the specified time.  It is OK to call this
  -- while a Wait is already in progress.

  Wait: PROCEDURE;
  -- Waits until the time specified in the most recent SetExpirationTime has been reached.
  -- Returns immediately if that time has already been reached.  Only one call to Wait
  -- should be in progress at a time.

  exists: BOOLEAN;
  -- TRUE if an interval timer actually exists.  SetExpirationTime and Wait are no-ops
  -- if exists=FALSE.

  END.