File : laser_driver.ads


---------------------------------------------------------------------------
--
--                              -*- Mode: Ada -*-
-- Filename        : laser_driver.ads
-- Description     : low level routines, including interrupt handler
--
----------------------------------------------------------------------------

with Ada.Real_Time; use Ada.Real_Time;

with Laser; use Laser;

package Laser_driver is

   ----------------------------------------------------------------------------
   --
   -- LaserDriverInterface
   --
   ----------------------------------------------------------------------------

   protected LaserDriverInterface is

      entry InitLaserDriver;
      entry ShutdownLaserDriver;

      entry SuspendLaserDriver;
      entry ResumeLaserDriver;

      entry GetMostRecentLaserScan (LaserScan : out LaserStatus);
      entry GetMostRecentLaserTimeStamp (LaserTimeStamp : out Time);

      entry GetAllAvailableLaserScans (LaserScans : out LaserStatusArray);

   end LaserDriverInterface;

   ----------------------------------------------------------------------------
   --
   -- Syncronization Monitor
   --
   ----------------------------------------------------------------------------

   protected LaserMonitor is

      entry BlockTask;
      entry BlockedTasksQueue;
      procedure FreeTasks;

   private

      NewScanArrived      : Boolean := False;
      TasksWaitingForData : Natural := 0;

   end LaserMonitor;

end Laser_driver;