/****************************************************************************/
/* Copyright (c) 2000 MBARI                                                 */
/* MBARI Proprietary Information. All rights reserved.                      */
/****************************************************************************/
/* Summary  :                                                               */
/* Filename : KearfottGpsLog.h                                              */
/* Author   :                                                               */
/* Project  :                                                               */
/* Version  : 1.0                                                           */
/* Created  : 2004/01/23                                                    */
/* Modified :                                                               */
/* Archived :                                                               */
/****************************************************************************/
/* Modification History:                                                    */
/****************************************************************************/
#ifndef _KEARFOTTGPSLOG_H
#define _KEARFOTTGPSLOG_H

#include "DataLogWriter.h"
#include "DoubleData.h"
#include "AngleData.h"
#include "IntegerData.h"
#include "CharData.h"
#include "ShortData.h"
#include "FloatData.h"
//#include "Kearfott.h"

#define GpsLogName "gps"
//
// 2004/12/23, rsm.  The following is based on the GpsLog class.
//
class KearfottGpsLog : public DataLogWriter {

public:
  //
  // The following is unfortunately all repeated from GpsLog.cc.  I tried to
  // make KearfottGpsLog inheret from GpsLog, with the intention of not having
  // to duplicate GpsLog here, but was prevented by multiple inheritance of
  // LoggableGps.  KearfottGpsLog includes the code in GpsLog, and also logs
  // additonal items from the GSA string.
  //
  ///////////////////////////////////////////////////////////////////
  // Constructor
  KearfottGpsLog(Kearfott *kearfott, DataLog::FileFormat fileFormat); 

  ~KearfottGpsLog();

protected:

  ///////////////////////////////////////////////////////////////////
  // Set values in record array elements. This virtual method is called
  // by DataLogWriter::write()
  virtual void setFields();

  Kearfott *_kearfott;
  

 private:

  ShortData *_gpsHours;
  ShortData *_gpsMinutes;
  ShortData *_gpsSeconds;
  ShortData *_gpsCentiSeconds;
		  
  IntegerData *_sampleTime;
  AngleData *_latitude;
  CharData *_NSHem;
  AngleData *_longitude;
  CharData *_EWHem;
  ShortData *_quality;
  ShortData *_nSatellites;
  DoubleData *_hdop;
  DoubleData *_altitude;
  DoubleData *_geoidHeight;
  ShortData *_dgpsDataAge;
  ShortData *_dgpsStationID;
  //
  // New (GpsLog doesn't have it) GSA stuff:
  //
  ShortData *_gsaMode;
  ShortData *_gsaFixMode;
  ShortData *_gsaSatID1;
  ShortData *_gsaSatID2;
  ShortData *_gsaSatID3;
  ShortData *_gsaSatID4;
  ShortData *_gsaSatID5;
  ShortData *_gsaSatID6;
  ShortData *_gsaSatID7;
  ShortData *_gsaSatID8;
  ShortData *_gsaSatID9;
  ShortData *_gsaSatID10;
  ShortData *_gsaSatID11;
  ShortData *_gsaSatID12;
  ShortData *_gsaSatID13;
  ShortData *_gsaSatID14;
  FloatData *_gsaPdop;
  FloatData *_gsaHorizDop;
  FloatData *_gsaVertiDop;

};

#endif
