/****************************************************************************/
/* Copyright (c) 2000 MBARI                                                 */
/* MBARI Proprietary Information. All rights reserved.                      */
/****************************************************************************/
/* Summary  :                                                               */
/* Filename : IridiumDriver.cc                                              */
/* Author   : hans                                                          */
/* Project  :                                                               */
/* Version  : 1.0                                                           */
/* Created  : 11/01/2005                                                    */
/* Modified :                                                               */
/* Archived :                                                               */
/****************************************************************************/
/* Modification History:                                                    */
/****************************************************************************/

#ifndef _IRIDIUMDRIVER_H_
#define _IRIDIUMDRIVER_H_

#include "Task.h"
#include "SerialDevice.h"
#include "DeviceIF.h"
#include "GpsIF.h"
#include "LayeredControlIF.h"
#include "BluefinBattOutput.h"

class IridiumDriver:public Task {
 public:

  IridiumDriver(SerialDevice *dev);
  ~IridiumDriver();
  void Initialize();
  int getSignalQual();
  int sendIridiumDAVUpdate(GpsIF::Fix *fix);
  int sendIridiumSBDUpdate(GpsIF::Fix *fix,
			   double elapsedTime,
			   LayeredControlIF::MissionState state,
			   LayeredControlIF::Name behaviorName,
			   short behaviorIndex);
  virtual void run();

 private:
  double _lastUpdateTime;
  GpsIF *_gpsIF;
  LayeredControlIF *_layeredControlIF;
  BluefinBattOutput *_bluefinBattOutput;
  int _SignalQual;
  SerialDevice *_device;
};

#endif  
