//=========================================================================
// Summary  : 
// Filename : AltexPowerIF.idl
// Author   : Marsh
// Project  : 
// Version  : $Revision: 1.3 $
// Created  : 04/12/00
// Modified : 2001.05.01 reed
// Archived : 
//=========================================================================
// Modification History:
//=========================================================================

/*
CLASS 
AltexPowerIF

DESCRIPTION
Task interface to the Altex power monitoring system

AUTHOR
Marsh

*/

#include "InstrumentIF.idl"
#include "DeviceIF.idl"


interface AltexPowerIF : InstrumentIF {

  //     enum Circuit {
  //	  None = -1,
  //	  InternalGround = 0,
  //	  Internal5V = 1,
  //	  Internal12V = 2,
  //	  Internal15V = 3,
  //	  PowerPlus = 4,
  //	  ExternalGround = 5,
  //	  External5V = 6,
  //	  External12V = 7,
  //	  External15V = 8,
  //	  PowerMinus = 9,
  //	  Tailcone = 10,
  //	  Sonar = 11,
  //	  DVL = 12,
  //	  Tailcone2 = 13,
  //	  Unallocated = 14,
  //	  ShorePower = 15,
  //	  CircuitCount = 16
  //     };

  // Make the circuit defintions generic so system changes don't cause a recompile.
  // Definitions as of 2001.05.01.
  //  Circuit00 = 00,  Instrumentation Power
  //  Circuit01 = 01,  Internal   5V
  //  Circuit02 = 02,  Internal  12V
  //  Circuit03 = 03,  Internal  15V
  //  Circuit04 = 04,  Unimplemented
  //  Circuit05 = 05,  Unimplemented
  //  Circuit06 = 06,  External   5V
  //  Circuit07 = 07,  External  12V
  //  Circuit08 = 08,  External  15V
  //  Circuit09 = 09,  Unimplemented
  //  Circuit0A = 10,  External  28V
  //  Circuit0B = 11,  External  28V
  //  Circuit0C = 12,  External  28V
  //  Circuit0D = 13,  External  28V
  //  Cirucit0E = 14,  External  28V
  //  circuit0F = 15,  Shore Power

  enum Circuit {
    None = -1,
    Circuit00 =  0,
    Circuit01 =  1,
    Circuit02 =  2,
    Circuit03 =  3,
    Circuit04 =  4,
    Circuit05 =  5,
    Circuit06 =  6,
    Circuit07 =  7,
    Circuit08 =  8,
    Circuit09 =  9,
    Circuit0A = 10,
    Circuit0B = 11,
    Circuit0C = 12,
    Circuit0D = 13,
    Circuit0E = 14,
    Circuit0F = 15,
    CircuitCount = 16
  };

     enum BatteryCircuit {
	  Current1 = 0,
	  Current2 = 1,
	  Voltage = 2,
	  BatteryCircuitCount = 3
     };

     ////////////////////////////////////////////////////////////
     // Read the current from a DC-DC converter
     DeviceIF::Status current( in Circuit circuit, out float current );

     ////////////////////////////////////////////////////////////
     // Gets circuit voltages
     DeviceIF::Status voltage( in Circuit circuit, out float voltage );

     ////////////////////////////////////////////////////////////
     // Inhibits DC/DC converters
     DeviceIF::Status inhibitConverter( in Circuit circuit );

     ////////////////////////////////////////////////////////////
     // Turns nets off
     DeviceIF::Status netOff( in Circuit circuit );

     ////////////////////////////////////////////////////////////
     // Turns nets on
     DeviceIF::Status netOn( in Circuit circuit );

     ////////////////////////////////////////////////////////////
     // Take a ground fault measurement
     DeviceIF::Status groundFault( in Circuit circuit, out float current );

     ////////////////////////////////////////////////////////////
     // Take a ground fault measurement
     DeviceIF::Status batteryMeasurement( in BatteryCircuit circuit, out float value );

     ////////////////////////////////////////////////////////////
     // Status
     DeviceIF::Status status( in Circuit circuit, out unsigned char status );

     ////////////////////////////////////////////////////////////
     // Enable tailcone watchdog
     DeviceIF::Status enableWatchdog();

     ////////////////////////////////////////////////////////////
     // Disable tailcone watchdog
     DeviceIF::Status disableWatchdog();

     ////////////////////////////////////////////////////////////
     // 'touch' the tailcone watchdog
     DeviceIF::Status touchWatchdog();
};
