/*-----------------------------------------------------------------------*
  CLASS: WatchdogServer

  DESCRIPTION: Server for WDIII watchdog system.

  AUTHOR: Aaron Marsh

  $Id: WatchdogServer.h,v 1.3 2000/08/14 19:02:25 jrieffel Exp $
 *-----------------------------------------------------------------------*/

#ifndef _WATCHDOG_SERVER_H
#define _WATCHDOG_SERVER_H

#include "WatchdogIF_SK.h"
#include "WatchdogCommand.h"
#include "WatchdogOutput.h"
//#include "Attributes.h"
//#include "AttributeParser.h"
#include "SerialParameters.h"
#include "Syslog.h"
#include "DeviceIF.h"


class WatchdogServer : public WatchdogIF_SK {
  

 public:
  
  WatchdogServer(SerialParameters *serialParams, const char *configFile);
  ~WatchdogServer();
  
 protected:
  
  //     WatchdogLog *_log;
  //     DeviceInterface *_device;
  
  virtual void name(DeviceIF::Name name);
  virtual void serialNumber(DeviceIF::Name id);
  virtual DeviceIF::Status initialize();
  virtual DeviceIF::Status powerOn();
  virtual DeviceIF::Status powerOff();
  virtual DeviceIF::Status status();
  virtual DeviceIF::Status dataLoggingOn();
  virtual DeviceIF::Status dataLoggingOff();

  WatchdogIF::WD_Data _data;
  WatchdogIF::WD_Time_Struct _wd_time;
  
  
  WatchdogOutput *_output;
  WatchdogCommand *_command;
  //   Attributes _attributes;
  SerialParameters *_serialParams;

  // keepAlive functionality is depricated for now
  // that is, it is handled exclusively by the periodic callback
  // resident within the driver-side.
  
  DeviceIF::Status keepAlive(WatchdogIF::WD_Time_Struct *_wd_time);
  DeviceIF::Status keepAlive(short time_in_minutes);
  
  DeviceIF::Status Deadman_On(WatchdogIF::WD_Time_Struct *_wd_time);
  DeviceIF::Status Deadman_On(short time_in_minutes);
  DeviceIF::Status Deadman_On();
  
  DeviceIF::Status Deadman_Off();
  
  DeviceIF::Status raiseAntenna();
  DeviceIF::Status lowerAntenna();
  
  DeviceIF::Status resetMVC();
  
  DeviceIF::Status rebootMVC();
  
  DeviceIF::Status sleepMVC();

  virtual int spawnAuxTasks();
  
};

#endif
