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

  DESCRIPTION: Server for Octans DMU_AHRS Attitude Heading Reference
  System.

  AUTHOR: Aaron Marsh

  $Id: OctansServer.h,v 1.2 2001/06/21 22:48:48 hthomas Exp $
 *-----------------------------------------------------------------------*/

#ifndef _OCTANSSERVER_H
#define _OCTANSSERVER_H

#include "DeviceInterface.h"
#include "OctansIF_SK.h"
#include "OctansOutput.h"
#include "SerialParameters.h"

class OctansServer : public OctansIF_SK {

public:
     OctansServer(SerialParameters *serialParams, char *ifServerName);
     ~OctansServer();

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

  virtual DeviceIF::Status acceleration(double *accelX, 
					double *accelY, 
					double *accelZ, 
					TimeIF::TimeSpec *sampleTime);

  virtual DeviceIF::Status all(AhrsIF::Attitude *attitude, 
			       double *accelX, double *accelY, double *accelZ,
			       long *status,
			       TimeIF::TimeSpec *sampleTime);
  

  virtual int spawnAuxTasks( void );

  SerialParameters *_serialParams;
  OctansOutput *_output;
  OctansOutput::Data outputData;
};


#endif
