/****************************************************************************/
/* Copyright (c) 2000 MBARI                                                 */
/* MBARI Proprietary Information. All rights reserved.                      */
/****************************************************************************/
/* Summary  :                                                               */
/* Filename : KvhDriver.h                                                   */
/* Author   :                                                               */
/* Project  :                                                               */
/* Version  : 1.0                                                           */
/* Created  : 02/07/2000                                                    */
/* Modified :                                                               */
/* Archived :                                                               */
/****************************************************************************/
/* Modification History:                                                    */
/****************************************************************************/
#ifndef _KVHDRIVER_H
#define _KVHDRIVER_H

#include "StreamSerialDriver.h"
#include "SerialDevice.h"

#define KvhTimeout 4000

/*
CLASS 
KvhDriver

DESCRIPTION
Base class for KVH inclinometer and compass drivers

AUTHOR
Tom O'Reilly
*/

class KvhDriver : public StreamSerialDriver {

friend class KvhLog;

public:

  KvhDriver(const char *name, 
	    SerialDevice *device,
	    unsigned maxRecordBytes,
	    const char *recordTerminator,
	    unsigned updateRate,
	    unsigned readTimeout);

  ~KvhDriver();

protected:

  int _updateRate;
  
  int startData(void);
  int stopData(void);
  int setDefaultMsgType(void);
  int setFifoLongTermAvg(int sampleSize);
  int setConfirmUpdateRate(int newRate );

private:

  int setUpdateRate(int rate);
  int getUpdateRate(int *rate);
};


#endif


