Annotation of XNU/iokit/Families/IOSCSICDDrive/IOSCSICDDriveNub.cpp, revision 1.1.1.1

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 <IOKit/IOMemoryDescriptor.h>
                     23: #include <IOKit/IOLib.h>
                     24: #include <IOKit/storage/scsi/IOSCSICDDriveNub.h>
                     25: #include <IOKit/storage/scsi/IOSCSICDDrive.h>
                     26: 
                     27: #define        super   IOCDDriveNub
                     28: OSDefineMetaClassAndStructors(IOSCSICDDriveNub,IOCDDriveNub)
                     29: 
                     30: bool
                     31: IOSCSICDDriveNub::attach(IOService * provider)
                     32: {
                     33:     if (!super::attach(provider)) {
                     34:         return(false);
                     35:     }
                     36: 
                     37:     _provider = OSDynamicCast(IOSCSICDDrive,provider);
                     38:     if (_provider == NULL) {
                     39:         return(false);
                     40:     } else {
                     41:         return(true);
                     42:     }
                     43: }
                     44: 
                     45: IOReturn
                     46: IOSCSICDDriveNub::audioPlay(positioningType addressType,cdAddress address,
                     47:                                                audioPlayMode mode)
                     48: {
                     49:     return(_provider->audioPlay(addressType,address,mode));
                     50: }
                     51: 
                     52: IOReturn
                     53: IOSCSICDDriveNub::audioPause(bool pause)
                     54: {
                     55:     return(_provider->audioPause(pause));
                     56: }
                     57: 
                     58: IOReturn
                     59: IOSCSICDDriveNub::audioScan(positioningType addressType,cdAddress address,
                     60:                                                bool reverse)
                     61: {
                     62:     return(_provider->audioScan(addressType,address,reverse));
                     63: }
                     64: 
                     65: IOReturn
                     66: IOSCSICDDriveNub::audioTrackSearch(positioningType addressType,cdAddress address,
                     67:                                                bool startPlay,audioPlayMode mode)
                     68: {
                     69:     return(_provider->audioTrackSearch(addressType,address,startPlay,mode));
                     70: }
                     71: 
                     72: IOReturn
                     73: IOSCSICDDriveNub::doAsyncReadWrite(IOMemoryDescriptor *buffer,
                     74:                                             UInt32 block,UInt32 nblks,
                     75:                                             gdCompletionFunction action,
                     76:                                             IOService *target,void *param)
                     77: {
                     78:     IOReturn result;
                     79: ///    char *bp;
                     80: //    int bytes;
                     81:     
                     82:     if (buffer->getDirection() == kIODirectionOut) {
                     83:         return(kIOReturnNotWritable);
                     84:     }
                     85: 
                     86: //    bp = (char *)buffer->getVirtualAddress();
                     87:     
                     88:     result = _provider->doAsyncReadWrite(buffer,block,nblks,action,target,param);
                     89: 
                     90: //    bytes = nblks * 2048;
                     91: //    IOLog("--blk %04d, %04d blks (%04d bytes):\n",(int)block,(int)nblks,bytes);
                     92: ///    dump(bp,32 /*bytes*/);
                     93: ///    IOLog("\n");
                     94:     
                     95:     return(result);
                     96: }
                     97: 
                     98: IOReturn
                     99: IOSCSICDDriveNub::doSyncReadWrite(IOMemoryDescriptor *buffer,UInt32 block,UInt32 nblks)
                    100: {
                    101:     if (buffer->getDirection() == kIODirectionOut) {
                    102:         return(kIOReturnNotWritable);
                    103:     }
                    104: 
                    105:     return(_provider->doSyncReadWrite(buffer,block,nblks));
                    106: }
                    107: 
                    108: #define isprint(c) (c > 0x20)
                    109: 
                    110: void
                    111: IOSCSICDDriveNub::dump(char *buf,int count)
                    112: {
                    113:     static char string[17] = "xxxxxxxxxxxxxxxx";
                    114:     
                    115:     short i;
                    116:     char  c;
                    117:     char *cp;  
                    118: 
                    119:     if (!count) return;
                    120: 
                    121:     i = 0;
                    122:     cp = buf;
                    123:     do {
                    124:        c = *cp;
                    125:        IOLog("%02x ",(c & 0xff));
                    126:        c &= 0x7f;
                    127:        string[i % 16] = (isprint(c) || (c == ' ')) ? c : '.';
                    128:        if ((i % 16)==15)
                    129:            IOLog("%s\n",string);
                    130:        cp++; i++;
                    131:     } while (--count);
                    132: 
                    133:     /* pad out for last line */
                    134:     if (i % 16) {          /* then a shortie left */
                    135:        string[i % 16] = '\0';
                    136:        while (i % 16) {
                    137:            IOLog("   ");
                    138:            i++;    
                    139:        }
                    140:        IOLog("%s\n",string);   
                    141:     }
                    142: }
                    143: 
                    144: IOReturn
                    145: IOSCSICDDriveNub::doEjectMedia(void)
                    146: {
                    147:     return(_provider->doEjectMedia());
                    148: }
                    149: 
                    150: IOReturn
                    151: IOSCSICDDriveNub::doLockUnlockMedia(bool doLock)
                    152: {
                    153:     return(_provider->doLockUnlockMedia(doLock));
                    154: }
                    155: 
                    156: IOReturn
                    157: IOSCSICDDriveNub::executeCdb(struct cdbParams *params)
                    158: {
                    159:     return(_provider->executeCdb(params));
                    160: }
                    161: 
                    162: IOReturn
                    163: IOSCSICDDriveNub::getAudioStatus(struct audioStatus *status)
                    164: {
                    165:     return(_provider->getAudioStatus(status));
                    166: }
                    167: 
                    168: char *
                    169: IOSCSICDDriveNub::getVendorString(void)
                    170: {
                    171:     return(_provider->getVendorString());
                    172: }
                    173: 
                    174: char *
                    175: IOSCSICDDriveNub::getProductString(void)
                    176: {
                    177:     return(_provider->getProductString());
                    178: }
                    179: 
                    180: char *
                    181: IOSCSICDDriveNub::getRevisionString(void)
                    182: {
                    183:     return(_provider->getRevisionString());
                    184: }
                    185: 
                    186: char *
                    187: IOSCSICDDriveNub::getAdditionalDeviceInfoString(void)
                    188: {
                    189:     return(_provider->getAdditionalDeviceInfoString());
                    190: }
                    191: 
                    192: IOReturn
                    193: IOSCSICDDriveNub::readAudioData(positioningType addressType,cdAddress address,
                    194:                                     UInt8 blockCount,UInt8 *buffer)
                    195: {
                    196:     return(_provider->readAudioData(addressType,address,blockCount,buffer));
                    197: }
                    198: 
                    199: IOReturn
                    200: IOSCSICDDriveNub::readAudioSubcodes(positioningType addressType,cdAddress address,
                    201:                                     UInt8 blockCount,UInt8 *buffer)
                    202: {
                    203:     return(_provider->readAudioSubcodes(addressType,address,blockCount,buffer));
                    204: }
                    205: 
                    206: IOReturn
                    207: IOSCSICDDriveNub::readAudioVolume(UInt8 *leftVolume,UInt8 *rightVolume)
                    208: {
                    209:     return(_provider->readAudioVolume(leftVolume,rightVolume));
                    210: }
                    211: 
                    212: IOReturn
                    213: IOSCSICDDriveNub::readAudioWithQSubcode(positioningType addressType,cdAddress address,
                    214:                                     UInt8 blockCount,UInt8 *buffer)
                    215: {
                    216:     return(_provider->readAudioWithQSubcode(addressType,address,blockCount,buffer));
                    217: }
                    218: 
                    219: IOReturn
                    220: IOSCSICDDriveNub::readAudioWithAllSubcodes(positioningType addressType,cdAddress address,
                    221:                                     UInt8 blockCount,UInt8 *buffer)
                    222: {
                    223:     return(_provider->readAudioWithAllSubcodes(addressType,address,blockCount,buffer));
                    224: }
                    225: 
                    226: IOReturn
                    227: IOSCSICDDriveNub::readHeader(UInt32 blockAddress,struct headerInfo *buffer)
                    228: {
                    229:     return(_provider->readHeader(blockAddress,buffer));
                    230: }
                    231: 
                    232: IOReturn
                    233: IOSCSICDDriveNub::readISRC(UInt32 track,UInt8 *buffer,bool *found)
                    234: {
                    235:     return(_provider->readISRC(track,buffer,found));
                    236: }
                    237: 
                    238: IOReturn
                    239: IOSCSICDDriveNub::readMCN(UInt8 *buffer,bool *found)
                    240: {
                    241:     return(_provider->readMCN(buffer,found));
                    242: }
                    243: 
                    244: IOReturn
                    245: IOSCSICDDriveNub::readQSubcodes(struct qSubcodeTocInfo *buffer,UInt32 bufSize)
                    246: {
                    247:     return(_provider->readQSubcodes(buffer,bufSize));
                    248: }
                    249: 
                    250: IOReturn
                    251: IOSCSICDDriveNub::readSubcodeBuffer(UInt8 *buffer,bool purge,UInt32 entryCount)
                    252: {
                    253:     return(_provider->readSubcodeBuffer(buffer,purge,entryCount));
                    254: }
                    255: 
                    256: IOReturn
                    257: IOSCSICDDriveNub::readTheQSubcode(struct qSubcode *buffer)
                    258: {
                    259:     return(_provider->readTheQSubcode(buffer));
                    260: }
                    261: 
                    262: IOReturn
                    263: IOSCSICDDriveNub::readTOC(struct rawToc *buffer,UInt32 length,tocFormat format)
                    264: {
                    265:     return(_provider->readTOC(buffer,length,format));
                    266: }
                    267: 
                    268: IOReturn
                    269: IOSCSICDDriveNub::reportBlockSize(UInt64 *blockSize)
                    270: {
                    271:     return(_provider->reportBlockSize(blockSize));
                    272: }
                    273: 
                    274: IOReturn
                    275: IOSCSICDDriveNub::reportEjectability(bool *isEjectable)
                    276: {
                    277:     return(_provider->reportEjectability(isEjectable));
                    278: }
                    279: 
                    280: IOReturn
                    281: IOSCSICDDriveNub::reportLockability(bool *isLockable)
                    282: {
                    283:     return(_provider->reportLockability(isLockable));
                    284: }
                    285: 
                    286: IOReturn
                    287: IOSCSICDDriveNub::reportPollRequirements(bool *pollIsRequired,bool *pollIsExpensive)
                    288: {
                    289:     return(_provider-> reportPollRequirements(pollIsRequired,pollIsExpensive));
                    290: }
                    291: 
                    292: IOReturn
                    293: IOSCSICDDriveNub::reportMaxReadTransfer (UInt64 blockSize,UInt64 *max)
                    294: {
                    295:     return(_provider->reportMaxReadTransfer(blockSize,max));
                    296: }
                    297: 
                    298: IOReturn
                    299: IOSCSICDDriveNub::reportMediaState(bool *mediaPresent,bool *changed)    
                    300: {
                    301:     return(_provider-> reportMediaState(mediaPresent,changed));
                    302: }
                    303: 
                    304: IOReturn
                    305: IOSCSICDDriveNub::reportRemovability(bool *isRemovable)
                    306: {
                    307:     return(_provider->reportRemovability(isRemovable));
                    308: }
                    309: 
                    310: IOReturn
                    311: IOSCSICDDriveNub::reportMaxValidBlock(UInt64 *maxBlock)
                    312: {
                    313:     return(_provider->reportMaxValidBlock(maxBlock));
                    314: }
                    315: 
                    316: IOReturn
                    317: IOSCSICDDriveNub::setAudioStopAddress(positioningType addressType,cdAddress address)
                    318: {
                    319:     return(_provider->setAudioStopAddress(addressType,address));
                    320: }
                    321: 
                    322: IOReturn
                    323: IOSCSICDDriveNub::setVolume(UInt8 leftVolume,UInt8 rightVolume)
                    324: {
                    325:     return(_provider->setVolume(leftVolume,rightVolume));
                    326: }
                    327: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.