|
|
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: /* IOCDAudioNub.h created by rick on Mon 22-Mar-1999 ! 23: * ! 24: * This class is the protocol for CD Audio control functionality, independent of ! 25: * the physical connection protocol (e.g. SCSI, ATA, USB). ! 26: * ! 27: * Any methods that deal with audio play mode and/or volume are here. By having ! 28: * clients call through this nub, we can implement a local communication with ! 29: * the audio subsystem as well as the CD device. ! 30: * ! 31: * A subclass implements relay methods that translate our requests into ! 32: * calls to a protocol- and device-specific provider. ! 33: */ ! 34: ! 35: #ifndef _IOCDAUDIONUB_H ! 36: #define _IOCDAUDIONUB_H ! 37: ! 38: #include <IOKit/IOService.h> ! 39: #include <IOKit/storage/IOCDTypes.h> ! 40: ! 41: class IOCDDrive; ! 42: ! 43: class IOCDAudioNub : public IOService { ! 44: ! 45: OSDeclareDefaultStructors(IOCDAudioNub) ! 46: ! 47: protected: ! 48: ! 49: virtual IOReturn newUserClient( task_t owningTask, ! 50: void * security_id, ! 51: UInt32 type, ! 52: IOUserClient ** handler ); ! 53: ! 54: public: ! 55: ! 56: /* Overrides from IOService: */ ! 57: ! 58: virtual bool attach(IOService *provider); ! 59: ! 60: /* end of IOService overrides */ ! 61: ! 62: /* Position the head at the specified address and begin audio playback. */ ! 63: ! 64: virtual IOReturn audioPlay(positioningType addressType,cdAddress address,audioPlayMode mode); ! 65: ! 66: /* Pause or release the drive. */ ! 67: ! 68: virtual IOReturn audioPause(bool pause); ! 69: ! 70: /* Perform a fast-forward (reverse) operation starting at the specified address. */ ! 71: ! 72: virtual IOReturn audioScan(positioningType addressType,cdAddress address, ! 73: bool reverse); ! 74: ! 75: /* Get the current audio play status and the Q-subcode for the current track. */ ! 76: ! 77: virtual IOReturn getAudioStatus(struct audioStatus *status); ! 78: ! 79: /* Position the head at the specified address and optionally begin audio play. */ ! 80: ! 81: virtual IOReturn audioTrackSearch(positioningType addressType,cdAddress address, ! 82: bool startPlay,audioPlayMode mode); ! 83: ! 84: /* Read audio data only. ! 85: * Equivalent to MacOS ReadAudio type 0. ! 86: */ ! 87: ! 88: virtual IOReturn readAudioData(positioningType addressType,cdAddress address, ! 89: UInt8 blockCount,UInt8 *buffer); ! 90: ! 91: /* Read audio subcodes (P-W) only. ! 92: * Equivalent to MacOS ReadAudio type 3. ! 93: */ ! 94: ! 95: virtual IOReturn readAudioSubcodes(positioningType addressType,cdAddress address, ! 96: UInt8 blockCount,UInt8 *buffer); ! 97: ! 98: /* Read audio data with Q-subcode. ! 99: * Equivalent to MacOS ReadAudio type 1. ! 100: */ ! 101: ! 102: virtual IOReturn readAudioWithQSubcode(positioningType addressType,cdAddress address, ! 103: UInt8 blockCount,UInt8 *buffer); ! 104: ! 105: /* Read audio data with all subcodes (P-W). ! 106: * Equivalent to MacOS ReadAudio type 2. ! 107: */ ! 108: ! 109: virtual IOReturn readAudioWithAllSubcodes(positioningType addressType,cdAddress address, ! 110: UInt8 blockCount,UInt8 *buffer); ! 111: ! 112: /* Read the raw Table of Contents. ! 113: * Equivalent to MacOS ReadToc type 4. ! 114: */ ! 115: ! 116: virtual IOReturn readEntireTOC(struct macEntireToc *buffer); ! 117: ! 118: /* Read the header information for the specified logical block. */ ! 119: ! 120: virtual IOReturn readHeader(UInt32 blockAddress,struct headerInfo *buffer); ! 121: ! 122: /* Read the International Standard Recording Code (ISRC) for a track. THe ! 123: * "found" boolean is set true if an ISRC was found, meaning the returned ! 124: * bytes are valid. ! 125: */ ! 126: ! 127: virtual IOReturn readISRC(UInt32 track,UInt8 *buffer,bool *found); ! 128: ! 129: /* Read the mm:ss:ff address of the lead-out for the last session. ! 130: * Equivalent to MacOS ReadToc type 2. ! 131: */ ! 132: ! 133: virtual IOReturn readLeadOutAddress(cdAddress *buffer); ! 134: ! 135: /* Read the Media Catalog Number (MCN). The "found" boolean is set true ! 136: * if an MCN was found, meaning the returned bytes are valid. ! 137: */ ! 138: ! 139: virtual IOReturn readMCN(UInt8 *buffer,bool *found); ! 140: ! 141: /* Read all Q-subcode entries in the lead-in areas (including TOC info), ! 142: * starting from the specified session. We stop at the last session or the ! 143: * buffer limit, whichever occurs fist. ! 144: * Equivalent to MacOS ReadToc type 6. ! 145: */ ! 146: ! 147: virtual IOReturn readQSubcodes(struct qSubcodeTocInfo *buffer,UInt32 bufSize); ! 148: ! 149: /* Read session information: number of sessions & location of last session. ! 150: * Equivalent to MacOS ReadToc type 5. ! 151: */ ! 152: ! 153: virtual IOReturn readSessionInfo(struct sessionInfo *info); ! 154: ! 155: /* Read the subcode buffer from the drive while it's playing audio. If purge ! 156: * is true, we instruct the drive to purge the buffer first. ! 157: * Equivalent to MacOS ReadAllSubcodes. ! 158: */ ! 159: ! 160: virtual IOReturn readSubcodeBuffer(UInt8 *buffer,bool purge,UInt32 entryCount); ! 161: ! 162: /* Read the Q subcode information for the current track being accessed or played. */ ! 163: ! 164: virtual IOReturn readTheQSubcode(struct qSubcode *buffer); ! 165: ! 166: /* Read the track type and address, starting at the specified track. We ! 167: * stop at the last track or the buffer limit, whichever occurs first. ! 168: * Equivalent to MacOS ReadToc type 3. ! 169: */ ! 170: ! 171: virtual IOReturn readTrackInfo(UInt32 startingTrack, ! 172: struct trackTypeInfo *buf,UInt32 bufSize); ! 173: ! 174: /* Read the track numbers of the first and last tracks. ! 175: * Equivalent to MacOS ReadToc type 1. ! 176: */ ! 177: ! 178: virtual IOReturn readTrackLimits(UInt32 *first,UInt32 *last); ! 179: ! 180: /* Set the audio-play stop address. An address of blockAddress==zero will cause ! 181: * any current audio play operation to be immediately stopped. The address can ! 182: * also be set via an audioPlay operation that specifies a stop address. ! 183: */ ! 184: ! 185: virtual IOReturn setAudioStopAddress(positioningType addressType,cdAddress address); ! 186: ! 187: /* Get the current volume settings. */ ! 188: ! 189: virtual IOReturn readAudioVolume(UInt8 *leftVolume,UInt8 *rightVolume); ! 190: ! 191: /* Set the audio play volume for the drive's audio channels. */ ! 192: ! 193: virtual IOReturn setVolume(UInt8 leftVolume,UInt8 rightVolume); ! 194: ! 195: protected: ! 196: ! 197: IOCDDrive * _provider; ! 198: }; ! 199: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.