|
|
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: #include "IOCDAudioNub.h" ! 23: #include "IOCDAudioNubClient.h" ! 24: #include <IOKit/storage/IOCDDrive.h> ! 25: ! 26: #define super IOService ! 27: OSDefineMetaClassAndStructors(IOCDAudioNub,IOService) ! 28: ! 29: IOReturn ! 30: IOCDAudioNub::newUserClient(task_t owningTask, ! 31: void * /* security_id */, ! 32: UInt32 type, ! 33: IOUserClient ** handler ) ! 34: ! 35: { ! 36: IOReturn err = kIOReturnSuccess; ! 37: IOCDAudioNubClient * client; ! 38: ! 39: kprintf("IOCDAudioNub::newUserClient\n"); ! 40: if( type != 11) { ! 41: kprintf("IOCDAudioNub::newUserClient bad argument\n"); ! 42: return( kIOReturnBadArgument); ! 43: } ! 44: ! 45: client = IOCDAudioNubClient::withTask(owningTask); ! 46: ! 47: if( !client || (false == client->attach( this )) || ! 48: (false == client->start( this )) ) { ! 49: if(client) { ! 50: client->detach( this ); ! 51: client->release(); ! 52: } ! 53: err = kIOReturnNoMemory; ! 54: } ! 55: ! 56: *handler = client; ! 57: return( err ); ! 58: } ! 59: ! 60: bool ! 61: IOCDAudioNub::attach(IOService *provider) ! 62: { ! 63: _provider = (IOCDDrive *)provider; ! 64: ! 65: return(super::attach(provider)); ! 66: } ! 67: ! 68: IOReturn ! 69: IOCDAudioNub::audioPlay(positioningType addressType,cdAddress address, ! 70: audioPlayMode mode) ! 71: { ! 72: return(_provider->audioPlay(addressType,address,mode)); ! 73: } ! 74: ! 75: IOReturn ! 76: IOCDAudioNub::audioPause(bool pause) ! 77: { ! 78: return(_provider->audioPause(pause)); ! 79: } ! 80: ! 81: IOReturn ! 82: IOCDAudioNub::audioScan(positioningType addressType,cdAddress address, ! 83: bool reverse) ! 84: { ! 85: return(_provider->audioScan(addressType,address,reverse)); ! 86: } ! 87: ! 88: IOReturn ! 89: IOCDAudioNub::audioTrackSearch(positioningType addressType,cdAddress address, ! 90: bool startPlay,audioPlayMode mode) ! 91: { ! 92: return(_provider->audioTrackSearch(addressType,address,startPlay,mode)); ! 93: } ! 94: ! 95: IOReturn ! 96: IOCDAudioNub::getAudioStatus(struct audioStatus *status) ! 97: { ! 98: return(_provider->getAudioStatus(status)); ! 99: } ! 100: ! 101: IOReturn ! 102: IOCDAudioNub::readAudioData(positioningType addressType,cdAddress address, ! 103: UInt8 blockCount,UInt8 *buffer) ! 104: { ! 105: return(_provider->readAudioData(addressType,address,blockCount,buffer)); ! 106: } ! 107: ! 108: IOReturn ! 109: IOCDAudioNub::readAudioSubcodes(positioningType addressType,cdAddress address, ! 110: UInt8 blockCount,UInt8 *buffer) ! 111: { ! 112: return(_provider->readAudioSubcodes(addressType,address,blockCount,buffer)); ! 113: } ! 114: ! 115: IOReturn ! 116: IOCDAudioNub::readAudioVolume(UInt8 *leftVolume,UInt8 *rightVolume) ! 117: { ! 118: return(_provider->readAudioVolume(leftVolume,rightVolume)); ! 119: } ! 120: ! 121: IOReturn ! 122: IOCDAudioNub::readAudioWithQSubcode(positioningType addressType,cdAddress address, ! 123: UInt8 blockCount,UInt8 *buffer) ! 124: { ! 125: return(_provider->readAudioWithQSubcode(addressType,address,blockCount,buffer)); ! 126: } ! 127: ! 128: IOReturn ! 129: IOCDAudioNub::readAudioWithAllSubcodes(positioningType addressType,cdAddress address, ! 130: UInt8 blockCount,UInt8 *buffer) ! 131: { ! 132: return(_provider->readAudioWithAllSubcodes(addressType,address,blockCount,buffer)); ! 133: } ! 134: ! 135: IOReturn ! 136: IOCDAudioNub::readEntireTOC(struct macEntireToc *buffer) ! 137: { ! 138: return(_provider->readEntireTOC(buffer)); ! 139: } ! 140: ! 141: IOReturn ! 142: IOCDAudioNub::readHeader(UInt32 blockAddress,struct headerInfo *buffer) ! 143: { ! 144: return(_provider->readHeader(blockAddress,buffer)); ! 145: } ! 146: ! 147: IOReturn ! 148: IOCDAudioNub::readISRC(UInt32 track,UInt8 *buffer,bool *found) ! 149: { ! 150: return(_provider->readISRC(track,buffer,found)); ! 151: } ! 152: ! 153: IOReturn ! 154: IOCDAudioNub::readLeadOutAddress(cdAddress *buffer) ! 155: { ! 156: return(_provider->readLeadOutAddress(buffer)); ! 157: } ! 158: ! 159: IOReturn ! 160: IOCDAudioNub::readMCN(UInt8 *buffer,bool *found) ! 161: { ! 162: return(_provider->readMCN(buffer,found)); ! 163: } ! 164: ! 165: IOReturn ! 166: IOCDAudioNub::readQSubcodes(struct qSubcodeTocInfo *buffer,UInt32 bufSize) ! 167: { ! 168: return(_provider->readQSubcodes(buffer,bufSize)); ! 169: } ! 170: ! 171: IOReturn ! 172: IOCDAudioNub::readSessionInfo(struct sessionInfo *info) ! 173: { ! 174: return(_provider->readSessionInfo(info)); ! 175: } ! 176: ! 177: IOReturn ! 178: IOCDAudioNub::readSubcodeBuffer(UInt8 *buffer,bool purge,UInt32 entryCount) ! 179: { ! 180: return(_provider->readSubcodeBuffer(buffer,purge,entryCount)); ! 181: } ! 182: ! 183: IOReturn ! 184: IOCDAudioNub::readTheQSubcode(struct qSubcode *buffer) ! 185: { ! 186: return(_provider->readTheQSubcode(buffer)); ! 187: } ! 188: ! 189: IOReturn ! 190: IOCDAudioNub::readTrackInfo(UInt32 startingTrack, ! 191: struct trackTypeInfo *buf,UInt32 bufSize) ! 192: { ! 193: return(_provider->readTrackInfo(startingTrack,buf,bufSize)); ! 194: } ! 195: ! 196: IOReturn ! 197: IOCDAudioNub::readTrackLimits(UInt32 *first,UInt32 *last) ! 198: { ! 199: return(_provider->readTrackLimits(first,last)); ! 200: } ! 201: ! 202: IOReturn ! 203: IOCDAudioNub::setAudioStopAddress(positioningType addressType,cdAddress address) ! 204: { ! 205: return(_provider->setAudioStopAddress(addressType,address)); ! 206: } ! 207: ! 208: IOReturn ! 209: IOCDAudioNub::setVolume(UInt8 leftVolume,UInt8 rightVolume) ! 210: { ! 211: return(_provider->setVolume(leftVolume,rightVolume)); ! 212: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.