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

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

  AUTHOR: Aaron Marsh

  $Id: CrossbowOutput.h,v 1.6 2000/05/12 15:27:20 oreilly Exp $
 *-----------------------------------------------------------------------*/

#ifndef _CROSSBOWOUTPUT_H
#define _CROSSBOWOUTPUT_H

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

#define CompassOutputName "crossbowOutput"

class CrossbowOutput: public SharedData {

public:

  struct Data {

    DeviceIF::Status status;
    double roll, rollRate;
    double pitch, pitchRate;
    double yaw, yawRate;

    double accelX, accelY, accelZ;
    double magX, magY, magZ;

    double temperature;

    char serialNumber[32];

    struct timespec sampleTime;
  };

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

  ~CrossbowOutput();

  Data data;

  void read();
  void write();

  void clear();
};

#endif
