Chameleon

Chameleon Svn Source Tree

Root/branches/ErmaC/Modules/i386/include/IOKit/storage/IOBDMedia.h

1/*
2 * Copyright (c) 2006-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 IOBDMedia
26 * @abstract
27 * This header contains the IOBDMedia class definition.
28 */
29
30#ifndef _IOBDMEDIA_H
31#define _IOBDMEDIA_H
32
33/*!
34 * @defined kIOBDMediaClass
35 * @abstract
36 * kIOBDMediaClass is the name of the IOBDMedia class.
37 * @discussion
38 * kIOBDMediaClass is the name of the IOBDMedia class.
39 */
40
41#define kIOBDMediaClass "IOBDMedia"
42
43/*!
44 * @defined kIOBDMediaTypeKey
45 * @abstract
46 * kIOBDMediaTypeKey is a property of IOBDMedia objects. It has an OSString
47 * value.
48 * @discussion
49 * The kIOBDMediaTypeKey property identifies the BD media type (BD-ROM, BD-R,
50 * BD-RE, etc). See the kIOBDMediaType contants for possible values.
51 */
52
53#define kIOBDMediaTypeKey "Type"
54
55/*!
56 * @defined kIOBDMediaTypeROM
57 * The kIOBDMediaTypeKey constant for BD-ROM media.
58 */
59
60#define kIOBDMediaTypeROM "BD-ROM"
61
62/*!
63 * @defined kIOBDMediaTypeR
64 * The kIOBDMediaTypeKey constant for BD-R media.
65 */
66
67#define kIOBDMediaTypeR "BD-R"
68
69/*!
70 * @defined kIOBDMediaTypeRE
71 * The kIOBDMediaTypeKey constant for BD-RE media.
72 */
73
74#define kIOBDMediaTypeRE "BD-RE"
75
76#ifdef KERNEL
77#ifdef __cplusplus
78
79/*
80 * Kernel
81 */
82
83#include <IOKit/storage/IOBDBlockStorageDriver.h>
84#include <IOKit/storage/IOMedia.h>
85
86/*!
87 * @class IOBDMedia
88 * @abstract
89 * The IOBDMedia class is a random-access disk device abstraction for BDs.
90 * @discussion
91 * The IOBDMedia class is a random-access disk device abstraction for BDs.
92 */
93
94class IOBDMedia : public IOMedia
95{
96 OSDeclareDefaultStructors(IOBDMedia)
97
98protected:
99
100 struct ExpansionData { /* */ };
101 ExpansionData * _expansionData;
102
103public:
104
105 /*
106 * Obtain this object's provider. We override the superclass's method to
107 * return a more specific subclass of IOService -- IOBDBlockStorageDriver.
108 * This method serves simply as a convenience to subclass developers.
109 */
110
111 virtual IOBDBlockStorageDriver * getProvider() const;
112
113 /*
114 * Compare the properties in the supplied table to this object's properties.
115 */
116
117 virtual bool matchPropertyTable(OSDictionary * table, SInt32 * score);
118
119 /*!
120 * @function reportKey
121 * @discussion
122 * Issue an MMC REPORT KEY command.
123 * @param buffer
124 * Buffer for the data transfer. The size of the buffer implies the size of
125 * the data transfer.
126 * @param keyClass
127 * As documented by MMC.
128 * @param address
129 * As documented by MMC.
130 * @param grantID
131 * As documented by MMC.
132 * @param format
133 * As documented by MMC.
134 * @result
135 * Returns the status of the data transfer.
136 */
137
138 virtual IOReturn reportKey( IOMemoryDescriptor * buffer,
139 UInt8 keyClass,
140 UInt32 address,
141 UInt8 grantID,
142 UInt8 format );
143
144 /*!
145 * @function sendKey
146 * @discussion
147 * Issue an MMC SEND KEY command.
148 * @param buffer
149 * Buffer for the data transfer. The size of the buffer implies the size of
150 * the data transfer.
151 * @param keyClass
152 * As documented by MMC.
153 * @param grantID
154 * As documented by MMC.
155 * @param format
156 * As documented by MMC.
157 * @result
158 * Returns the status of the data transfer.
159 */
160
161 virtual IOReturn sendKey( IOMemoryDescriptor * buffer,
162 UInt8 keyClass,
163 UInt8 grantID,
164 UInt8 format );
165
166 /*!
167 * @function readStructure
168 * @discussion
169 * Issue an MMC READ DISC STRUCTURE command.
170 * @param buffer
171 * Buffer for the data transfer. The size of the buffer implies the size of
172 * the data transfer.
173 * @param format
174 * As documented by MMC.
175 * @param address
176 * As documented by MMC.
177 * @param layer
178 * As documented by MMC.
179 * @param grantID
180 * As documented by MMC.
181 * @result
182 * Returns the status of the data transfer.
183 */
184
185 virtual IOReturn readStructure( IOMemoryDescriptor * buffer,
186 UInt8 format,
187 UInt32 address,
188 UInt8 layer,
189 UInt8 grantID );
190
191 /*!
192 * @function getSpeed
193 * @discussion
194 * Get the current speed used for data transfers.
195 * @param kilobytesPerSecond
196 * Returns the current speed used for data transfers, in kB/s.
197 *
198 * kBDSpeedMin specifies the minimum speed for all BD media (1X).
199 * kBDSpeedMax specifies the maximum speed supported in hardware.
200 * @result
201 * Returns the status of the operation.
202 */
203
204 virtual IOReturn getSpeed(UInt16 * kilobytesPerSecond);
205
206 /*!
207 * @function setSpeed
208 * @discussion
209 * Set the speed to be used for data transfers.
210 * @param kilobytesPerSecond
211 * Speed to be used for data transfers, in kB/s.
212 *
213 * kBDSpeedMin specifies the minimum speed for all BD media (1X).
214 * kBDSpeedMax specifies the maximum speed supported in hardware.
215 * @result
216 * Returns the status of the operation.
217 */
218
219 virtual IOReturn setSpeed(UInt16 kilobytesPerSecond);
220
221 /*!
222 * @function readDiscInfo
223 * @discussion
224 * Issue an MMC READ DISC INFORMATION command.
225 * @param buffer
226 * Buffer for the data transfer. The size of the buffer implies the size of
227 * the data transfer.
228 * @param type
229 * Reserved for future use. Set to zero.
230 * @param actualByteCount
231 * Returns the actual number of bytes transferred in the data transfer.
232 * @result
233 * Returns the status of the data transfer.
234 */
235
236 virtual IOReturn readDiscInfo( IOMemoryDescriptor * buffer,
237 UInt8 type,
238 UInt16 * actualByteCount );
239
240 /*!
241 * @function readTrackInfo
242 * @discussion
243 * Issue an MMC READ TRACK INFORMATION command.
244 * @param buffer
245 * Buffer for the data transfer. The size of the buffer implies the size of
246 * the data transfer.
247 * @param address
248 * As documented by MMC.
249 * @param addressType
250 * As documented by MMC.
251 * @param open
252 * Reserved for future use. Set to zero.
253 * @param actualByteCount
254 * Returns the actual number of bytes transferred in the data transfer.
255 * @result
256 * Returns the status of the data transfer.
257 */
258
259 virtual IOReturn readTrackInfo( IOMemoryDescriptor * buffer,
260 UInt32 address,
261 UInt8 addressType,
262 UInt8 open,
263 UInt16 * actualByteCount );
264
265 /*!
266 * @function splitTrack
267 * @discussion
268 * Issue an MMC RESERVE TRACK command with the ARSV bit.
269 * @param address
270 * As documented by MMC.
271 * @result
272 * Returns the status of the operation.
273 */
274
275 virtual IOReturn splitTrack(UInt32 address);
276
277 OSMetaClassDeclareReservedUnused(IOBDMedia, 0);
278 OSMetaClassDeclareReservedUnused(IOBDMedia, 1);
279 OSMetaClassDeclareReservedUnused(IOBDMedia, 2);
280 OSMetaClassDeclareReservedUnused(IOBDMedia, 3);
281 OSMetaClassDeclareReservedUnused(IOBDMedia, 4);
282 OSMetaClassDeclareReservedUnused(IOBDMedia, 5);
283 OSMetaClassDeclareReservedUnused(IOBDMedia, 6);
284 OSMetaClassDeclareReservedUnused(IOBDMedia, 7);
285 OSMetaClassDeclareReservedUnused(IOBDMedia, 8);
286 OSMetaClassDeclareReservedUnused(IOBDMedia, 9);
287 OSMetaClassDeclareReservedUnused(IOBDMedia, 10);
288 OSMetaClassDeclareReservedUnused(IOBDMedia, 11);
289 OSMetaClassDeclareReservedUnused(IOBDMedia, 12);
290 OSMetaClassDeclareReservedUnused(IOBDMedia, 13);
291 OSMetaClassDeclareReservedUnused(IOBDMedia, 14);
292 OSMetaClassDeclareReservedUnused(IOBDMedia, 15);
293};
294
295#endif /* __cplusplus */
296#endif /* KERNEL */
297#endif /* !_IOBDMEDIA_H */
298

Archive Download this file

Revision: 1621