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

  DESCRIPTION: Server for data from the Kvh instruments

  $Id: KvhServer.h,v 1.6 2000/05/12 15:29:56 oreilly Exp $
  *-----------------------------------------------------------------------*/

#ifndef _KvhServer_H
#define _KvhServer_H

#include "AhrsIF_SK.h"
#include "KvhInclinoOutput.h"
#include "KvhCompassOutput.h"
#include "SerialParameters.h"

class KvhServer : public AhrsIF_SK {
     
public:
     
     KvhServer(char *incDevName, char *compDevName);

     ~KvhServer();
     
     static getOptions(int argc, char **argv,
		       char **incDeviceName,
		       char **compDeviceName);

protected:


  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();

  virtual DeviceIF::Status getAttitude(AhrsIF::Attitude *attitude, 
				       TimeIF::TimeSpec *sampleTime);

  virtual Boolean magneticCompass();

  void sensorReadyCallback(TaskInterface *taskInterface,
			   EventCode event);

  virtual int spawnAuxTasks();

  KvhInclinoOutput *_inclinoOutput;
  KvhCompassOutput *_compassOutput;
  char *_incDevName;
  char *_compDevName;
};

#endif
