#ifndef __INC_POS_DEVICE_SCSIDISK_H
#define __INC_POS_DEVICE_SCSIDISK_H
/*******************************************************************
 Includes Release 24
 (C) Copyright 1995-1997 proDAD
     All Rights Reserved

 $AUT Holger Burkarth
 $DAT >>ScsiDisk.h<<   15 Dec 1996    17:23:26 - (C) ProDAD
*******************************************************************/
#ifndef __INC_POS_PEXEC_DEVICE_H
#include <pExec/Device.h>
#endif


/*----------------------------------
-----------------------------------*/
struct pOS_SCSICmd
{
  UWORD  *scsi_Data;
  ULONG   scsi_Length;
  ULONG   scsi_Actual;
  UBYTE  *scsi_Command;
  UWORD   scsi_CmdLength;
  UWORD   scsi_CmdActual;
  ULONG   scsi_Flags;       /* (enum pOS_ScsiCmdFlags) */
  ULONG   scsi_Status;
  UBYTE  *scsi_SenseData;
  UWORD   scsi_SenseLength;
  UWORD   scsi_SenseActual;
};


enum pOS_SCSIIOReqCommands
{
  SCSICMD_CMD = 28
};



enum pOS_ScsiCmdFlags /** scsi_Flags **/
{
/** Test **/
  SCSIB_ReadWrite = 0,
  SCSIB_AutoSense = 1,

/** **/
  SCSIF_Write =  0,
  SCSIF_Read  =  1,
  SCSIF_NoSense = 0,
  SCSIF_AutoSense = 2
};



enum pOS_SCSIIOReqErrors
{
  SCSIIOERR_SelfUnit = 40,/* cannot issue SCSI command to self */
  SCSIIOERR_DMA,          /* DMA error */
  SCSIIOERR_Phase,        /* illegal or unexpected SCSI phase */
  SCSIIOERR_Parity,       /* SCSI parity error */
  SCSIIOERR_SelTimeout,   /* Select timed out */
  SCSIIOERR_BadStatus,    /* status and/or sense error */
  SCSIIOERR_NoBoard = 50  /* Open failed for non-existant board */
};


#endif
