/****************************************************************************/
/* Copyright (c) 2000 MBARI                                                 */
/* MBARI Proprietary Information. All rights reserved.                      */
/****************************************************************************/
/* Summary  :                                                               */
/* Filename : GpsLog.cc                                                     */
/* Author   :                                                               */
/* Project  :                                                               */
/* Version  : 1.0                                                           */
/* Created  : 02/07/2000                                                    */
/* Modified :                                                               */
/* Archived :                                                               */
/****************************************************************************/
/* Modification History:                                                    */
/****************************************************************************/
#include "DataLogWriter.h"
#include "GpsLog.h"
#include "LoggableGps.h"
#include "TimeP.h"
#include "Syslog.h"

GpsLog::GpsLog(LoggableGps *gps, DataLog::FileFormat fileFormat) 
  : DataLogWriter(GpsLogName, fileFormat, AutoTimeStamp) 
{
  setMnemonic("gps");

  addField((_sampleTime = new IntegerData("UTCTime")));
  addField((_latitude = new AngleData("latitude")));
  addField((_longitude = new AngleData("longitude")));

  _latitude->setAsciiFormat("%8.8e");
  _longitude->setAsciiFormat("%8.8e");

  //addField((_NSHem = new CharData("NSHemisphere")));
  //addField((_EWHem = new CharData("EWHemisphere")));
  addField((_quality = new ShortData("quality")));
  addField((_nSatellites = new ShortData("numberOfSatellites")));
  addField((_hdop = new DoubleData("hdop")));
  addField((_altitude = new DoubleData("antennaHeight")));
  addField((_geoidHeight = new DoubleData("geoHeight")));
  addField((_dgpsDataAge = new ShortData("dgpsDataAge")));
  addField((_dgpsStationID = new ShortData("dgpsRSID")));
  _gps = gps;
}


GpsLog::~GpsLog()
{
  delete _sampleTime;
  delete _latitude;
  delete _longitude;
  //delete _NSHem;
  //delete _EWHem;
  delete _quality;
  delete _nSatellites;
  delete _hdop;
  delete _altitude;
  delete _geoidHeight;
  delete _dgpsDataAge;
  delete _dgpsStationID;
  
}

void GpsLog::setFields()
{

  _sampleTime->setValue(_gps->sampleTime());
  _latitude->setValue(_gps->latitude());
  _longitude->setValue(_gps->longitude());
  //_NSHem->setValue(_gps->nsHemisphere());
  //_EWHem->setValue(_gps->ewHemisphere());
  _quality->setValue(_gps->quality());
  _nSatellites->setValue(_gps->nSatellites());
  _hdop->setValue(_gps->hdop());
  _altitude->setValue(_gps->altitude());
  _geoidHeight->setValue(_gps->geoidHeight());
  _dgpsDataAge->setValue(_gps->dgpsDataAge());
  _dgpsStationID->setValue(_gps->dgpsStationId());
}



