MMCDeviceUserClientClass.h [plain text]
#ifndef __MMC_DEVICE_USER_CLIENT_CLASS_H__
#define __MMC_DEVICE_USER_CLIENT_CLASS_H__
#include <IOKit/IOCFPlugIn.h>
#include "SCSITaskLib.h"
#include "SCSITaskLibPriv.h"
#include "SCSITaskIUnknown.h"
class MMCDeviceUserClientClass : public SCSITaskIUnknown
{
public:
MMCDeviceUserClientClass ( void );
virtual ~MMCDeviceUserClientClass ( void );
static IOCFPlugInInterface ** alloc ( void );
protected:
static IOCFPlugInInterface sIOCFPlugInInterface;
static MMCDeviceInterface sMMCDeviceInterface;
struct InterfaceMap fMMCDeviceInterfaceMap;
io_service_t fService;
io_connect_t fConnection;
static inline MMCDeviceUserClientClass * getThis ( void * self )
{ return ( MMCDeviceUserClientClass * ) ( ( InterfaceMap * ) self )->obj; };
virtual HRESULT QueryInterface ( REFIID iid, void ** ppv );
virtual IOReturn Probe ( CFDictionaryRef propertyTable,
io_service_t service,
SInt32 * order );
virtual IOReturn Start ( CFDictionaryRef propertyTable,
io_service_t service );
virtual IOReturn Stop ( void );
virtual IOReturn Inquiry ( SCSICmd_INQUIRY_StandardData * inquiryBuffer,
SCSICmdField1Byte bufferSize,
SCSITaskStatus * taskStatus,
SCSI_Sense_Data * senseDataBuffer );
virtual IOReturn TestUnitReady ( SCSITaskStatus * taskStatus,
SCSI_Sense_Data * senseDataBuffer );
virtual IOReturn GetPerformance ( SCSICmdField5Bit DATA_TYPE,
SCSICmdField4Byte STARTING_LBA,
SCSICmdField2Byte MAXIMUM_NUMBER_OF_DESCRIPTORS,
SCSICmdField1Byte TYPE,
void * buffer,
SCSICmdField2Byte bufferSize,
SCSITaskStatus * taskStatus,
SCSI_Sense_Data * senseDataBuffer );
virtual IOReturn GetConfiguration ( SCSICmdField1Byte RT,
SCSICmdField2Byte STARTING_FEATURE_NUMBER,
void * buffer,
SCSICmdField2Byte bufferSize,
SCSITaskStatus * taskStatus,
SCSI_Sense_Data * senseDataBuffer );
virtual IOReturn ModeSense10 ( SCSICmdField1Bit LLBAA,
SCSICmdField1Bit DBD,
SCSICmdField2Bit PC,
SCSICmdField6Bit PAGE_CODE,
void * buffer,
SCSICmdField2Byte bufferSize,
SCSITaskStatus * taskStatus,
SCSI_Sense_Data * senseDataBuffer );
virtual IOReturn SetWriteParametersModePage ( void * buffer,
SCSICmdField2Byte bufferSize,
SCSITaskStatus * taskStatus,
SCSI_Sense_Data * senseDataBuffer );
virtual IOReturn GetTrayState ( UInt8 * trayState );
virtual IOReturn SetTrayState ( UInt8 trayState );
virtual IOReturn ReadTableOfContents ( SCSICmdField1Bit MSF,
SCSICmdField4Bit FORMAT,
SCSICmdField1Byte TRACK_SESSION_NUMBER,
void * buffer,
SCSICmdField2Byte bufferSize,
SCSITaskStatus * taskStatus,
SCSI_Sense_Data * senseDataBuffer );
virtual IOReturn ReadDiscInformation ( void * buffer,
SCSICmdField2Byte bufferSize,
SCSITaskStatus * taskStatus,
SCSI_Sense_Data * senseDataBuffer );
virtual IOReturn ReadTrackInformation ( SCSICmdField2Bit ADDRESS_NUMBER_TYPE,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS_TRACK_SESSION_NUMBER,
void * buffer,
SCSICmdField2Byte bufferSize,
SCSITaskStatus * taskStatus,
SCSI_Sense_Data * senseDataBuffer );
virtual IOReturn ReadDVDStructure ( SCSICmdField4Byte ADDRESS,
SCSICmdField1Byte LAYER_NUMBER,
SCSICmdField1Byte FORMAT,
void * buffer,
SCSICmdField2Byte bufferSize,
SCSITaskStatus * taskStatus,
SCSI_Sense_Data * senseDataBuffer );
virtual IOReturn SetCDSpeed ( SCSICmdField2Byte LOGICAL_UNIT_READ_SPEED,
SCSICmdField2Byte LOGICAL_UNIT_WRITE_SPEED,
SCSITaskStatus * taskStatus,
SCSI_Sense_Data * senseDataBuffer );
virtual IOReturn ReadFormatCapacities ( void * buffer,
SCSICmdField2Byte bufferSize,
SCSITaskStatus * taskStatus,
SCSI_Sense_Data * senseDataBuffer );
virtual SCSITaskDeviceInterface ** GetSCSITaskDeviceInterface ( void );
static IOReturn sProbe ( void * self,
CFDictionaryRef propertyTable,
io_service_t service,
SInt32 * order );
static IOReturn sStart ( void * self,
CFDictionaryRef propertyTable,
io_service_t service );
static IOReturn sStop ( void * self );
static IOReturn sInquiry ( void * self,
SCSICmd_INQUIRY_StandardData * inquiryBuffer,
UInt32 inqBufferSize,
SCSITaskStatus * taskStatus,
SCSI_Sense_Data * senseDataBuffer );
static IOReturn sTestUnitReady ( void * self,
SCSITaskStatus * taskStatus,
SCSI_Sense_Data * senseDataBuffer );
static IOReturn sGetPerformance ( void * self,
SCSICmdField2Bit TOLERANCE,
SCSICmdField1Bit WRITE,
SCSICmdField2Bit EXCEPT,
SCSICmdField4Byte STARTING_LBA,
SCSICmdField2Byte MAXIMUM_NUMBER_OF_DESCRIPTORS,
void * buffer,
SCSICmdField2Byte bufferSize,
SCSITaskStatus * taskStatus,
SCSI_Sense_Data * senseDataBuffer );
static IOReturn sGetConfiguration ( void * self,
SCSICmdField1Byte RT,
SCSICmdField2Byte STARTING_FEATURE_NUMBER,
void * buffer,
SCSICmdField2Byte bufferSize,
SCSITaskStatus * taskStatus,
SCSI_Sense_Data * senseDataBuffer );
static IOReturn sModeSense10 ( void * self,
SCSICmdField1Bit LLBAA,
SCSICmdField1Bit DBD,
SCSICmdField2Bit PC,
SCSICmdField6Bit PAGE_CODE,
void * buffer,
SCSICmdField2Byte bufferSize,
SCSITaskStatus * taskStatus,
SCSI_Sense_Data * senseDataBuffer );
static IOReturn sSetWriteParametersModePage ( void * self,
void * buffer,
SCSICmdField1Byte bufferSize,
SCSITaskStatus * taskStatus,
SCSI_Sense_Data * senseDataBuffer );
static IOReturn sGetTrayState ( void * self, UInt8 * trayState );
static IOReturn sSetTrayState ( void * self, UInt8 trayState );
static IOReturn sReadTableOfContents ( void * self,
SCSICmdField1Bit MSF,
SCSICmdField4Bit FORMAT,
SCSICmdField1Byte TRACK_SESSION_NUMBER,
void * buffer,
SCSICmdField2Byte bufferSize,
SCSITaskStatus * taskStatus,
SCSI_Sense_Data * senseDataBuffer );
static IOReturn sReadDiscInformation ( void * self,
void * buffer,
SCSICmdField2Byte bufferSize,
SCSITaskStatus * taskStatus,
SCSI_Sense_Data * senseDataBuffer );
static IOReturn sReadTrackInformation ( void * self,
SCSICmdField2Bit ADDRESS_NUMBER_TYPE,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS_TRACK_SESSION_NUMBER,
void * buffer,
SCSICmdField2Byte bufferSize,
SCSITaskStatus * taskStatus,
SCSI_Sense_Data * senseDataBuffer );
static IOReturn sReadDVDStructure ( void * self,
SCSICmdField4Byte ADDRESS,
SCSICmdField1Byte LAYER_NUMBER,
SCSICmdField1Byte FORMAT,
void * buffer,
SCSICmdField2Byte bufferSize,
SCSITaskStatus * taskStatus,
SCSI_Sense_Data * senseDataBuffer );
static SCSITaskDeviceInterface ** sGetSCSITaskDeviceInterface ( void * self );
static IOReturn sGetPerformanceV2 ( void * self,
SCSICmdField5Bit DATA_TYPE,
SCSICmdField4Byte STARTING_LBA,
SCSICmdField2Byte MAXIMUM_NUMBER_OF_DESCRIPTORS,
SCSICmdField1Byte TYPE,
void * buffer,
SCSICmdField2Byte bufferSize,
SCSITaskStatus * taskStatus,
SCSI_Sense_Data * senseDataBuffer );
static IOReturn sSetCDSpeed ( void * self,
SCSICmdField2Byte LOGICAL_UNIT_READ_SPEED,
SCSICmdField2Byte LOGICAL_UNIT_WRITE_SPEED,
SCSITaskStatus * taskStatus,
SCSI_Sense_Data * senseDataBuffer );
static IOReturn sReadFormatCapacities ( void * self,
void * buffer,
SCSICmdField2Byte bufferSize,
SCSITaskStatus * taskStatus,
SCSI_Sense_Data * senseDataBuffer );
public:
inline bool IsParameterValid (
SCSICmdField1Byte param,
SCSICmdField1Byte mask );
inline bool IsParameterValid (
SCSICmdField2Byte param,
SCSICmdField2Byte mask );
inline bool IsParameterValid (
SCSICmdField4Byte param,
SCSICmdField4Byte mask );
private:
MMCDeviceUserClientClass ( MMCDeviceUserClientClass &src );
void operator = ( MMCDeviceUserClientClass &src );
};
#endif