#ifndef __SCSI_TASK_LIB_PRIV_H__
#define __SCSI_TASK_LIB_PRIV_H__
#include <IOKit/scsi/SCSICommandDefinitions.h>
#ifdef __cplusplus
extern "C" {
#endif
#define kSCSITaskUserClientIniterKey "SCSITaskUserClientIniter"
enum
{
kIOSCSITaskUserClientAccessBit = 16,
kIOSCSITaskUserClientAccessMask = (1 << kIOSCSITaskUserClientAccessBit)
};
enum
{
kSCSITaskLibConnection = 12
};
enum
{
kSCSITaskUserClientIsExclusiveAccessAvailable = 0, kSCSITaskUserClientObtainExclusiveAccess = 1, kSCSITaskUserClientReleaseExclusiveAccess = 2, kSCSITaskUserClientCreateTask = 3, kSCSITaskUserClientReleaseTask = 4, kSCSITaskUserClientAbortTask = 5, kSCSITaskUserClientExecuteTask = 6, kSCSITaskUserClientSetBuffers = 7, kMMCDeviceInquiry = 8, kMMCDeviceTestUnitReady = 9, kMMCDeviceGetPerformance = 10, kMMCDeviceGetConfiguration = 11, kMMCDeviceModeSense10 = 12, kMMCDeviceSetWriteParametersModePage = 13, kMMCDeviceGetTrayState = 14, kMMCDeviceSetTrayState = 15, kMMCDeviceReadTableOfContents = 16, kMMCDeviceReadDiscInformation = 17, kMMCDeviceReadTrackInformation = 18, kMMCDeviceReadDVDStructure = 19, kMMCDeviceSetCDSpeed = 20, kMMCDeviceReadFormatCapacities = 21,
kSCSITaskUserClientMethodCount
};
enum
{
kSCSITaskUserClientSetAsyncCallback = 0, kSCSITaskUserClientAsyncMethodCount
};
#pragma mark -
#pragma mark Exclusive Command Structures
#pragma mark -
struct SCSITaskData
{
UInt32 taskReference;
bool isSync;
SCSITaskAttribute taskAttribute;
SCSICommandDescriptorBlock cdbData;
UInt8 cdbSize;
UInt64 requestedTransferCount;
UInt8 transferDirection;
UInt32 timeoutDuration;
UInt32 scatterGatherEntries;
IOVirtualRange scatterGatherList[1];
};
typedef struct SCSITaskData SCSITaskData;
struct SCSITaskResults
{
SCSIServiceResponse serviceResponse;
SCSITaskStatus taskStatus;
UInt64 realizedTransferCount;
};
typedef struct SCSITaskResults SCSITaskResults;
#pragma mark -
#pragma mark Non-Exclusive Command Structures
#pragma mark -
struct AppleInquiryStruct
{
void * buffer;
SCSICmdField1Byte bufferSize;
void * senseDataBuffer;
};
typedef struct AppleInquiryStruct AppleInquiryStruct;
struct AppleGetPerformanceStruct
{
SCSICmdField5Bit DATA_TYPE;
SCSICmdField4Byte STARTING_LBA;
SCSICmdField2Byte MAXIMUM_NUMBER_OF_DESCRIPTORS;
SCSICmdField1Byte TYPE;
void * buffer;
SCSICmdField2Byte bufferSize;
void * senseDataBuffer;
};
typedef struct AppleGetPerformanceStruct AppleGetPerformanceStruct;
struct AppleGetConfigurationStruct
{
SCSICmdField1Byte RT;
SCSICmdField2Byte STARTING_FEATURE_NUMBER;
void * buffer;
SCSICmdField2Byte bufferSize;
void * senseDataBuffer;
};
typedef struct AppleGetConfigurationStruct AppleGetConfigurationStruct;
struct AppleModeSense10Struct
{
SCSICmdField1Bit LLBAA;
SCSICmdField1Bit DBD;
SCSICmdField2Bit PC;
SCSICmdField6Bit PAGE_CODE;
void * buffer;
SCSICmdField2Byte bufferSize;
void * senseDataBuffer;
};
typedef struct AppleModeSense10Struct AppleModeSense10Struct;
struct AppleWriteParametersModePageStruct
{
void * buffer;
SCSICmdField2Byte bufferSize;
void * senseDataBuffer;
};
typedef struct AppleWriteParametersModePageStruct AppleWriteParametersModePageStruct;
struct AppleReadTableOfContentsStruct
{
SCSICmdField1Bit MSF;
SCSICmdField4Bit FORMAT;
SCSICmdField1Byte TRACK_SESSION_NUMBER;
void * buffer;
SCSICmdField2Byte bufferSize;
void * senseDataBuffer;
};
typedef struct AppleReadTableOfContentsStruct AppleReadTableOfContentsStruct;
struct AppleReadDiscInfoStruct
{
void * buffer;
SCSICmdField2Byte bufferSize;
void * senseDataBuffer;
};
typedef struct AppleReadDiscInfoStruct AppleReadDiscInfoStruct;
struct AppleReadTrackInfoStruct
{
SCSICmdField1Byte ADDRESS_NUMBER_TYPE;
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS_TRACK_SESSION_NUMBER;
void * buffer;
SCSICmdField2Byte bufferSize;
void * senseDataBuffer;
};
typedef struct AppleReadTrackInfoStruct AppleReadTrackInfoStruct;
struct AppleReadDVDStructureStruct
{
SCSICmdField4Byte ADDRESS;
SCSICmdField1Byte LAYER_NUMBER;
SCSICmdField1Byte FORMAT;
void * buffer;
SCSICmdField2Byte bufferSize;
SCSICmdField2Bit AGID;
void * senseDataBuffer;
};
typedef struct AppleReadDVDStructureStruct AppleReadDVDStructureStruct;
struct AppleSetCDSpeedStruct
{
SCSICmdField2Byte LOGICAL_UNIT_READ_SPEED;
SCSICmdField2Byte LOGICAL_UNIT_WRITE_SPEED;
void * senseDataBuffer;
};
typedef struct AppleSetCDSpeedStruct AppleSetCDSpeedStruct;
struct AppleReadFormatCapacitiesStruct
{
void * buffer;
SCSICmdField2Byte bufferSize;
void * senseDataBuffer;
};
typedef struct AppleReadFormatCapacitiesStruct AppleReadFormatCapacitiesStruct;
#ifdef __cplusplus
}
#endif
#endif