#ifndef _datel612_H
#define _datel612_H
/****************************************************************************/
/* Copyright 1992 MBARI                                                     */
/****************************************************************************/
/* Summary  : Datel 612 A to D board Driver Definitions for vxWorks         */
/* Filename : datel612.h                                                    */
/* Author   : Andrew Pearce                                                 */
/* Project  : New ROV                                                       */
/* Version  : Version 1.0                                                   */
/* Created  : 11/13/92                                                      */
/* Modified : 11/13/92                                                      */
/* Archived :                                                               */
/****************************************************************************/
/* Modification History:                                                    */
/* $Header: /usr/tiburon/.cvsroot/vw/h/datel612.h,v 1.1.1.1 1997/05/16 22:33:02 pean Exp $
 * $Log: datel612.h,v $
 * Revision 1.1.1.1  1997/05/16 22:33:02  pean
 * Initial check in after software freeze.
 *
 */
/****************************************************************************/

#define DATEL_612_VME_ADDR      0xffffc000

#define A2D_MODE_SINGLE         1
#define A2D_MODE_SCAN           2
#define A2D_MAXCHANNEL          32
#define A2D_CNTRL_ENABLE        0x0004
#define A2D_CNTRL_SINGLE        0x0000
#define A2D_CNTRL_SCAN          0x0009
#define A2D_CNTRL_EXT_TRIG      0x0002
#define A2D_CONVERSION_DONE     0x8000
#define A2D_CHANNEL_BITS        0x007f
#define A2D_END_OF_SCAN         0x0104
#define A2D_TIMEOUT             100

                   /* This structure overlays physical registers on the card*/
typedef struct
{
    Word    boardId[64];                /* 32 words of Manufacturer and     */
                                        /* Board Identification Code        */
    Word    command;                    /* Command and Status Register Write*/
    Word    interruptId;                /* Interrupt ID Register Write      */
    Word    reset_eoc_eos;              /* Reset EOC & EOS Register         */
    Word    pgaGain;                    /* PGA Register                     */
    Word    startChannel;               /* Start & current channel Register */
    Word    finalChannel;               /* Final Channel Register           */
    Word    analogData;                 /* A/D data Register                */
    Word    boardStatus;                /* Board Status - same as status    */
    Word    not_used[8];                /* 8 Words of unused space          */
    Int16   D2A0_data;                  /* D/A Channel 0 Data               */
    Int16   D2A1_data;                  /* D/A Channel 1 Data               */
} datelCardRegs;

STATUS datel612CardInit(Int16 mode, Int16 gain);

STATUS datel612Read(int channel, Int16* value);

STATUS datel612ScanChannels(int start_channel, int end_channel, Int16 *value);
#endif /* _datel612_H */
