/****************************************************************************/
/* Copyright (c) 2005 MBARI                                                 */
/* MBARI Proprietary Information. All rights reserved.                      */
/****************************************************************************/
/* Summary  :                                                               */
/* Filename : UsblIF.idl                                                    */
/* Author   :                                                               */
/* Project  :                                                               */
/* Version  : 1.0                                                           */
/* Created  : 11/17/2005                                                    */
/* Modified :                                                               */
/* Archived :                                                               */
/****************************************************************************/
/* Modification History:                                                    */
/****************************************************************************/

/*
CLASS 
UsblIF

DESCRIPTION
TaskInterface to USBL transceiver device driver 

AUTHOR
Henthorn

*/

#include "InstrumentIF.idl"

interface UsblIF : InstrumentIF {

  typedef sequence<char, 32> String32;

  enum UsblDataStatus {
    Undefined,
    AllGood,
    RangeOnly,
    Stale
  };
  
  /////////////////////////////////////////////////////////
  // Return true if device is ready to go, otherwise false
  boolean ready();

  /////////////////////////////////////////////////////////
  // Get all Data from USBL Simultaneously
  // Range, X, Y, and Z reading from transceiver
  // Turn-around time from request to response in milliseconds
  // Timestamp of last successful reading
  // Status of data (see UsblDataStatus enum)
  //
  Status get_range_data(out float range, out float x, out float y,
                        out float z, out short turnAroundTime,
                        out TimeIF::TimeSpec sampleTime, out UsblDataStatus status);

  Status set_beacon(in String32 newBeaconName);

  Status start();

  Status stop();


};
