/****************************************************************************/
/* Copyright (c) 2000 MBARI                                                 */
/* MBARI Proprietary Information. All rights reserved.                      */
/****************************************************************************/
/* Summary  :                                                               */
/* Filename : WatchdogIF.idl                                                */
/* Author   :                                                               */
/* Project  :                                                               */
/* Version  : 1.0                                                           */
/* Created  : 02/07/2000                                                    */
/* Modified :                                                               */
/* Archived :                                                               */
/****************************************************************************/
/* Modification History:                                                    */
/****************************************************************************/

/*
CLASS 
WatchdogIF

DESCRIPTION
TaskInterface to Watchdog device driver

*/

interface WatchdogIF {

  enum Event {
    Online,
    Offline,
    CommsFailure
  };

 ////////////////////////////////////////////////////////////
 // Defined Mission Statuses 
  enum MissionStatus {
	None,
	Running,
	Recover
  };	
	
 ///////////////////////////////////////////////////////////
 // Watchdog KeepAlive Function
 // [input] mission_status: Mission Status as understood by Supervisor
 // [output] wd_mission_status: " " as understood by WatchDog
 // [output] sphere_temp: internal sphere temperature
 // [output] sphere_pressure: internal sphere pressure
 // [output] mast_status: mast status
 // [output] shore_command: if any
 // [output] watchdog_status: status of watchdog
 // [output] watchdog_runlevel: runlevel of watchdog
 // [output] watchdog_mode: mode of watchdog
 // [output] watchdog_action: action of wd on next cycle
 short keepAlive(in MissionStatus mission_status,
		 out MissionStatus wd_mission_status,
		 out long sphere_temp,
	         out long sphere_pressure,
		 out char mast_status,
		 out short shore_command,
		 out short watchdog_status,
		 out short watchdog_runlevel,
		 out short watchdog_mode,out short watchdog_action);


 ///////////////////////////////////////////////////////////
 // Watchdog raiseAntenna Function
 // [input] mission_status: Mission Status as understood by Supervisor
 // [output] wd_mission_status: " " as understood by WatchDog
 // [output] sphere_temp: internal sphere temperature
 // [output] sphere_pressure: internal sphere pressure
 // [output] mast_status: mast status
 // [output] shore_command: if any
 // [output] watchdog_status: status of watchdog
 // [output] watchdog_runlevel: runlevel of watchdog
 // [output] watchdog_mode: mode of watchdog
 // [output] watchdog_action: action of wd on next cycle
 short raiseAntenna(in MissionStatus mission_status,
		 out MissionStatus wd_mission_status,
		 out long sphere_temp,
	         out long sphere_pressure,
		 out char mast_status,
		 out short shore_command,
		 out short watchdog_status,
		 out short watchdog_runlevel,
		 out short watchdog_mode,out short watchdog_action);

 ///////////////////////////////////////////////////////////
 // Watchdog lowerAntenna Function
 // [input] mission_status: Mission Status as understood by Supervisor
 // [output] wd_mission_status: " " as understood by WatchDog
 // [output] sphere_temp: internal sphere temperature
 // [output] sphere_pressure: internal sphere pressure
 // [output] mast_status: mast status
 // [output] shore_command: if any
 // [output] watchdog_status: status of watchdog
 // [output] watchdog_runlevel: runlevel of watchdog
 // [output] watchdog_mode: mode of watchdog
 // [output] watchdog_action: action of wd on next cycle
 short lowerAntenna(in MissionStatus mission_status,
		 out MissionStatus wd_mission_status,
		 out long sphere_temp,
	         out long sphere_pressure,
		 out char mast_status,
		 out short shore_command,
		 out short watchdog_status,
		 out short watchdog_runlevel,
		 out short watchdog_mode,out short watchdog_action);


 ///////////////////////////////////////////////////////////
 // Watchdog resetMVC Function
 // [input] mission_status: Mission Status as understood by Supervisor
 // [output] wd_mission_status: " " as understood by WatchDog
 // [output] sphere_temp: internal sphere temperature
 // [output] sphere_pressure: internal sphere pressure
 // [output] mast_status: mast status
 // [output] shore_command: if any
 // [output] watchdog_status: status of watchdog
 // [output] watchdog_runlevel: runlevel of watchdog
 // [output] watchdog_mode: mode of watchdog
 // [output] watchdog_action: action of wd on next cycle
 short resetMVC(in MissionStatus mission_status,
		 out MissionStatus wd_mission_status,
		 out long sphere_temp,
	         out long sphere_pressure,
		 out char mast_status,
		 out short shore_command,
		 out short watchdog_status,
		 out short watchdog_runlevel,
		 out short watchdog_mode,out short watchdog_action);

 ///////////////////////////////////////////////////////////
 // Watchdog rebootMVC Function
 // [input] mission_status: Mission Status as understood by Supervisor
 // [output] wd_mission_status: " " as understood by WatchDog
 // [output] sphere_temp: internal sphere temperature
 // [output] sphere_pressure: internal sphere pressure
 // [output] mast_status: mast status
 // [output] shore_command: if any
 // [output] watchdog_status: status of watchdog
 // [output] watchdog_runlevel: runlevel of watchdog
 // [output] watchdog_mode: mode of watchdog
 // [output] watchdog_action: action of wd on next cycle
 short rebootMVC(in MissionStatus mission_status,
		 out MissionStatus wd_mission_status,
		 out long sphere_temp,
	         out long sphere_pressure,
		 out char mast_status,
		 out short shore_command,
		 out short watchdog_status,
		 out short watchdog_runlevel,
		 out short watchdog_mode,out short watchdog_action);


 ///////////////////////////////////////////////////////////
 // Watchdog sleepMVC Function
 // [input] mission_status: Mission Status as understood by Supervisor
 // [output] wd_mission_status: " " as understood by WatchDog
 // [output] sphere_temp: internal sphere temperature
 // [output] sphere_pressure: internal sphere pressure
 // [output] mast_status: mast status
 // [output] shore_command: if any
 // [output] watchdog_status: status of watchdog
 // [output] watchdog_runlevel: runlevel of watchdog
 // [output] watchdog_mode: mode of watchdog
 // [output] watchdog_action: action of wd on next cycle
 short sleepMVC(in MissionStatus mission_status,
		 out MissionStatus wd_mission_status,
		 out long sphere_temp,
	         out long sphere_pressure,
		 out char mast_status,
		 out short shore_command,
		 out short watchdog_status,
		 out short watchdog_runlevel,
		 out short watchdog_mode,out short watchdog_action);

};
