1. -- 
  2. -- Uwe R. Zimmer, Australia, July 2011 
  3. -- 
  4.  
  5. with Real_Type;                 use Real_Type; 
  6. with Swarm_Structures_Base;      use Swarm_Structures_Base; 
  7. with Vectors_3D;                 use Vectors_3D; 
  8. with Vehicle_Message_Type;       use Vehicle_Message_Type; 
  9.  
  10. package Vehicle_Interface is 
  11.  
  12.    ----------- 
  13.    -- State -- 
  14.    ----------- 
  15.  
  16.    function Position     return Positions; 
  17.    function Velocity     return Velocities; 
  18.    function Acceleration return Accelerations; 
  19.  
  20.    -------------- 
  21.    -- Steering -- 
  22.    -------------- 
  23.  
  24.    procedure Set_Destination (V : Vector_3D); 
  25.  
  26.    -------------- 
  27.    -- Thruttle -- 
  28.    -------------- 
  29.  
  30.    procedure Set_Throttle    (T : Throttle_T); 
  31.    -- Throttle automatically switched to Idle_Throttle when the destination has been reached. 
  32.    function Throttle_Is_On_Idle return Boolean; 
  33.  
  34.    --------------- 
  35.    -- Messaging -- 
  36.    --------------- 
  37.  
  38.    procedure Send    (Message :     Inter_Vehicle_Messages); 
  39.    procedure Receive (Message : out Inter_Vehicle_Messages); -- blocking if no messages 
  40.    function Messages_Waiting return Boolean; 
  41.  
  42.    function Current_Charge    return Vehicle_Charges; 
  43.    function Current_Discharge_Per_Sec return Real; 
  44.  
  45.    function Energy_Globes_Around return Energy_Globes; 
  46.  
  47.    procedure Wait_For_Next_Physics_Update; 
  48.    -- blocking until the underlying physics engine updated swarm and globe positions. 
  49.  
  50.    ----------------- 
  51.    -- Termination -- 
  52.    ----------------- 
  53.  
  54.    protected Flight_Termination is 
  55.  
  56.       entry Stop; -- this entry will open iff the task is requested to terminate. 
  57.  
  58.    end Flight_Termination; 
  59.  
  60. end Vehicle_Interface;