SCSIPrimaryCommands.h [plain text]
#include <IOKit/IOLib.h>
#ifndef _IOKIT_SCSI_PRIMARY_COMMANDS_H_
#define _IOKIT_SCSI_PRIMARY_COMMANDS_H_
#if defined(KERNEL) && defined(__cplusplus)
#include <libkern/c++/OSObject.h>
#include <IOKit/scsi-commands/SCSICommandDefinitions.h>
#include <IOKit/scsi-commands/SCSITask.h>
class SCSIPrimaryCommands : public OSObject
{
OSDeclareDefaultStructors ( SCSIPrimaryCommands )
protected:
inline bool IsParameterValid (
SCSICmdField1Byte param,
SCSICmdField1Byte mask );
inline bool IsParameterValid (
SCSICmdField2Byte param,
SCSICmdField2Byte mask );
inline bool IsParameterValid (
SCSICmdField4Byte param,
SCSICmdField4Byte mask );
inline bool IsBufferAndCapacityValid (
IOMemoryDescriptor * dataBuffer,
UInt32 requiredSize );
bool SetCommandDescriptorBlock (
SCSITask * request,
UInt8 cdbByte0,
UInt8 cdbByte1,
UInt8 cdbByte2,
UInt8 cdbByte3,
UInt8 cdbByte4,
UInt8 cdbByte5 );
bool SetCommandDescriptorBlock (
SCSITask * request,
UInt8 cdbByte0,
UInt8 cdbByte1,
UInt8 cdbByte2,
UInt8 cdbByte3,
UInt8 cdbByte4,
UInt8 cdbByte5,
UInt8 cdbByte6,
UInt8 cdbByte7,
UInt8 cdbByte8,
UInt8 cdbByte9 );
bool SetCommandDescriptorBlock (
SCSITask * request,
UInt8 cdbByte0,
UInt8 cdbByte1,
UInt8 cdbByte2,
UInt8 cdbByte3,
UInt8 cdbByte4,
UInt8 cdbByte5,
UInt8 cdbByte6,
UInt8 cdbByte7,
UInt8 cdbByte8,
UInt8 cdbByte9,
UInt8 cdbByte10,
UInt8 cdbByte11 );
bool SetCommandDescriptorBlock (
SCSITask * request,
UInt8 cdbByte0,
UInt8 cdbByte1,
UInt8 cdbByte2,
UInt8 cdbByte3,
UInt8 cdbByte4,
UInt8 cdbByte5,
UInt8 cdbByte6,
UInt8 cdbByte7,
UInt8 cdbByte8,
UInt8 cdbByte9,
UInt8 cdbByte10,
UInt8 cdbByte11,
UInt8 cdbByte12,
UInt8 cdbByte13,
UInt8 cdbByte14,
UInt8 cdbByte15 );
bool SetDataTransferControl (
SCSITask * request,
UInt32 timeoutDuration,
UInt8 dataTransferDirection,
IOMemoryDescriptor * dataBuffer = NULL,
UInt64 transferCountInBytes = 0 );
public:
static SCSIPrimaryCommands * CreateSCSIPrimaryCommandObject ( void );
virtual bool CHANGE_DEFINITION (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit SAVE,
SCSICmdField7Bit DEFINITION_PARAMETER,
SCSICmdField1Byte PARAMETER_DATA_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool COMPARE (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit PAD,
SCSICmdField3Byte PARAMETER_LIST_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool COPY (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit PAD,
SCSICmdField3Byte PARAMETER_LIST_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool COPY_AND_VERIFY (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit BYTCHK,
SCSICmdField1Bit PAD,
SCSICmdField3Byte PARAMETER_LIST_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool EXTENDED_COPY (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField4Byte PARAMETER_LIST_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool INQUIRY (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit CMDDT,
SCSICmdField1Bit EVPD,
SCSICmdField1Byte PAGE_OR_OPERATION_CODE,
SCSICmdField1Byte ALLOCATION_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool LOG_SELECT (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit PCR,
SCSICmdField1Bit SP,
SCSICmdField2Bit PC,
SCSICmdField2Byte PARAMETER_LIST_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool LOG_SENSE (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit PPC,
SCSICmdField1Bit SP,
SCSICmdField2Bit PC,
SCSICmdField6Bit PAGE_CODE,
SCSICmdField2Byte PARAMETER_POINTER,
SCSICmdField2Byte ALLOCATION_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool MODE_SELECT_6 (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit PF,
SCSICmdField1Bit SP,
SCSICmdField1Byte PARAMETER_LIST_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool MODE_SELECT_10 (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit PF,
SCSICmdField1Bit SP,
SCSICmdField2Byte PARAMETER_LIST_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool MODE_SENSE_6 (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit DBD,
SCSICmdField2Bit PC,
SCSICmdField6Bit PAGE_CODE,
SCSICmdField1Byte ALLOCATION_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool MODE_SENSE_10 (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit LLBAA,
SCSICmdField1Bit DBD,
SCSICmdField2Bit PC,
SCSICmdField6Bit PAGE_CODE,
SCSICmdField2Byte ALLOCATION_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool PERSISTENT_RESERVE_IN (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField5Bit SERVICE_ACTION,
SCSICmdField2Byte ALLOCATION_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool PERSISTENT_RESERVE_OUT (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField5Bit SERVICE_ACTION,
SCSICmdField4Bit SCOPE,
SCSICmdField4Bit TYPE,
SCSICmdField1Byte CONTROL );
virtual bool PREVENT_ALLOW_MEDIUM_REMOVAL (
SCSITask * request,
SCSICmdField2Bit PREVENT,
SCSICmdField1Byte CONTROL );
virtual bool READ_BUFFER (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField4Bit MODE,
SCSICmdField1Byte BUFFER_ID,
SCSICmdField3Byte BUFFER_OFFSET,
SCSICmdField3Byte ALLOCATION_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool RECEIVE (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField3Byte TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool RECEIVE_COPY_RESULTS (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField5Bit SERVICE_ACTION,
SCSICmdField1Byte LIST_IDENTIFIER,
SCSICmdField4Byte ALLOCATION_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool RECEIVE_DIAGNOSTICS_RESULTS (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit PCV,
SCSICmdField1Byte PAGE_CODE,
SCSICmdField2Byte ALLOCATION_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool RELEASE_10 (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit THRDPTY,
SCSICmdField1Bit LONGID,
SCSICmdField1Byte THIRD_PARTY_DEVICE_ID,
SCSICmdField2Byte PARAMETER_LIST_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool RELEASE_10 (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit THRDPTY,
SCSICmdField1Bit LONGID,
SCSICmdField1Bit EXTENT,
SCSICmdField1Byte RESERVATION_IDENTIFICATION,
SCSICmdField1Byte THIRD_PARTY_DEVICE_ID,
SCSICmdField2Byte PARAMETER_LIST_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool RELEASE_6 (
SCSITask * request,
SCSICmdField1Byte CONTROL );
virtual bool RELEASE_6 (
SCSITask * request,
SCSICmdField1Bit EXTENT,
SCSICmdField1Byte RESERVATION_IDENTIFICATION,
SCSICmdField1Byte CONTROL );
virtual bool REPORT_DEVICE_IDENTIFIER (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField4Byte ALLOCATION_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool REPORT_LUNS (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField4Byte ALLOCATION_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool REQUEST_SENSE (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Byte ALLOCATION_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool RESERVE_10 (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit THRDPTY,
SCSICmdField1Bit LONGID,
SCSICmdField1Byte THIRD_PARTY_DEVICE_ID,
SCSICmdField2Byte PARAMETER_LIST_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool RESERVE_10 (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit THRDPTY,
SCSICmdField1Bit LONGID,
SCSICmdField1Bit EXTENT,
SCSICmdField1Byte RESERVATION_IDENTIFICATION,
SCSICmdField1Byte THIRD_PARTY_DEVICE_ID,
SCSICmdField2Byte PARAMETER_LIST_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool RESERVE_6 (
SCSITask * request,
SCSICmdField1Byte CONTROL );
virtual bool RESERVE_6 (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit EXTENT,
SCSICmdField1Byte RESERVATION_IDENTIFICATION,
SCSICmdField2Byte PARAMETER_LIST_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool SEND (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit AER,
SCSICmdField3Byte TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool SEND_DIAGNOSTICS (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField3Bit SELF_TEST_CODE,
SCSICmdField1Bit PF,
SCSICmdField1Bit SELF_TEST,
SCSICmdField1Bit DEVOFFL,
SCSICmdField1Bit UNITOFFL,
SCSICmdField2Byte PARAMETER_LIST_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool SET_DEVICE_IDENTIFIER (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField5Bit SERVICE_ACTION,
SCSICmdField4Byte PARAMETER_LIST_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool TEST_UNIT_READY (
SCSITask * request,
SCSICmdField1Byte CONTROL );
virtual bool WRITE_BUFFER (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField4Bit MODE,
SCSICmdField1Byte BUFFER_ID,
SCSICmdField3Byte BUFFER_OFFSET,
SCSICmdField3Byte PARAMETER_LIST_LENGTH,
SCSICmdField1Byte CONTROL );
};
#endif
#endif