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

/*
CLASS 
DockIF

DESCRIPTION
Interface to on-board dock module.

AUTHOR
rsm

*/

#include "InstrumentIF.idl"

interface DockIF : InstrumentIF {

  typedef sequence<char, 512> String512;
  typedef sequence<char, 32> String32;

  /////////////////////////////////////////////////////////
  // Return true if device is ready to go, otherwise false
      boolean ready();

  /////////////////////////////////////////////////////////
  // Request on-board PIC status:
  //
      Status request_vehicle_status();

  /////////////////////////////////////////////////////////
  // Read on-board PIC status:
  //
      Status read_vehicle_PIC(out String512 pic_status,
				 out TimeIF::TimeSpec sampleTime);

  /////////////////////////////////////////////////////////
  // Request dock PIC status:
  //
      Status request_dock_status();

  /////////////////////////////////////////////////////////
  // Request dock PIC status:
  //
      Status set_dock_state( in String32 state );

  /////////////////////////////////////////////////////////
  // Read dock PIC status:
  //
      Status read_dock_PIC(out String512 pic_status,
			      out TimeIF::TimeSpec sampleTime);

  /////////////////////////////////////////////////////////
  // Request resolver status:
  //
      Status query_resolver();

  /////////////////////////////////////////////////////////
  // Read resolver state
  //
      Status read_resolver( out String32 state,
							out TimeIF::TimeSpec sampleTime);

  /////////////////////////////////////////////////////////
  // Request probe status:
  //
      Status query_probe();

  /////////////////////////////////////////////////////////
  // Read probe state
  //
      Status read_probe( out String32 state,
						 out TimeIF::TimeSpec sampleTime);

  /////////////////////////////////////////////////////////
  // Request probe motion:
  //
      Status move_probe(in String32 probeCmd );

  /////////////////////////////////////////////////////////
  // Turn continuous network, probe and resolver query on or off
  //
      Status set_continuous_query( in boolean state, in short timeOut );

  /////////////////////////////////////////////////////////
  // Continuously read the network status, probe and resolver
  //
      Status read_continuous_query( out boolean networkPresent,
									out String32 probeStatus, 
									out String32 resolverStatus, 
									out double sampleTime);

  /////////////////////////////////////////////////////////
  // Open the dock Ethernet port:
  //
      Status open_port();

  /////////////////////////////////////////////////////////
  // Close the dock Ethernet port:
  //
      Status close_port();

  /////////////////////////////////////////////////////////
  // Close the dock Ethernet port:
  //
      Status ping( in short timeOut );

  /////////////////////////////////////////////////////////
  // Close the dock Ethernet port:
  //
      Status ping_result( out short pingError, 
						  out double sampleTime);

};
