|
|
1.1 root 1: /*
2: * Copyright (c) 1998-2000 Apple Computer, Inc. All rights reserved.
3: *
4: * @APPLE_LICENSE_HEADER_START@
5: *
6: * The contents of this file constitute Original Code as defined in and
7: * are subject to the Apple Public Source License Version 1.1 (the
8: * "License"). You may not use this file except in compliance with the
9: * License. Please obtain a copy of the License at
10: * http://www.apple.com/publicsource and read it before using this file.
11: *
12: * This Original Code and all software distributed under the License are
13: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
14: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
15: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
16: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
17: * License for the specific language governing rights and limitations
18: * under the License.
19: *
20: * @APPLE_LICENSE_HEADER_END@
21: */
22: /*
23: * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
24: *
25: * IOATAPICDDriveNub.h
26: *
27: * This subclass implements a relay to a protocol and device-specific
28: * provider.
29: *
30: * HISTORY
31: * 2-Sep-1999 Joe Liu (jliu) created.
32: */
33:
34: #ifndef _IOATACDDRIVENUB_H
35: #define _IOATACDDRIVENUB_H
36:
37: #include <IOKit/IOTypes.h>
38: #include <IOKit/storage/IOCDDriveNub.h>
39:
40: class IOATAPICDDrive;
41:
42: class IOATAPICDDriveNub : public IOCDDriveNub
43: {
44: OSDeclareDefaultStructors(IOATAPICDDriveNub)
45:
46: protected:
47: IOATAPICDDrive * _provider;
48:
49: public:
50: /*
51: * Overrides from IOService.
52: */
53: virtual bool attach(IOService * provider);
54: virtual void detach(IOService * provider);
55:
56: /*
57: * Mandatory overrides from IOCDDriveNub.
58: */
59: virtual IOReturn doAsyncReadWrite(IOMemoryDescriptor * buffer,
60: UInt32 block,
61: UInt32 nblks,
62: gdCompletionFunction action,
63: IOService * target,
64: void * param);
65: virtual IOReturn doSyncReadWrite(IOMemoryDescriptor *buffer,
66: UInt32 block,UInt32 nblks);
67:
68: /*
69: * APIs used by the IOHDDrive portion of IOCDDriveNub.
70: */
71: virtual IOReturn doEjectMedia();
72: virtual IOReturn doLockUnlockMedia(bool doLock);
73: virtual IOReturn executeCdb(struct cdbParams *params);
74: virtual char * getVendorString();
75: virtual char * getProductString();
76: virtual char * getRevisionString();
77: virtual char * getAdditionalDeviceInfoString();
78: virtual IOReturn reportBlockSize(UInt64 * blockSize);
79: virtual IOReturn reportEjectability(bool * isEjectable);
80: virtual IOReturn reportLockability(bool * isLockable);
81: virtual IOReturn reportMediaState(bool * mediaPresent, bool * changed);
82: virtual IOReturn reportPollRequirements(bool * pollIsRequired,
83: bool * pollIsExpensive);
84: virtual IOReturn reportMaxReadTransfer (UInt64 blockSize,UInt64 * max);
85: virtual IOReturn reportMaxValidBlock(UInt64 * maxBlock);
86: virtual IOReturn reportRemovability(bool * isRemovable);
87:
88: /* ------------------------------------------------*/
89: /* APIs that affect the entire media in the drive, */
90: /* exported eventually by IOCDMedia: */
91: /* ------------------------------------------------*/
92:
93: virtual IOReturn audioPause(bool pause);
94: virtual IOReturn audioScan(positioningType addressType,
95: cdAddress address,
96: bool reverse);
97: virtual IOReturn readAudioData(positioningType addressType,
98: cdAddress address,
99: UInt8 blockCount,
100: UInt8 * buffer);
101: virtual IOReturn readAudioSubcodes(positioningType addressType,
102: cdAddress address,
103: UInt8 blockCount,
104: UInt8 * buffer);
105: virtual IOReturn readAudioWithQSubcode(positioningType addressType,
106: cdAddress address,
107: UInt8 blockCount,
108: UInt8 * buffer);
109: virtual IOReturn readAudioWithAllSubcodes(positioningType addressType,
110: cdAddress address,
111: UInt8 blockCount,
112: UInt8 * buffer);
113: virtual IOReturn readHeader(UInt32 blockAddress,
114: struct headerInfo * buffer);
115: virtual IOReturn readISRC(UInt32 track, UInt8 * buffer, bool * found);
116: virtual IOReturn readMCN(UInt8 * buffer,bool * found);
117: virtual IOReturn readQSubcodes(struct qSubcodeTocInfo * buffer,
118: UInt32 bufSize);
119: virtual IOReturn readSubcodeBuffer(UInt8 * buffer,
120: bool purge,
121: UInt32 entryCount);
122: virtual IOReturn readTheQSubcode(struct qSubcode * buffer);
123: virtual IOReturn readTOC(struct rawToc * buffer,
124: UInt32 length,
125: tocFormat format);
126: virtual IOReturn setAudioStopAddress(positioningType addressType,
127: cdAddress address);
128:
129: /* ---------------------------------------------------*/
130: /* APIs exported eventually by IOCDAudioNub: */
131: /* ---------------------------------------------------*/
132:
133: virtual IOReturn audioPlay(positioningType addressType,
134: cdAddress address,
135: audioPlayMode mode);
136: virtual IOReturn audioTrackSearch(positioningType addressType,
137: cdAddress address,
138: bool startPlay,
139: audioPlayMode mode);
140: virtual IOReturn getAudioStatus(struct audioStatus * status);
141: virtual IOReturn readAudioVolume(UInt8 * leftVolume,
142: UInt8 * rightVolume);
143: virtual IOReturn setVolume(UInt8 leftVolume, UInt8 rightVolume);
144: };
145:
146: #endif /* !_IOATAPICDDRIVENUB_H */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.