Chameleon

Chameleon Svn Source Tree

Root/trunk/i386/include/IOKit/storage/IOCDBlockStorageDevice.h

1/*
2 * Copyright (c) 1998-2009 Apple Inc. All rights reserved.
3 *
4 * @APPLE_LICENSE_HEADER_START@
5 *
6 * This file contains Original Code and/or Modifications of Original Code
7 * as defined in and that are subject to the Apple Public Source License
8 * Version 2.0 (the 'License'). You may not use this file except in
9 * compliance with the License. Please obtain a copy of the License at
10 * http://www.opensource.apple.com/apsl/ and read it before using this
11 * file.
12 *
13 * The Original Code and all software distributed under the License are
14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
18 * Please see the License for the specific language governing rights and
19 * limitations under the License.
20 *
21 * @APPLE_LICENSE_HEADER_END@
22 */
23
24/*!
25 * @header IOCDBlockStorageDevice
26 * @abstract
27 * This header contains the IOCDBlockStorageDevice class definition.
28 */
29
30#ifndef _IOCDBLOCKSTORAGEDEVICE_H
31#define _IOCDBLOCKSTORAGEDEVICE_H
32
33#include <IOKit/storage/IOCDTypes.h>
34
35/*!
36 * @defined kIOCDBlockStorageDeviceClass
37 * @abstract
38 * kIOCDBlockStorageDeviceClass is the name of the IOCDBlockStorageDevice class.
39 * @discussion
40 * kIOCDBlockStorageDeviceClass is the name of the IOCDBlockStorageDevice class.
41 */
42
43#define kIOCDBlockStorageDeviceClass "IOCDBlockStorageDevice"
44
45#ifdef KERNEL
46#ifdef __cplusplus
47
48/*
49 * Kernel
50 */
51
52#include <IOKit/storage/IOBlockStorageDevice.h>
53
54/* Property used for matching, so the generic driver gets the nub it wants. */
55#definekIOBlockStorageDeviceTypeCDROM"CDROM"
56
57/*!
58 * @class
59 * IOCDBlockStorageDevice : public IOBlockStorageDevice
60 * @abstract
61 * The IOCDBlockStorageDevice class is a generic CD block storage device
62 * abstraction.
63 * @discussion
64 * This class is the protocol for generic CD functionality, independent of
65 * the physical connection protocol (e.g. SCSI, ATA, USB).
66 *
67 * The APIs are the union of CD (block storage) data APIs and all
68 * necessary low-level CD APIs.
69 *
70 * A subclass implements relay methods that translate our requests into
71 * calls to a protocol- and device-specific provider.
72 */
73
74class IOCDBlockStorageDevice : public IOBlockStorageDevice {
75
76 OSDeclareAbstractStructors(IOCDBlockStorageDevice)
77
78protected:
79
80 struct ExpansionData { /* */ };
81 ExpansionData * _expansionData;
82
83public:
84
85 /* Overrides from IORegistryEntry */
86
87 virtual boolinit(OSDictionary * properties);
88
89 /*-----------------------------------------*/
90 /* CD APIs */
91 /*-----------------------------------------*/
92
93 virtual IOReturndoAsyncReadCD(IOMemoryDescriptor *buffer,
94 UInt32 block,UInt32 nblks,
95 CDSectorArea sectorArea,
96 CDSectorType sectorType,
97 IOStorageCompletion completion) = 0;
98 virtual UInt32getMediaType(void)= 0;
99 virtual IOReturnreadISRC(UInt8 track,CDISRC isrc)= 0;
100 virtual IOReturnreadMCN(CDMCN mcn)= 0;
101 virtual IOReturnreadTOC(IOMemoryDescriptor *buffer) = 0;
102
103#ifndef __LP64__
104 /*-----------------------------------------*/
105 /* APIs exported by IOCDAudioControl */
106 /*-----------------------------------------*/
107
108 virtual IOReturnaudioPause(bool pause)__attribute__ ((deprecated));
109 virtual IOReturnaudioPlay(CDMSF timeStart,CDMSF timeStop)__attribute__ ((deprecated));
110 virtual IOReturnaudioScan(CDMSF timeStart,bool reverse)__attribute__ ((deprecated));
111 virtual IOReturnaudioStop()__attribute__ ((deprecated));
112 virtual IOReturngetAudioStatus(CDAudioStatus *status)__attribute__ ((deprecated));
113 virtual IOReturngetAudioVolume(UInt8 *leftVolume,UInt8 *rightVolume)__attribute__ ((deprecated));
114 virtual IOReturnsetAudioVolume(UInt8 leftVolume,UInt8 rightVolume)__attribute__ ((deprecated));
115#endif /* !__LP64__ */
116
117 /*-----------------------------------------*/
118 /* CD APIs */
119 /*-----------------------------------------*/
120
121#ifdef __LP64__
122 virtual IOReturngetSpeed(UInt16 * kilobytesPerSecond)= 0;
123
124 virtual IOReturnsetSpeed(UInt16 kilobytesPerSecond)= 0;
125
126 virtual IOReturnreadTOC(IOMemoryDescriptor *buffer,CDTOCFormat format,
127 UInt8 msf,UInt8 trackSessionNumber,
128 UInt16 *actualByteCount)= 0;
129
130 virtual IOReturnreadDiscInfo(IOMemoryDescriptor *buffer,
131 UInt16 *actualByteCount)= 0;
132
133 virtual IOReturnreadTrackInfo(IOMemoryDescriptor *buffer,UInt32 address,
134 CDTrackInfoAddressType addressType,
135 UInt16 *actualByteCount)= 0;
136#else /* !__LP64__ */
137 virtual IOReturngetSpeed(UInt16 * kilobytesPerSecond); /* 10.1.0 */
138
139 virtual IOReturnsetSpeed(UInt16 kilobytesPerSecond); /* 10.1.0 */
140
141 virtual IOReturnreadTOC(IOMemoryDescriptor *buffer,CDTOCFormat format,
142 UInt8 msf,UInt8 trackSessionNumber,
143 UInt16 *actualByteCount); /* 10.1.3 */
144
145 virtual IOReturnreadDiscInfo(IOMemoryDescriptor *buffer,
146 UInt16 *actualByteCount); /* 10.1.3 */
147
148 virtual IOReturnreadTrackInfo(IOMemoryDescriptor *buffer,UInt32 address,
149 CDTrackInfoAddressType addressType,
150 UInt16 *actualByteCount); /* 10.1.3 */
151#endif /* !__LP64__ */
152
153#ifdef __LP64__
154 OSMetaClassDeclareReservedUnused(IOCDBlockStorageDevice, 0);
155 OSMetaClassDeclareReservedUnused(IOCDBlockStorageDevice, 1);
156 OSMetaClassDeclareReservedUnused(IOCDBlockStorageDevice, 2);
157 OSMetaClassDeclareReservedUnused(IOCDBlockStorageDevice, 3);
158 OSMetaClassDeclareReservedUnused(IOCDBlockStorageDevice, 4);
159#else /* !__LP64__ */
160 OSMetaClassDeclareReservedUsed(IOCDBlockStorageDevice, 0);
161 OSMetaClassDeclareReservedUsed(IOCDBlockStorageDevice, 1);
162 OSMetaClassDeclareReservedUsed(IOCDBlockStorageDevice, 2);
163 OSMetaClassDeclareReservedUsed(IOCDBlockStorageDevice, 3);
164 OSMetaClassDeclareReservedUsed(IOCDBlockStorageDevice, 4);
165#endif /* !__LP64__ */
166 OSMetaClassDeclareReservedUnused(IOCDBlockStorageDevice, 5);
167 OSMetaClassDeclareReservedUnused(IOCDBlockStorageDevice, 6);
168 OSMetaClassDeclareReservedUnused(IOCDBlockStorageDevice, 7);
169 OSMetaClassDeclareReservedUnused(IOCDBlockStorageDevice, 8);
170 OSMetaClassDeclareReservedUnused(IOCDBlockStorageDevice, 9);
171 OSMetaClassDeclareReservedUnused(IOCDBlockStorageDevice, 10);
172 OSMetaClassDeclareReservedUnused(IOCDBlockStorageDevice, 11);
173 OSMetaClassDeclareReservedUnused(IOCDBlockStorageDevice, 12);
174 OSMetaClassDeclareReservedUnused(IOCDBlockStorageDevice, 13);
175 OSMetaClassDeclareReservedUnused(IOCDBlockStorageDevice, 14);
176 OSMetaClassDeclareReservedUnused(IOCDBlockStorageDevice, 15);
177};
178
179#endif /* __cplusplus */
180#endif /* KERNEL */
181#endif /* !_IOCDBLOCKSTORAGEDEVICE_H */
182

Archive Download this file

Revision: 881