IOSCSIMultimediaCommandsDevice.h [plain text]
#ifndef _IOKIT_IO_SCSI_MULTIMEDIA_COMMANDS_DEVICE_H_
#define _IOKIT_IO_SCSI_MULTIMEDIA_COMMANDS_DEVICE_H_
#if KERNEL
#include <IOKit/IOTypes.h>
#else
#include <CoreFoundation/CoreFoundation.h>
#endif
#define kIOMessageTrayStateHasChanged 0x69000035
#define kIOMessageMediaAccessChange 0x69000036
enum
{
kMessageDeterminingMediaPresence = 0,
kMessageFoundMedia = 1,
kMessageMediaTypeDetermined = 2
};
#define kIOPropertySupportedCDFeatures "CD Features"
#define kIOPropertySupportedDVDFeatures "DVD Features"
#define kIOPropertyLowPowerPolling "Low Power Polling"
typedef UInt32 CDFeatures;
enum
{
kCDFeaturesAnalogAudioBit = 0, kCDFeaturesReadStructuresBit = 1, kCDFeaturesWriteOnceBit = 2, kCDFeaturesReWriteableBit = 3, kCDFeaturesCDDAStreamAccurateBit = 4, kCDFeaturesPacketWriteBit = 5, kCDFeaturesTAOWriteBit = 6, kCDFeaturesSAOWriteBit = 7, kCDFeaturesRawWriteBit = 8, kCDFeaturesTestWriteBit = 9, kCDFeaturesBUFWriteBit = 10 };
enum
{
kCDFeaturesAnalogAudioMask = (1 << kCDFeaturesAnalogAudioBit),
kCDFeaturesReadStructuresMask = (1 << kCDFeaturesReadStructuresBit),
kCDFeaturesWriteOnceMask = (1 << kCDFeaturesWriteOnceBit),
kCDFeaturesReWriteableMask = (1 << kCDFeaturesReWriteableBit),
kCDFeaturesCDDAStreamAccurateMask = (1 << kCDFeaturesCDDAStreamAccurateBit),
kCDFeaturesPacketWriteMask = (1 << kCDFeaturesPacketWriteBit),
kCDFeaturesTAOWriteMask = (1 << kCDFeaturesTAOWriteBit),
kCDFeaturesSAOWriteMask = (1 << kCDFeaturesSAOWriteBit),
kCDFeaturesRawWriteMask = (1 << kCDFeaturesRawWriteBit),
kCDFeaturesTestWriteMask = (1 << kCDFeaturesTestWriteBit),
kCDFeaturesBUFWriteMask = (1 << kCDFeaturesBUFWriteBit)
};
typedef UInt32 DVDFeatures;
enum
{
kDVDFeaturesCSSBit = 0, kDVDFeaturesReadStructuresBit = 1, kDVDFeaturesWriteOnceBit = 2, kDVDFeaturesRandomWriteableBit = 3, kDVDFeaturesReWriteableBit = 4, kDVDFeaturesTestWriteBit = 5, kDVDFeaturesBUFWriteBit = 6 };
enum
{
kDVDFeaturesCSSMask = (1 << kDVDFeaturesCSSBit),
kDVDFeaturesReadStructuresMask = (1 << kDVDFeaturesReadStructuresBit),
kDVDFeaturesWriteOnceMask = (1 << kDVDFeaturesWriteOnceBit),
kDVDFeaturesRandomWriteableMask = (1 << kDVDFeaturesRandomWriteableBit),
kDVDFeaturesReWriteableMask = (1 << kDVDFeaturesReWriteableBit),
kDVDFeaturesTestWriteMask = (1 << kDVDFeaturesTestWriteBit),
kDVDFeaturesBUFWriteMask = (1 << kDVDFeaturesBUFWriteBit)
};
enum
{
kDiscStatusEmpty = 0,
kDiscStatusIncomplete = 1,
kDiscStatusComplete = 2,
kDiscStatusOther = 3,
kDiscStatusMask = 0x03,
kDiscStatusErasableMask = 0x10
};
#if defined(KERNEL) && defined(__cplusplus)
enum
{
kMMCPowerStateSystemSleep = 0,
kMMCPowerStateSleep = 1,
kMMCPowerStateStandby = 2,
kMMCPowerStateIdle = 3,
kMMCPowerStateActive = 4,
kMMCNumPowerStates = 5
};
enum
{
kMediaStateUnlocked = 0,
kMediaStateLocked = 1
};
#include <IOKit/IOLib.h>
#include <IOKit/IOMemoryDescriptor.h>
#include <IOKit/storage/IOStorage.h>
#include <IOKit/storage/IOCDTypes.h>
#include <IOKit/storage/IODVDTypes.h>
#include <IOKit/scsi-commands/IOSCSIPrimaryCommandsDevice.h>
class SCSIMultimediaCommands;
class SCSIBlockCommands;
class IOSCSIMultimediaCommandsDevice : public IOSCSIPrimaryCommandsDevice
{
OSDeclareAbstractStructors ( IOSCSIMultimediaCommandsDevice )
private:
SCSIMultimediaCommands * fSCSIMultimediaCommandObject;
SCSIMultimediaCommands * GetSCSIMultimediaCommandObject ( void );
SCSIBlockCommands * fSCSIBlockCommandObject;
SCSIBlockCommands * GetSCSIBlockCommandObject ( void );
static void AsyncReadWriteComplete ( SCSITaskIdentifier completedTask );
protected:
struct IOSCSIMultimediaCommandsDeviceExpansionData
{
IONotifier * fPowerDownNotifier;
};
IOSCSIMultimediaCommandsDeviceExpansionData * fIOSCSIMultimediaCommandsDeviceReserved;
#define fPowerDownNotifier fIOSCSIMultimediaCommandsDeviceReserved->fPowerDownNotifier
virtual SCSIPrimaryCommands * GetSCSIPrimaryCommandObject ( void );
CDFeatures fSupportedCDFeatures;
DVDFeatures fSupportedDVDFeatures;
UInt16 fCurrentDiscSpeed;
bool fMediaChanged;
bool fMediaPresent;
UInt32 fMediaBlockSize;
UInt32 fMediaBlockCount;
bool fMediaIsRemovable;
bool fMediaIsWriteProtected;
UInt32 fMediaType;
thread_call_t fPollingThread;
bool fDeviceSupportsLowPowerPolling;
bool fLowPowerPollingEnabled;
UInt32 fPollingMode;
enum
{
kPollingMode_Suspended = 0,
kPollingMode_NewMedia = 1,
kPollingMode_MediaRemoval = 2
};
virtual void CreateStorageServiceNub ( void );
virtual bool DetermineDeviceCharacteristics ( void );
virtual IOReturn DetermineIfMediaIsRemovable ( void );
virtual IOReturn DetermineDeviceFeatures ( void );
virtual void DetermineMediaType ( void );
virtual bool CheckForDVDMediaType ( void );
virtual bool CheckForCDMediaType ( void );
virtual void PollForMedia ( void );
virtual void EnablePolling ( void );
virtual void DisablePolling ( void );
virtual void CheckWriteProtection ( void );
virtual bool ClearNotReadyStatus ( void );
virtual IOReturn GetDeviceConfiguration ( void );
virtual IOReturn GetDeviceConfigurationSize ( UInt32 * size );
virtual IOReturn ParseFeatureList ( UInt32 numProfiles, UInt8 * firstFeaturePtr );
virtual IOReturn GetMechanicalCapabilities ( void );
virtual IOReturn GetMechanicalCapabilitiesSize ( UInt32 * size );
virtual IOReturn ParseMechanicalCapabilities ( UInt8 * mechanicalCapabilitiesPtr );
virtual IOReturn CheckForLowPowerPollingSupport ( void );
virtual IOReturn GetCurrentPowerStateOfDrive ( UInt32 * powerState );
virtual IOReturn IssueRead ( IOMemoryDescriptor * buffer,
UInt64 startBlock,
UInt64 blockCount );
virtual IOReturn IssueRead ( IOMemoryDescriptor * buffer,
void * clientData,
UInt64 startBlock,
UInt64 blockCount );
virtual IOReturn IssueWrite ( IOMemoryDescriptor * buffer,
UInt64 startBlock,
UInt64 blockCount );
virtual IOReturn IssueWrite ( IOMemoryDescriptor * buffer,
void * clientData,
UInt64 startBlock,
UInt64 blockCount );
virtual void SetMediaCharacteristics ( UInt32 blockSize, UInt32 blockCount );
virtual void ResetMediaCharacteristics ( void );
UInt8 ConvertBCDToHex ( UInt8 binaryCodedDigit );
virtual IOReturn HandleSetUserClientExclusivityState ( IOService * userClient, bool state );
virtual void InitializePowerManagement ( IOService * provider );
virtual UInt32 GetInitialPowerState ( void );
virtual UInt32 GetNumberOfPowerStateTransitions ( void );
virtual void TicklePowerManager ( void );
virtual void HandlePowerChange ( void );
virtual void HandleCheckPowerState ( void );
virtual bool CheckMediaPresence ( void );
virtual bool InitializeDeviceSupport ( void );
virtual void StartDeviceSupport ( void );
virtual void SuspendDeviceSupport ( void );
virtual void ResumeDeviceSupport ( void );
virtual void StopDeviceSupport ( void );
virtual void TerminateDeviceSupport ( void );
virtual bool CreateCommandSetObjects ( void );
virtual void FreeCommandSetObjects ( void );
virtual IOReturn VerifyDeviceState ( void );
public:
virtual IOReturn SyncReadWrite ( IOMemoryDescriptor * buffer,
UInt64 startBlock,
UInt64 blockCount );
virtual IOReturn AsyncReadWrite ( IOMemoryDescriptor * buffer,
UInt64 block,
UInt64 nblks,
void * clientData );
virtual IOReturn EjectTheMedia ( void );
virtual IOReturn GetTrayState ( UInt8 * trayState );
virtual IOReturn SetTrayState ( UInt8 trayState );
virtual IOReturn FormatMedia ( UInt64 byteCapacity );
virtual UInt32 GetFormatCapacities ( UInt64 * capacities,
UInt32 capacitiesMaxCount ) const;
virtual IOReturn LockUnlockMedia ( bool doLock );
virtual IOReturn SynchronizeCache ( void );
virtual IOReturn ReportBlockSize ( UInt64 * blockSize );
virtual IOReturn ReportEjectability ( bool * isEjectable );
virtual IOReturn ReportLockability ( bool * isLockable );
virtual IOReturn ReportPollRequirements ( bool * pollIsRequired,
bool * pollIsExpensive );
virtual IOReturn ReportMaxReadTransfer ( UInt64 blockSize,
UInt64 * max );
virtual IOReturn ReportMaxValidBlock ( UInt64 * maxBlock );
virtual IOReturn ReportMaxWriteTransfer ( UInt64 blockSize,
UInt64 * max );
virtual IOReturn ReportMediaState ( bool * mediaPresent,
bool * changed );
virtual IOReturn ReportRemovability ( bool * isRemovable );
virtual IOReturn ReportWriteProtection ( bool * isWriteProtected );
static void sPollForMedia ( void * pdtDriver, void * refCon );
virtual IOReturn SetMediaAccessSpeed ( UInt16 kilobytesPerSecond );
virtual IOReturn GetMediaAccessSpeed ( UInt16 * kilobytesPerSecond );
virtual IOReturn AsyncReadCD ( IOMemoryDescriptor * buffer,
UInt32 block,
UInt32 nblks,
CDSectorArea sectorArea,
CDSectorType sectorType,
void * clientData );
virtual IOReturn ReadISRC ( UInt8 track, CDISRC isrc );
virtual IOReturn ReadMCN ( CDMCN mcn);
virtual IOReturn ReadTOC ( IOMemoryDescriptor * buffer );
virtual IOReturn AudioPause ( bool pause );
virtual IOReturn AudioPlay ( CDMSF timeStart, CDMSF timeStop );
virtual IOReturn AudioScan ( CDMSF timeStart, bool reverse );
virtual IOReturn AudioStop ( void );
virtual IOReturn GetAudioStatus ( CDAudioStatus * status );
virtual IOReturn GetAudioVolume ( UInt8 * leftVolume, UInt8 * rightVolume );
virtual IOReturn SetAudioVolume ( UInt8 leftVolume, UInt8 rightVolume );
virtual UInt32 GetMediaType ( void );
virtual IOReturn ReportKey ( IOMemoryDescriptor * buffer,
const DVDKeyClass keyClass,
const UInt32 lba,
const UInt8 agid,
const DVDKeyFormat keyFormat );
virtual IOReturn SendKey ( IOMemoryDescriptor * buffer,
const DVDKeyClass keyClass,
const UInt8 agid,
const DVDKeyFormat keyFormat );
virtual IOReturn ReadDVDStructure ( IOMemoryDescriptor * buffer,
const UInt32 length,
const UInt8 structureFormat,
const UInt32 logicalBlockAddress,
const UInt8 layer,
const UInt8 agid );
bool GetBlockSize (
UInt32 * requestedByteCount,
SCSICmdField3Bit EXPECTED_SECTOR_TYPE,
SCSICmdField1Bit SYNC,
SCSICmdField2Bit HEADER_CODES,
SCSICmdField1Bit USER_DATA,
SCSICmdField1Bit EDC_ECC,
SCSICmdField2Bit ERROR_FIELD,
SCSICmdField3Bit SUBCHANNEL_SELECTION_BITS );
SCSICmdField4Byte ConvertMSFToLBA ( SCSICmdField3Byte MSF );
virtual bool BLANK (
SCSITaskIdentifier request,
SCSICmdField1Bit IMMED,
SCSICmdField3Bit BLANKING_TYPE,
SCSICmdField4Byte START_ADDRESS_TRACK_NUMBER,
SCSICmdField1Byte CONTROL );
virtual bool CLOSE_TRACK_SESSION (
SCSITaskIdentifier request,
SCSICmdField1Bit IMMED,
SCSICmdField1Bit SESSION,
SCSICmdField1Bit TRACK,
SCSICmdField2Byte TRACK_NUMBER,
SCSICmdField1Byte CONTROL );
virtual bool FORMAT_UNIT (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
IOByteCount parameterListSize,
SCSICmdField1Bit FMT_DATA,
SCSICmdField1Bit CMP_LIST,
SCSICmdField3Bit FORMAT_CODE,
SCSICmdField2Byte INTERLEAVE_VALUE,
SCSICmdField1Byte CONTROL );
virtual bool GET_CONFIGURATION (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField2Bit RT,
SCSICmdField2Byte STARTING_FEATURE_NUMBER,
SCSICmdField2Byte ALLOCATION_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool GET_EVENT_STATUS_NOTIFICATION (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit IMMED,
SCSICmdField1Byte NOTIFICATION_CLASS_REQUEST,
SCSICmdField2Byte ALLOCATION_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool GET_PERFORMANCE (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField2Bit TOLERANCE,
SCSICmdField1Bit WRITE,
SCSICmdField2Bit EXCEPT,
SCSICmdField4Byte STARTING_LBA,
SCSICmdField2Byte MAXIMUM_NUMBER_OF_DESCRIPTORS,
SCSICmdField1Byte CONTROL );
virtual bool LOAD_UNLOAD_MEDIUM (
SCSITaskIdentifier request,
SCSICmdField1Bit IMMED,
SCSICmdField1Bit LO_UNLO,
SCSICmdField1Bit START,
SCSICmdField1Byte SLOT,
SCSICmdField1Byte CONTROL );
virtual bool MECHANISM_STATUS (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField2Byte ALLOCATION_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool PAUSE_RESUME (
SCSITaskIdentifier request,
SCSICmdField1Bit RESUME,
SCSICmdField1Byte CONTROL );
virtual bool PLAY_AUDIO_10 (
SCSITaskIdentifier request,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte STARTING_LOGICAL_BLOCK_ADDRESS,
SCSICmdField2Byte PLAY_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool PLAY_AUDIO_12 (
SCSITaskIdentifier request,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte STARTING_LOGICAL_BLOCK_ADDRESS,
SCSICmdField4Byte PLAY_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool PLAY_AUDIO_MSF (
SCSITaskIdentifier request,
SCSICmdField3Byte STARTING_MSF,
SCSICmdField3Byte ENDING_MSF,
SCSICmdField1Byte CONTROL );
virtual bool PLAY_CD (
SCSITaskIdentifier request,
SCSICmdField3Bit EXPECTED_SECTOR_TYPE,
SCSICmdField1Bit CMSF,
SCSICmdField4Byte STARTING_LOGICAL_BLOCK_ADDRESS,
SCSICmdField4Byte PLAY_LENGTH_IN_BLOCKS,
SCSICmdField1Bit SPEED,
SCSICmdField1Bit PORT2,
SCSICmdField1Bit PORT1,
SCSICmdField1Bit COMPOSITE,
SCSICmdField1Bit AUDIO,
SCSICmdField1Byte CONTROL );
virtual bool READ_10 (
SCSITaskIdentifier request,
IOMemoryDescriptor *dataBuffer,
UInt32 blockSize,
SCSICmdField1Bit DPO,
SCSICmdField1Bit FUA,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField2Byte TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool READ_BUFFER_CAPACITY (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField2Byte ALLOCATION_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool READ_CD (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField3Bit EXPECTED_SECTOR_TYPE,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte STARTING_LOGICAL_BLOCK_ADDRESS,
SCSICmdField3Byte TRANSFER_LENGTH,
SCSICmdField1Bit SYNC,
SCSICmdField2Bit HEADER_CODES,
SCSICmdField1Bit USER_DATA,
SCSICmdField1Bit EDC_ECC,
SCSICmdField2Bit ERROR_FIELD,
SCSICmdField3Bit SUBCHANNEL_SELECTION_BITS,
SCSICmdField1Byte CONTROL );
virtual bool READ_CD_MSF (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField3Bit EXPECTED_SECTOR_TYPE,
SCSICmdField3Byte STARTING_MSF,
SCSICmdField3Byte ENDING_MSF,
SCSICmdField1Bit SYNC,
SCSICmdField2Bit HEADER_CODES,
SCSICmdField1Bit USER_DATA,
SCSICmdField1Bit EDC_ECC,
SCSICmdField2Bit ERROR_FIELD,
SCSICmdField3Bit SUBCHANNEL_SELECTION_BITS,
SCSICmdField1Byte CONTROL );
virtual bool READ_CAPACITY (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField1Bit PMI,
SCSICmdField1Byte CONTROL );
virtual bool READ_DISC_INFORMATION (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField2Byte ALLOCATION_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool READ_DVD_STRUCTURE (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField4Byte ADDRESS,
SCSICmdField1Byte LAYER_NUMBER,
SCSICmdField1Byte FORMAT,
SCSICmdField2Byte ALLOCATION_LENGTH,
SCSICmdField2Bit AGID,
SCSICmdField1Byte CONTROL );
virtual bool READ_FORMAT_CAPACITIES (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField2Byte ALLOCATION_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool READ_HEADER (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit MSF,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField2Byte ALLOCATION_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool READ_MASTER_CUE (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Byte SHEET_NUMBER,
SCSICmdField3Byte ALLOCATION_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool READ_SUB_CHANNEL (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit MSF,
SCSICmdField1Bit SUBQ,
SCSICmdField1Byte SUB_CHANNEL_PARAMETER_LIST,
SCSICmdField1Byte TRACK_NUMBER,
SCSICmdField2Byte ALLOCATION_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool READ_TOC_PMA_ATIP (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit MSF,
SCSICmdField4Bit FORMAT,
SCSICmdField1Byte TRACK_SESSION_NUMBER,
SCSICmdField2Byte ALLOCATION_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool READ_TRACK_INFORMATION (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField2Bit ADDRESS_NUMBER_TYPE,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS_TRACK_SESSION_NUMBER,
SCSICmdField2Byte ALLOCATION_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool REPAIR_TRACK (
SCSITaskIdentifier request,
SCSICmdField2Byte TRACK_NUMBER,
SCSICmdField1Byte CONTROL );
virtual bool REPORT_KEY (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField2Byte ALLOCATION_LENGTH,
SCSICmdField2Bit AGID,
SCSICmdField6Bit KEY_FORMAT,
SCSICmdField1Byte CONTROL );
virtual bool RESERVE_TRACK (
SCSITaskIdentifier request,
SCSICmdField4Byte RESERVATION_SIZE,
SCSICmdField1Byte CONTROL );
virtual bool SCAN (
SCSITaskIdentifier request,
SCSICmdField1Bit DIRECT,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte SCAN_STARTING_ADDRESS_FIELD,
SCSICmdField2Bit TYPE,
SCSICmdField1Byte CONTROL );
virtual bool SEND_CUE_SHEET (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField3Byte CUE_SHEET_SIZE,
SCSICmdField1Byte CONTROL );
virtual bool SEND_DVD_STRUCTURE (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Byte FORMAT,
SCSICmdField2Byte STRUCTURE_DATA_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool SEND_EVENT (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit IMMED,
SCSICmdField2Byte PARAMETER_LIST_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool SEND_KEY (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField2Byte PARAMETER_LIST_LENGTH,
SCSICmdField2Bit AGID,
SCSICmdField6Bit KEY_FORMAT,
SCSICmdField1Byte CONTROL );
virtual bool SEND_OPC_INFORMATION (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit DO_OPC,
SCSICmdField2Byte PARAMETER_LIST_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool SET_CD_SPEED (
SCSITaskIdentifier request,
SCSICmdField2Byte LOGICAL_UNIT_READ_SPEED,
SCSICmdField2Byte LOGICAL_UNIT_WRITE_SPEED,
SCSICmdField1Byte CONTROL );
virtual bool SET_READ_AHEAD (
SCSITaskIdentifier request,
SCSICmdField4Byte TRIGGER_LOGICAL_BLOCK_ADDRESS,
SCSICmdField4Byte READ_AHEAD_LOGICAL_BLOCK_ADDRESS,
SCSICmdField1Byte CONTROL );
virtual bool SET_STREAMING (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField2Byte PARAMETER_LIST_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool START_STOP_UNIT (
SCSITaskIdentifier request,
SCSICmdField1Bit IMMED,
SCSICmdField4Bit POWER_CONDITIONS,
SCSICmdField1Bit LOEJ,
SCSICmdField1Bit START,
SCSICmdField1Byte CONTROL );
virtual bool STOP_PLAY_SCAN (
SCSITaskIdentifier request,
SCSICmdField1Byte CONTROL );
virtual bool SYNCHRONIZE_CACHE (
SCSITaskIdentifier request,
SCSICmdField1Bit IMMED,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField2Byte NUMBER_OF_BLOCKS,
SCSICmdField1Byte CONTROL );
virtual bool WRITE_10 (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
UInt32 blockSize,
SCSICmdField1Bit DPO,
SCSICmdField1Bit FUA,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField2Byte TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool WRITE_AND_VERIFY_10 (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
UInt32 blockSize,
SCSICmdField1Bit DPO,
SCSICmdField1Bit BYT_CHK,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField4Byte TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
OSMetaClassDeclareReservedUsed ( IOSCSIMultimediaCommandsDevice, 1 );
virtual IOReturn ReadTOC ( IOMemoryDescriptor * buffer,
CDTOCFormat format,
UInt8 msf,
UInt32 trackSessionNumber,
UInt16 * actualByteCount );
OSMetaClassDeclareReservedUsed ( IOSCSIMultimediaCommandsDevice, 2 );
virtual IOReturn ReadDiscInfo ( IOMemoryDescriptor * buffer,
UInt16 * actualByteCount );
OSMetaClassDeclareReservedUsed ( IOSCSIMultimediaCommandsDevice, 3 );
virtual IOReturn ReadTrackInfo ( IOMemoryDescriptor * buffer,
UInt32 address,
CDTrackInfoAddressType addressType,
UInt16 * actualByteCount );
OSMetaClassDeclareReservedUsed ( IOSCSIMultimediaCommandsDevice, 4 );
virtual IOReturn PowerDownHandler ( void * refCon,
UInt32 messageType,
IOService * provider,
void * messageArgument,
vm_size_t argSize );
private:
OSMetaClassDeclareReservedUnused ( IOSCSIMultimediaCommandsDevice, 5 );
OSMetaClassDeclareReservedUnused ( IOSCSIMultimediaCommandsDevice, 6 );
OSMetaClassDeclareReservedUnused ( IOSCSIMultimediaCommandsDevice, 7 );
OSMetaClassDeclareReservedUnused ( IOSCSIMultimediaCommandsDevice, 8 );
OSMetaClassDeclareReservedUnused ( IOSCSIMultimediaCommandsDevice, 9 );
OSMetaClassDeclareReservedUnused ( IOSCSIMultimediaCommandsDevice, 10 );
OSMetaClassDeclareReservedUnused ( IOSCSIMultimediaCommandsDevice, 11 );
OSMetaClassDeclareReservedUnused ( IOSCSIMultimediaCommandsDevice, 12 );
OSMetaClassDeclareReservedUnused ( IOSCSIMultimediaCommandsDevice, 13 );
OSMetaClassDeclareReservedUnused ( IOSCSIMultimediaCommandsDevice, 14 );
OSMetaClassDeclareReservedUnused ( IOSCSIMultimediaCommandsDevice, 15 );
OSMetaClassDeclareReservedUnused ( IOSCSIMultimediaCommandsDevice, 16 );
};
#endif
#endif