#ifndef _SCSIDEVICE_H
#define _SCSIDEVICE_H
#define kDefaultInquirySize 255
typedef struct SCSITargetLun
{
UInt8 target;
UInt8 lun;
UInt8 reserved[2];
} SCSITargetLun;
typedef struct SCSILunParms
{
Boolean disableDisconnect;
UInt32 reserved[16];
} SCSILunParms;
typedef struct SCSITargetParms
{
UInt32 transferPeriodpS;
UInt32 transferOffset;
UInt32 transferWidth;
UInt32 transferOptions;
Boolean enableTagQueuing;
Boolean disableParity;
UInt32 reserved[16];
} SCSITargetParms;
enum SCSITransferOptions
{
kSCSITransferOptionClockDT = 0x00000001,
kSCSITransferOptionQAS = 0x00000100,
kSCSITransferOptionIUS = 0x00000200,
kSCSITransferOptionPPR = 0x00000400,
};
#define kSCSITransferOptionsSCSI3 (kSCSITransferOptionClockDT | kSCSITransferOptionQAS | kSCSITransferOptionIUS | kSCSITransferOptionPPR)
enum SCSIDeviceTimeouts
{
kSCSITimerIntervalmS = 500,
kSCSIProbeTimeoutmS = 5000,
kSCSIResetIntervalmS = 3000,
kSCSIAbortTimeoutmS = 5000,
kSCSIReqSenseTimeoutmS = 5000,
kSCSIDisableTimeoutmS = 5000,
};
enum SCSIClientMessage
{
kSCSIClientMsgNone = 0x00005000,
kSCSIClientMsgDeviceAbort,
kSCSIClientMsgDeviceReset,
kSCSIClientMsgBusReset,
kSCSIClientMsgDone = 0x80000000,
};
enum SCSIQueueType
{
kQTypeNormalQ = 0,
kQTypeBypassQ = 1,
};
enum SCSIQueuePosition
{
kQPositionTail = 0,
kQPositionHead = 1,
};
#define kSCSIMaxProperties 12
#define kSCSIPropertyTarget "SCSI Target"
#define kSCSIPropertyLun "SCSI Lun"
#define kSCSIPropertyIOUnit "IOUnit"
#define kSCSIPropertyDeviceTypeID "SCSI Device Type"
#define kSCSIPropertyRemovableMedia "SCSI Removable Media"
#define kSCSIPropertyVendorName "SCSI Vendor Name"
#define kSCSIPropertyProductName "SCSI Product Name"
#define kSCSIPropertyProductRevision "SCSI Product Revision"
#define kSCSIPropertyTransferPeriod "SCSI Transfer Period"
#define kSCSIPropertyTransferOffset "SCSI Transfer Offset"
#define kSCSIPropertyTransferWidth "SCSI Transfer Width"
#define kSCSIPropertyTransferOptions "SCSI Transfer Options"
#define kSCSIPropertyCmdQueue "SCSI CmdQueue Enabled"
#endif