#ifndef __DEVICES_GAGESCOPE_H
#define __DEVICES_GAGESCOPE_H
/*
**      $Source: Devel:cs220/RCS/gagescope.h,v $
**      $Author: tsarna $
**    $Revision: 2.7 $
**        $Date: 1994/08/10 18:51:37 $
**
**        Amiga Gage Driver support header
**
**    (C) Copyright 1994 Endicor Technologies, Inc.
**        All Rights Reserved.
*/


#ifndef   EXEC_IO_H
#include <exec/io.h>
#endif /* EXEC_IO_H */

#ifndef   EXEC_TASKS_H
#include <exec/tasks.h>
#endif /* EXEC_TASKS_H */


/* Supported commands */

#define GAGECMD_READ	   CMD_READ
#define GAGECMD_FLUSH      CMD_FLUSH
#define GAGECMD_QUERY      (CMD_NONSTD+0)
#define GAGECMD_SETPARAMS  (CMD_NONSTD+1)
#define GAGECMD_CONVERT    (CMD_NONSTD+2)


/* Device names */

#define GNULLNAME     "gage_null.device"     /* no-hardware test driver */
#define CSLITENAME    "gage_cslite.device"   /* unsupported             */
#define CS220NAME     "gage_cs220.device"    /* CompuScope 220          */
#define CS250NAME     "gage_cs250.device"    /* unsupported             */
#define CS1012NAME    "gage_cs1012.device"   /* unsupported             */
 

/* Gage-specific error codes */

#define GageErr_NoData  1     /* CMD_READ when no valid data to return */


/* NOTE: C_25MHz/C_50MHz/C_100MHz only on CS250, C_40MHz only on CS220 */

typedef short enum _GageClock {
   C_1Hz, C_2Hz, C_5Hz, C_10Hz, C_20Hz, C_50Hz,
   C_100Hz, C_200Hz, C_500Hz, C_1KHz, C_2KHz, C_5KHz,
   C_10KHz, C_20KHz, C_50KHz, C_100KHz, C_200KHz, C_500KHz,
   C_1MHz, C_2MHz, C_5MHz, C_10MHz, C_20MHz, C_25MHz, C_40MHz,
   C_50MHz, C_100MHz
} GageClock;


/* NOTE: external trigger only supports V_5v and V_1v */

typedef short enum _GageVoltage {
   V_100mv, V_200mv, V_500mv, V_1v, V_2v, V_5v
} GageVoltage;

typedef short enum _GageCoupling { DC, AC } GageCoupling;

typedef short enum _GageSlope { positive, negative } GageSlope;

typedef short enum _GageChannel {
   CH_A, CH_B, CH_EXTERNAL, AUTOTRIG, SOFTTRIG
} GageChannel;


typedef struct _GageConfig {
   BOOL              gc_Skip[2];       /* channels to skip (not read)      */
   short             gc_Points;        /* get this many samples            */
   short             gc_Off[2];        /* where to start relative to trig. */
   short             gc_Adjust[2];     /* adjust values by this amount     */
   GageClock         gc_Clock;         /* sampling rate                    */
   GageVoltage       gc_Volts[3];      /* voltage range, +/-, A/B/EXTERNAL */
   GageCoupling      gc_Coupling[3];   /* coupling for A/B/EXTERNAL        */
   short             gc_TrigLevel;     /* trigger level 0-255              */
   GageSlope         gc_TrigSlope;     /* positive/negative                */
   GageChannel       gc_TrigSource;    /* trigger source                   */
   UBYTE             gc_BitsPerSamp;   /* Read Only: number of bits/sample */
   BYTE              gc_TaskPri;       /* Priority of service task         */

   ULONG             gc_Reserved[8];   /* For future expansion             */
} GageConfig;


#endif /* __DEVICES_GAGESCOPE_H */
