/*
********************************************************
Copyright 2000 MBARI.
MBARI Proprietary Information. All rights reserved.
NOTE: This file is automatically generated.
DO NOT MODIFY.
********************************************************
*/

#ifndef __InsIF_H
#define __InsIF_H

#include "TaskInterface.h"

#include "InstrumentIF.h"
#include "DeviceIF.h"
#include "TimeIF.h"

#define InsIFServerName "InsIFServer"

class InsIF : public InstrumentIF {

  friend class InsIF_SK;

  public:

  // Forward declarations of public structures
  struct InertialState;
  
  
  
  struct InertialState {
    long status;
    double lat;
    double lon;
    double depth;
    double roll;
    double pitch;
    double yaw;
    double vbodyx;
    double vbodyy;
    double vbodyz;
    double accelx;
    double accely;
    double accelz;
    double rollRate;
    double pitchRate;
    double yawRate;
  };
  InsIF(const char *name, int timeout = 10);

  InsIF(const char *name, const char *serverName, int timeout = 10);

  ~InsIF();

  ////////////////////////////////////////////////////////////
  // Get attitude
  DeviceIF::Status getInertialState(InsIF::InertialState *insState, TimeIF::TimeSpec *sampleTime);

  
  protected:

  // Message codes for each method
  enum InsIFMsgCode {
    GetInertialStateMsgCode = 8
  };

  // Define message structure for each method
  struct GetInertialStateMsg : Request, Reply {
    DeviceIF::Status returnVal;
    InsIF::InertialState insState;
    TimeIF::TimeSpec sampleTime;
  
  } _getInertialStateMsg;

};

#endif

