|
|
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: #ifndef _IOAUDIOMANAGER_H ! 24: #define _IOAUDIOMANAGER_H ! 25: ! 26: /*! ! 27: * @header AudioManager ! 28: * Central location for handling frequently used audio values ! 29: */ ! 30: #include <IOKit/IOService.h> ! 31: ! 32: #include <IOKit/audio/IOAudioController.h> ! 33: #include <IOKit/IONotifier.h> ! 34: #include <IOKit/IOLocks.h> ! 35: #include <libkern/c++/OSArray.h> ! 36: ! 37: /*! @defined MASTER_VOLUME_MIN */ ! 38: #define MASTER_VOLUME_MIN 0 ! 39: ! 40: /*! @defined MASTER_VOLUME_MAX */ ! 41: #define MASTER_VOLUME_MAX 65535 ! 42: ! 43: /*! @defined kMasterVolumeLeft */ ! 44: #define kMasterVolumeLeft "MasterVolumeLeft" ! 45: ! 46: /*! @defined kMasterVolumeRight */ ! 47: #define kMasterVolumeRight "MasterVolumeRight" ! 48: ! 49: /*! @defined kMasterMute */ ! 50: #define kMasterMute "MasterMute" ! 51: ! 52: /*! @defined kMasterVolumeIncrement */ ! 53: #define kMasterVolumeIncrement "MasterVolumeIncrement" ! 54: ! 55: /*! ! 56: * @class IOAudioManager ! 57: * Object for handling getting and setting of common audio properties and registering ! 58: * interest in changes to these. ! 59: */ ! 60: class IOAudioManager : public IOService ! 61: { ! 62: OSDeclareDefaultStructors(IOAudioManager); ! 63: ! 64: private: ! 65: UInt16 masterVolumeLeft; ! 66: UInt16 masterVolumeRight; ! 67: bool masterMute; ! 68: UInt16 masterVolumeIncrement; ! 69: ! 70: OSArray * audioControllers; ! 71: IONotifier * publishNotify; ! 72: IOLock * driverLock; ! 73: ! 74: public: ! 75: /*! ! 76: * @function sharedInstance ! 77: * @result IOAudioManager ! 78: */ ! 79: static IOAudioManager *sharedInstance(); ! 80: ! 81: /*! ! 82: * @function init ! 83: * @abstract Set default values and initialize the Audio Manager ! 84: * @param properties Passed to inherited init method ! 85: * @result bool TRUE is successful, false otherwise ! 86: */ ! 87: virtual bool init(OSDictionary *properties); ! 88: ! 89: /*! ! 90: * @function free ! 91: * @abstract Release resources allocated and break notify connections ! 92: * @result void ! 93: */ ! 94: virtual void free(); ! 95: ! 96: /*! ! 97: * @function start ! 98: * @param provider ! 99: * @result bool TRUE if successful, FALSE otherwise ! 100: */ ! 101: virtual bool start(IOService *provider); ! 102: ! 103: /*! ! 104: * @function setProperties ! 105: * @param properties ! 106: * @result IOReturn kIOReturnSuccess if successful, kIOReturnBadArgument otherwise ! 107: */ ! 108: virtual IOReturn setProperties(OSObject *properties); ! 109: ! 110: /*! ! 111: * @function getMasterVolumeLeft ! 112: * @result UInt16 left master volume ! 113: */ ! 114: virtual UInt16 getMasterVolumeLeft(); ! 115: ! 116: /*! ! 117: * @function getMasterVolumeRight ! 118: * @result UInt16 right master volume ! 119: */ ! 120: virtual UInt16 getMasterVolumeRight(); ! 121: ! 122: /*! ! 123: * @function setMasterVolumeLeft ! 124: * @param newMasterVolumeLeft ! 125: * @result UInt16 previous value ! 126: */ ! 127: virtual UInt16 setMasterVolumeLeft(UInt16 newMasterVolumeLeft); ! 128: ! 129: /*! ! 130: * @function setMasterVolumeRight ! 131: * @param newMasterVolumeRight ! 132: * @result UInt16 previous value ! 133: */ ! 134: virtual UInt16 setMasterVolumeRight(UInt16 newMasterVolumeRight); ! 135: ! 136: /*! ! 137: * @function getMasterMute ! 138: * @result bool master mute ! 139: */ ! 140: virtual bool getMasterMute(); ! 141: ! 142: /*! ! 143: * @function setMasterMute ! 144: * @param newMasterMute ! 145: * @result bool previous value ! 146: */ ! 147: virtual bool setMasterMute(bool newMasterMute); ! 148: ! 149: /*! ! 150: * @function getMasterVolumeIncrement ! 151: * @result UInt16 master volume increment ! 152: */ ! 153: virtual UInt16 getMasterVolumeIncrement(); ! 154: ! 155: /*! ! 156: * @function setMasterVolumeIncrement ! 157: * @param newMasterVolumeIncrement ! 158: * @result UInt16 previous value ! 159: */ ! 160: virtual UInt16 setMasterVolumeIncrement(UInt16 newMasterVolumeIncrement); ! 161: ! 162: /*! ! 163: * @function incrementMasterVolume ! 164: * @abstract Increment master right and master left volume by master volume increment value ! 165: * @result UInt16 The larger of master volume right and master volume left ! 166: */ ! 167: virtual UInt16 incrementMasterVolume(); ! 168: ! 169: /*! ! 170: * @function decrementMasterVolume ! 171: * @abstract Decrement master right and master left volume by master volume increment value ! 172: * @result UInt16 The larger of master volume right and master volume left ! 173: */ ! 174: virtual UInt16 decrementMasterVolume(); ! 175: ! 176: /*! ! 177: * @function toggleMasterMute ! 178: * @abstract If muted, unmute, and vice versa ! 179: * @result bool New value of mute ! 180: */ ! 181: virtual bool toggleMasterMute(); ! 182: ! 183: private: ! 184: static bool audioPublishNotificationHandler(IOAudioManager *self, ! 185: void *ref, ! 186: IOService *newService); ! 187: virtual bool registerAudioController(IOAudioController *controller); ! 188: ! 189: }; ! 190: ! 191: #endif /* _IOAUDIOMANAGER_H */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.