/****************************************************************************/
/* Copyright (c) 2000 MBARI                                                 */
/* MBARI Proprietary Information. All rights reserved.                      */
/****************************************************************************/
/* Summary  :                                                               */
/* Filename : OctansOutput.h                                              */
/* Author   :                                                               */
/* Project  :                                                               */
/* Version  : 1.0                                                           */
/* Created  : 02/07/2000                                                    */
/* Modified :                                                               */
/* Archived :                                                               */
/****************************************************************************/
/* Modification History:                                                    */
/****************************************************************************/
/*-----------------------------------------------------------------------*
  CLASS: OctansOutput

  DESCRIPTION: Shared mem for Octans DMU_AHRS Attitude Heading Reference
  System output channel

  AUTHOR: Aaron Marsh

  $Id: KearfottOutput.h,v 1.5 2001/07/17 22:07:18 hthomas Exp $
 *-----------------------------------------------------------------------*/

#ifndef _KEARFOTTOUTPUT_H
#define _KEARFOTTOUTPUT_H

#include <time.h>
#include "SharedData.h"
#include "KearfottIF.h"
#include "DeviceIF.h"

#define KearfottOutputName "kearfottOutput"

class KearfottOutput: public SharedData {

public:
  typedef struct {
    unsigned short cycles;
    unsigned char mode;
    unsigned char monitor;
    float lat;
    float lon;
    double northing;
    double easting;
    float depth;
    float bheight;
    float roll;
    float pitch;
    float heading;
    float vbodyx;
    float vbodyy;
    float vbodyz;
    float accelx;
    float accely;
    float accelz;
    float prate;
    float qrate;
    float rrate;
    unsigned int utcTime;
  } KEARFOTT_SCALED_NAV_TYPE;

  struct Data {

    DeviceIF::Status status;
    KEARFOTT_SCALED_NAV_TYPE navData;
  };

  KearfottOutput( Access access = NoAccess,
		  Boolean init = False );

  ~KearfottOutput();

  Data data;

  void read();
  void write();

  void clear();
};

#endif
