IOCDBlockStorageDriver.h [plain text]
#ifndef _IOCDBLOCKSTORAGEDRIVER_H
#define _IOCDBLOCKSTORAGEDRIVER_H
#include <IOKit/IOTypes.h>
#include <IOKit/storage/IOCDBlockStorageDevice.h>
#include <IOKit/storage/IOCDTypes.h>
#include <IOKit/storage/IOBlockStorageDriver.h>
#define kIOCDBlockStorageDriverClass "IOCDBlockStorageDriver"
class IOCDAudioControl;
class IOCDMedia;
class IOCDBlockStorageDevice;
class IOCDBlockStorageDriver : public IOBlockStorageDriver {
OSDeclareDefaultStructors(IOCDBlockStorageDriver)
public:
static const UInt64 kBlockSizeCD = 2352;
static const UInt8 kBlockTypeCD = 0x01;
virtual bool init(OSDictionary * properties);
virtual IOReturn ejectMedia(void);
virtual void executeRequest(UInt64 byteStart,
IOMemoryDescriptor *buffer,
IOStorageCompletion completion,
Context *context);
virtual const char * getDeviceTypeName(void);
virtual IOMedia * instantiateDesiredMediaObject(void);
virtual IOMedia * instantiateMediaObject(UInt64 base,UInt64 byteSize,
UInt32 blockSize,char *mediaName);
virtual UInt32 getMediaType(void);
virtual CDTOC * getTOC(void);
virtual void readCD(IOService *client,
UInt64 byteStart,
IOMemoryDescriptor *buffer,
CDSectorArea sectorArea,
CDSectorType sectorType,
IOStorageCompletion completion);
virtual IOReturn readISRC(UInt8 track,CDISRC isrc);
virtual IOReturn readMCN(CDMCN mcn);
virtual IOReturn audioPause(bool pause);
virtual IOReturn audioPlay(CDMSF timeStart,CDMSF timeStop);
virtual IOReturn audioScan(CDMSF timeStart,bool reverse);
virtual IOReturn audioStop();
virtual IOReturn getAudioStatus(CDAudioStatus *status);
virtual IOReturn getAudioVolume(UInt8 *leftVolume,UInt8 *rightVolume);
virtual IOReturn setAudioVolume(UInt8 leftVolume,UInt8 rightVolume);
virtual IOCDBlockStorageDevice * getProvider() const;
protected:
virtual IOReturn acceptNewMedia(void);
virtual IOReturn decommissionMedia(bool forcible);
virtual IOReturn cacheTocInfo(void);
virtual UInt64 getMediaBlockSize(CDSectorArea area,CDSectorType type);
virtual void prepareRequest(UInt64 byteStart,
IOMemoryDescriptor *buffer,
CDSectorArea sectorArea,
CDSectorType sectorType,
IOStorageCompletion completion);
struct ExpansionData { };
ExpansionData * _expansionData;
IOCDAudioControl * _acNub;
CDTOC * _toc;
UInt32 _tocSize;
OSMetaClassDeclareReservedUnused(IOCDBlockStorageDriver, 0);
OSMetaClassDeclareReservedUnused(IOCDBlockStorageDriver, 1);
OSMetaClassDeclareReservedUnused(IOCDBlockStorageDriver, 2);
OSMetaClassDeclareReservedUnused(IOCDBlockStorageDriver, 3);
OSMetaClassDeclareReservedUnused(IOCDBlockStorageDriver, 4);
OSMetaClassDeclareReservedUnused(IOCDBlockStorageDriver, 5);
OSMetaClassDeclareReservedUnused(IOCDBlockStorageDriver, 6);
OSMetaClassDeclareReservedUnused(IOCDBlockStorageDriver, 7);
OSMetaClassDeclareReservedUnused(IOCDBlockStorageDriver, 8);
OSMetaClassDeclareReservedUnused(IOCDBlockStorageDriver, 9);
OSMetaClassDeclareReservedUnused(IOCDBlockStorageDriver, 10);
OSMetaClassDeclareReservedUnused(IOCDBlockStorageDriver, 11);
OSMetaClassDeclareReservedUnused(IOCDBlockStorageDriver, 12);
OSMetaClassDeclareReservedUnused(IOCDBlockStorageDriver, 13);
OSMetaClassDeclareReservedUnused(IOCDBlockStorageDriver, 14);
OSMetaClassDeclareReservedUnused(IOCDBlockStorageDriver, 15);
};
#endif