1/* 2 * Copyright (c) 1998-2014 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 _IOKIT_IOAUDIOSELECTORCONTROL_H 24#define _IOKIT_IOAUDIOSELECTORCONTROL_H 25 26#include <AvailabilityMacros.h> 27 28#ifndef IOAUDIOFAMILY_SELF_BUILD 29#include <IOKit/audio/IOAudioControl.h> 30#else 31#include "IOAudioControl.h" 32#endif 33 34class OSString; 35class OSArray; 36 37class IOAudioSelectorControl : public IOAudioControl 38{ 39 OSDeclareDefaultStructors(IOAudioSelectorControl) 40 41protected: 42 43 OSArray *availableSelections; 44 45protected: 46 struct ExpansionData { }; 47 48 ExpansionData *reserved; 49 50public: 51 static IOAudioSelectorControl *createOutputSelector(SInt32 initialValue, 52 UInt32 channelID, 53 const char *channelName = 0, 54 UInt32 cntrlID = 0) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 55 static IOAudioSelectorControl *createOutputClockSelector(SInt32 initialValue, 56 UInt32 channelID, 57 UInt32 clockSource, 58 const char *channelName = 0, 59 UInt32 cntrlID = 0) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 60 static IOAudioSelectorControl *createInputClockSelector(SInt32 initialValue, 61 UInt32 channelID, 62 UInt32 clockSource, 63 const char *channelName = 0, 64 UInt32 cntrlID = 0) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 65 66 // OSMetaClassDeclareReservedUsed(IOAudioSelectorControl, 0); 67 virtual IOReturn removeAvailableSelection(SInt32 selectionValue) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 68 // OSMetaClassDeclareReservedUsed(IOAudioSelectorControl, 1); 69 virtual IOReturn replaceAvailableSelection(SInt32 selectionValue, const char *selectionDescription) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 70 // OSMetaClassDeclareReservedUsed(IOAudioSelectorControl, 2); 71 virtual IOReturn replaceAvailableSelection(SInt32 selectionValue, OSString *selectionDescription) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 72 // OSMetaClassDeclareReservedUsed(IOAudioSelectorControl, 3); 73 virtual IOReturn addAvailableSelection(SInt32 selectionValue, OSString *selectionDescription, const char* pszName, OSObject* tag) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; // <rdar://8202424> 74 75private: 76 OSMetaClassDeclareReservedUsed(IOAudioSelectorControl, 0); 77 OSMetaClassDeclareReservedUsed(IOAudioSelectorControl, 1); 78 OSMetaClassDeclareReservedUsed(IOAudioSelectorControl, 2); 79 OSMetaClassDeclareReservedUsed(IOAudioSelectorControl, 3); // <rdar://8202424> 80 81 OSMetaClassDeclareReservedUnused(IOAudioSelectorControl, 4); // <rdar://8202424> 82 83 OSMetaClassDeclareReservedUnused(IOAudioSelectorControl, 5); // <rdar://8202424> 84 OSMetaClassDeclareReservedUnused(IOAudioSelectorControl, 6); 85 OSMetaClassDeclareReservedUnused(IOAudioSelectorControl, 7); 86 OSMetaClassDeclareReservedUnused(IOAudioSelectorControl, 8); 87 OSMetaClassDeclareReservedUnused(IOAudioSelectorControl, 9); 88 OSMetaClassDeclareReservedUnused(IOAudioSelectorControl, 10); 89 OSMetaClassDeclareReservedUnused(IOAudioSelectorControl, 11); 90 OSMetaClassDeclareReservedUnused(IOAudioSelectorControl, 12); 91 OSMetaClassDeclareReservedUnused(IOAudioSelectorControl, 13); 92 OSMetaClassDeclareReservedUnused(IOAudioSelectorControl, 14); 93 OSMetaClassDeclareReservedUnused(IOAudioSelectorControl, 15); 94 95public: 96 static IOAudioSelectorControl *create(SInt32 initialValue, 97 UInt32 channelID, 98 const char *channelName = 0, 99 UInt32 cntrlID = 0, 100 UInt32 subType = 0, 101 UInt32 usage = 0) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 102 103 static IOAudioSelectorControl *createInputSelector(SInt32 initialValue, 104 UInt32 channelID, 105 const char *channelName = 0, 106 UInt32 cntrlID = 0) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 107 108 virtual bool init(SInt32 initialValue, 109 UInt32 channelID, 110 const char *channelName = 0, 111 UInt32 cntrlID = 0, 112 UInt32 subType = 0, 113 UInt32 usage = 0, 114 OSDictionary *properties = 0) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 115 116 virtual void free() AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 117 118 virtual IOReturn addAvailableSelection(SInt32 selectionValue, const char *selectionDescription) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 119 virtual IOReturn addAvailableSelection(SInt32 selectionValue, OSString *selectionDescription) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 120 121 virtual bool valueExists(SInt32 selectorValue) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 122 123 virtual IOReturn validateValue(OSObject *newValue) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 124 125}; 126 127#endif /* _IOKIT_IOAUDIOSELECTORCONTROL_H */ 128