/**
 * This interface specifies functionality implemented by the 
 * Active Table driver. 
 * 
 */

package activeTable;

public interface ActiveTableInterface {

   /**
    * Establishes the connection to the Active Table system.
    * @return true on success, false on failure.
    */
   public boolean connect();

   /**
    * Sets goal position and orientation of a particular vehicle.
    * @param vid id number of the vehicle
    * @param data specification of position and orientation
    * @see VehicleInfo
    */
   public void setVehicleInfo(int vid, VehicleInfo data);

   /**
    * Gets the current position, orientation, and status of a vehicle.
    * @param vid id of the vehicle
    * @return VehicleInfo containing position, orientation, and status
    * @see VehicleInfo
    */
   public VehicleInfo getVehicleInfo(int vid);

   /**
    * Defines which vehicle is the controller puck.
    * @param vid the id of the desired vehicle
    */
   public void setPuck(int vid);

   /**
    * Gets the id of the controller puck / vehicle (-1 if not specified).
    * @return the id.
    */
   public int getPuck();

   /**
    *  Gets the maximum number of vehicles that can exist simulatanously on the table.
    *  @return max number of vehicles
    */
   public int getMaxVehicles();

   /**
 	 * MEBEL STATUS CONSTANTS
  	 */
   final static int MOVING = 0; //the vehicle is in motion
   final static int ATGOAL = 1; //vehicle has arrived at goal destination
   final static int HELD = 2; //the vehicle seems to be held/ physically restrained
   final static int SIGNALFLUX = 3; // 
   final static int NOTTHERE = 4; // is not on the table
   final static int ERROR = -1; // not sure what that really means

}


