1*4d7e907cSAndroid Build Coastguard Worker/* 2*4d7e907cSAndroid Build Coastguard Worker * Copyright (C) 2020 The Android Open Source Project 3*4d7e907cSAndroid Build Coastguard Worker * 4*4d7e907cSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*4d7e907cSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*4d7e907cSAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*4d7e907cSAndroid Build Coastguard Worker * 8*4d7e907cSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*4d7e907cSAndroid Build Coastguard Worker * 10*4d7e907cSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*4d7e907cSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*4d7e907cSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*4d7e907cSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*4d7e907cSAndroid Build Coastguard Worker * limitations under the License. 15*4d7e907cSAndroid Build Coastguard Worker */ 16*4d7e907cSAndroid Build Coastguard Worker 17*4d7e907cSAndroid Build Coastguard Workerpackage [email protected]; 18*4d7e907cSAndroid Build Coastguard Worker 19*4d7e907cSAndroid Build Coastguard Workerimport [email protected]; 20*4d7e907cSAndroid Build Coastguard Workerimport IStreamIn; 21*4d7e907cSAndroid Build Coastguard Workerimport IStreamOut; 22*4d7e907cSAndroid Build Coastguard Worker 23*4d7e907cSAndroid Build Coastguard Workerinterface IDevice { 24*4d7e907cSAndroid Build Coastguard Worker /** 25*4d7e907cSAndroid Build Coastguard Worker * Returns whether the audio hardware interface has been initialized. 26*4d7e907cSAndroid Build Coastguard Worker * 27*4d7e907cSAndroid Build Coastguard Worker * @return retval OK on success, NOT_INITIALIZED on failure. 28*4d7e907cSAndroid Build Coastguard Worker */ 29*4d7e907cSAndroid Build Coastguard Worker initCheck() generates (Result retval); 30*4d7e907cSAndroid Build Coastguard Worker 31*4d7e907cSAndroid Build Coastguard Worker /** 32*4d7e907cSAndroid Build Coastguard Worker * Sets the audio volume for all audio activities other than voice call. If 33*4d7e907cSAndroid Build Coastguard Worker * NOT_SUPPORTED is returned, the software mixer will emulate this 34*4d7e907cSAndroid Build Coastguard Worker * capability. 35*4d7e907cSAndroid Build Coastguard Worker * 36*4d7e907cSAndroid Build Coastguard Worker * @param volume 1.0f means unity, 0.0f is zero. 37*4d7e907cSAndroid Build Coastguard Worker * @return retval operation completion status. 38*4d7e907cSAndroid Build Coastguard Worker */ 39*4d7e907cSAndroid Build Coastguard Worker setMasterVolume(float volume) generates (Result retval); 40*4d7e907cSAndroid Build Coastguard Worker 41*4d7e907cSAndroid Build Coastguard Worker /** 42*4d7e907cSAndroid Build Coastguard Worker * Get the current master volume value for the HAL, if the HAL supports 43*4d7e907cSAndroid Build Coastguard Worker * master volume control. For example, AudioFlinger will query this value 44*4d7e907cSAndroid Build Coastguard Worker * from the primary audio HAL when the service starts and use the value for 45*4d7e907cSAndroid Build Coastguard Worker * setting the initial master volume across all HALs. HALs which do not 46*4d7e907cSAndroid Build Coastguard Worker * support this method must return NOT_SUPPORTED in 'retval'. 47*4d7e907cSAndroid Build Coastguard Worker * 48*4d7e907cSAndroid Build Coastguard Worker * @return retval operation completion status. 49*4d7e907cSAndroid Build Coastguard Worker * @return volume 1.0f means unity, 0.0f is zero. 50*4d7e907cSAndroid Build Coastguard Worker */ 51*4d7e907cSAndroid Build Coastguard Worker getMasterVolume() generates (Result retval, float volume); 52*4d7e907cSAndroid Build Coastguard Worker 53*4d7e907cSAndroid Build Coastguard Worker /** 54*4d7e907cSAndroid Build Coastguard Worker * Sets microphone muting state. 55*4d7e907cSAndroid Build Coastguard Worker * 56*4d7e907cSAndroid Build Coastguard Worker * @param mute whether microphone is muted. 57*4d7e907cSAndroid Build Coastguard Worker * @return retval operation completion status. 58*4d7e907cSAndroid Build Coastguard Worker */ 59*4d7e907cSAndroid Build Coastguard Worker setMicMute(bool mute) generates (Result retval); 60*4d7e907cSAndroid Build Coastguard Worker 61*4d7e907cSAndroid Build Coastguard Worker /** 62*4d7e907cSAndroid Build Coastguard Worker * Gets whether microphone is muted. 63*4d7e907cSAndroid Build Coastguard Worker * 64*4d7e907cSAndroid Build Coastguard Worker * @return retval operation completion status. 65*4d7e907cSAndroid Build Coastguard Worker * @return mute whether microphone is muted. 66*4d7e907cSAndroid Build Coastguard Worker */ 67*4d7e907cSAndroid Build Coastguard Worker getMicMute() generates (Result retval, bool mute); 68*4d7e907cSAndroid Build Coastguard Worker 69*4d7e907cSAndroid Build Coastguard Worker /** 70*4d7e907cSAndroid Build Coastguard Worker * Set the audio mute status for all audio activities. If the return value 71*4d7e907cSAndroid Build Coastguard Worker * is NOT_SUPPORTED, the software mixer will emulate this capability. 72*4d7e907cSAndroid Build Coastguard Worker * 73*4d7e907cSAndroid Build Coastguard Worker * @param mute whether audio is muted. 74*4d7e907cSAndroid Build Coastguard Worker * @return retval operation completion status. 75*4d7e907cSAndroid Build Coastguard Worker */ 76*4d7e907cSAndroid Build Coastguard Worker setMasterMute(bool mute) generates (Result retval); 77*4d7e907cSAndroid Build Coastguard Worker 78*4d7e907cSAndroid Build Coastguard Worker /** 79*4d7e907cSAndroid Build Coastguard Worker * Get the current master mute status for the HAL, if the HAL supports 80*4d7e907cSAndroid Build Coastguard Worker * master mute control. AudioFlinger will query this value from the primary 81*4d7e907cSAndroid Build Coastguard Worker * audio HAL when the service starts and use the value for setting the 82*4d7e907cSAndroid Build Coastguard Worker * initial master mute across all HALs. HAL must indicate that the feature 83*4d7e907cSAndroid Build Coastguard Worker * is not supported by returning NOT_SUPPORTED status. 84*4d7e907cSAndroid Build Coastguard Worker * 85*4d7e907cSAndroid Build Coastguard Worker * @return retval operation completion status. 86*4d7e907cSAndroid Build Coastguard Worker * @return mute whether audio is muted. 87*4d7e907cSAndroid Build Coastguard Worker */ 88*4d7e907cSAndroid Build Coastguard Worker getMasterMute() generates (Result retval, bool mute); 89*4d7e907cSAndroid Build Coastguard Worker 90*4d7e907cSAndroid Build Coastguard Worker /** 91*4d7e907cSAndroid Build Coastguard Worker * Returns audio input buffer size according to parameters passed or 92*4d7e907cSAndroid Build Coastguard Worker * INVALID_ARGUMENTS if one of the parameters is not supported. 93*4d7e907cSAndroid Build Coastguard Worker * 94*4d7e907cSAndroid Build Coastguard Worker * @param config audio configuration. 95*4d7e907cSAndroid Build Coastguard Worker * @return retval operation completion status. 96*4d7e907cSAndroid Build Coastguard Worker * @return bufferSize input buffer size in bytes. 97*4d7e907cSAndroid Build Coastguard Worker */ 98*4d7e907cSAndroid Build Coastguard Worker getInputBufferSize(AudioConfig config) 99*4d7e907cSAndroid Build Coastguard Worker generates (Result retval, uint64_t bufferSize); 100*4d7e907cSAndroid Build Coastguard Worker 101*4d7e907cSAndroid Build Coastguard Worker /** 102*4d7e907cSAndroid Build Coastguard Worker * This method creates and opens the audio hardware output stream. 103*4d7e907cSAndroid Build Coastguard Worker * If the stream can not be opened with the proposed audio config, 104*4d7e907cSAndroid Build Coastguard Worker * HAL must provide suggested values for the audio config. 105*4d7e907cSAndroid Build Coastguard Worker * 106*4d7e907cSAndroid Build Coastguard Worker * Note: INVALID_ARGUMENTS is returned both in the case when the 107*4d7e907cSAndroid Build Coastguard Worker * HAL can not use the provided config and in the case when 108*4d7e907cSAndroid Build Coastguard Worker * the value of any argument is invalid. In the latter case the 109*4d7e907cSAndroid Build Coastguard Worker * HAL must provide a default initialized suggested config. 110*4d7e907cSAndroid Build Coastguard Worker * 111*4d7e907cSAndroid Build Coastguard Worker * @param ioHandle handle assigned by AudioFlinger. 112*4d7e907cSAndroid Build Coastguard Worker * @param device device type and (if needed) address. 113*4d7e907cSAndroid Build Coastguard Worker * @param config stream configuration. 114*4d7e907cSAndroid Build Coastguard Worker * @param flags additional flags. 115*4d7e907cSAndroid Build Coastguard Worker * @param sourceMetadata Description of the audio that will be played. 116*4d7e907cSAndroid Build Coastguard Worker May be used by implementations to configure hardware effects. 117*4d7e907cSAndroid Build Coastguard Worker * @return retval operation completion status. 118*4d7e907cSAndroid Build Coastguard Worker * @return outStream created output stream. 119*4d7e907cSAndroid Build Coastguard Worker * @return suggestedConfig in the case of rejection of the proposed config, 120*4d7e907cSAndroid Build Coastguard Worker * a config suggested by the HAL. 121*4d7e907cSAndroid Build Coastguard Worker */ 122*4d7e907cSAndroid Build Coastguard Worker openOutputStream( 123*4d7e907cSAndroid Build Coastguard Worker AudioIoHandle ioHandle, 124*4d7e907cSAndroid Build Coastguard Worker DeviceAddress device, 125*4d7e907cSAndroid Build Coastguard Worker AudioConfig config, 126*4d7e907cSAndroid Build Coastguard Worker vec<AudioInOutFlag> flags, 127*4d7e907cSAndroid Build Coastguard Worker SourceMetadata sourceMetadata) generates ( 128*4d7e907cSAndroid Build Coastguard Worker Result retval, 129*4d7e907cSAndroid Build Coastguard Worker IStreamOut outStream, 130*4d7e907cSAndroid Build Coastguard Worker AudioConfig suggestedConfig); 131*4d7e907cSAndroid Build Coastguard Worker 132*4d7e907cSAndroid Build Coastguard Worker /** 133*4d7e907cSAndroid Build Coastguard Worker * This method creates and opens the audio hardware input stream. 134*4d7e907cSAndroid Build Coastguard Worker * If the stream can not be opened with the proposed audio config, 135*4d7e907cSAndroid Build Coastguard Worker * HAL must provide suggested values for the audio config. 136*4d7e907cSAndroid Build Coastguard Worker * 137*4d7e907cSAndroid Build Coastguard Worker * Note: INVALID_ARGUMENTS is returned both in the case when the 138*4d7e907cSAndroid Build Coastguard Worker * HAL can not use the provided config and in the case when 139*4d7e907cSAndroid Build Coastguard Worker * the value of any argument is invalid. In the latter case the 140*4d7e907cSAndroid Build Coastguard Worker * HAL must provide a default initialized suggested config. 141*4d7e907cSAndroid Build Coastguard Worker * 142*4d7e907cSAndroid Build Coastguard Worker * @param ioHandle handle assigned by AudioFlinger. 143*4d7e907cSAndroid Build Coastguard Worker * @param device device type and (if needed) address. 144*4d7e907cSAndroid Build Coastguard Worker * @param config stream configuration. 145*4d7e907cSAndroid Build Coastguard Worker * @param flags additional flags. 146*4d7e907cSAndroid Build Coastguard Worker * @param sinkMetadata Description of the audio that is suggested by the client. 147*4d7e907cSAndroid Build Coastguard Worker * May be used by implementations to configure processing effects. 148*4d7e907cSAndroid Build Coastguard Worker * @return retval operation completion status. 149*4d7e907cSAndroid Build Coastguard Worker * @return inStream in case of success, created input stream. 150*4d7e907cSAndroid Build Coastguard Worker * @return suggestedConfig in the case of rejection of the proposed config, 151*4d7e907cSAndroid Build Coastguard Worker * a config suggested by the HAL. 152*4d7e907cSAndroid Build Coastguard Worker */ 153*4d7e907cSAndroid Build Coastguard Worker openInputStream( 154*4d7e907cSAndroid Build Coastguard Worker AudioIoHandle ioHandle, 155*4d7e907cSAndroid Build Coastguard Worker DeviceAddress device, 156*4d7e907cSAndroid Build Coastguard Worker AudioConfig config, 157*4d7e907cSAndroid Build Coastguard Worker vec<AudioInOutFlag> flags, 158*4d7e907cSAndroid Build Coastguard Worker SinkMetadata sinkMetadata) generates ( 159*4d7e907cSAndroid Build Coastguard Worker Result retval, 160*4d7e907cSAndroid Build Coastguard Worker IStreamIn inStream, 161*4d7e907cSAndroid Build Coastguard Worker AudioConfig suggestedConfig); 162*4d7e907cSAndroid Build Coastguard Worker 163*4d7e907cSAndroid Build Coastguard Worker /** 164*4d7e907cSAndroid Build Coastguard Worker * Returns whether HAL supports audio patches. Patch represents a connection 165*4d7e907cSAndroid Build Coastguard Worker * between signal source(s) and signal sink(s). If HAL doesn't support 166*4d7e907cSAndroid Build Coastguard Worker * patches natively (in hardware) then audio system will need to establish 167*4d7e907cSAndroid Build Coastguard Worker * them in software. 168*4d7e907cSAndroid Build Coastguard Worker * 169*4d7e907cSAndroid Build Coastguard Worker * @return supports true if audio patches are supported. 170*4d7e907cSAndroid Build Coastguard Worker */ 171*4d7e907cSAndroid Build Coastguard Worker supportsAudioPatches() generates (bool supports); 172*4d7e907cSAndroid Build Coastguard Worker 173*4d7e907cSAndroid Build Coastguard Worker /** 174*4d7e907cSAndroid Build Coastguard Worker * Creates an audio patch between several source and sink ports. The handle 175*4d7e907cSAndroid Build Coastguard Worker * is allocated by the HAL and must be unique for this audio HAL module. 176*4d7e907cSAndroid Build Coastguard Worker * 177*4d7e907cSAndroid Build Coastguard Worker * Optional method. HAL must support it if 'supportsAudioPatches' returns 178*4d7e907cSAndroid Build Coastguard Worker * 'true'. 179*4d7e907cSAndroid Build Coastguard Worker * 180*4d7e907cSAndroid Build Coastguard Worker * @param sources patch sources. 181*4d7e907cSAndroid Build Coastguard Worker * @param sinks patch sinks. 182*4d7e907cSAndroid Build Coastguard Worker * @return retval operation completion status. 183*4d7e907cSAndroid Build Coastguard Worker * @return patch created patch handle. 184*4d7e907cSAndroid Build Coastguard Worker */ 185*4d7e907cSAndroid Build Coastguard Worker createAudioPatch(vec<AudioPortConfig> sources, vec<AudioPortConfig> sinks) 186*4d7e907cSAndroid Build Coastguard Worker generates (Result retval, AudioPatchHandle patch); 187*4d7e907cSAndroid Build Coastguard Worker 188*4d7e907cSAndroid Build Coastguard Worker /** 189*4d7e907cSAndroid Build Coastguard Worker * Updates an audio patch. 190*4d7e907cSAndroid Build Coastguard Worker * 191*4d7e907cSAndroid Build Coastguard Worker * Use of this function is preferred to releasing and re-creating a patch 192*4d7e907cSAndroid Build Coastguard Worker * as the HAL module can figure out a way of switching the route without 193*4d7e907cSAndroid Build Coastguard Worker * causing audio disruption. 194*4d7e907cSAndroid Build Coastguard Worker * 195*4d7e907cSAndroid Build Coastguard Worker * Optional method. HAL must support it if 'supportsAudioPatches' returns 196*4d7e907cSAndroid Build Coastguard Worker * 'true'. 197*4d7e907cSAndroid Build Coastguard Worker * 198*4d7e907cSAndroid Build Coastguard Worker * @param previousPatch handle of the previous patch to update. 199*4d7e907cSAndroid Build Coastguard Worker * @param sources new patch sources. 200*4d7e907cSAndroid Build Coastguard Worker * @param sinks new patch sinks. 201*4d7e907cSAndroid Build Coastguard Worker * @return retval operation completion status. 202*4d7e907cSAndroid Build Coastguard Worker * @return patch updated patch handle. 203*4d7e907cSAndroid Build Coastguard Worker */ 204*4d7e907cSAndroid Build Coastguard Worker updateAudioPatch( 205*4d7e907cSAndroid Build Coastguard Worker AudioPatchHandle previousPatch, 206*4d7e907cSAndroid Build Coastguard Worker vec<AudioPortConfig> sources, 207*4d7e907cSAndroid Build Coastguard Worker vec<AudioPortConfig> sinks) generates ( 208*4d7e907cSAndroid Build Coastguard Worker Result retval, AudioPatchHandle patch); 209*4d7e907cSAndroid Build Coastguard Worker 210*4d7e907cSAndroid Build Coastguard Worker /** 211*4d7e907cSAndroid Build Coastguard Worker * Release an audio patch. 212*4d7e907cSAndroid Build Coastguard Worker * 213*4d7e907cSAndroid Build Coastguard Worker * Optional method. HAL must support it if 'supportsAudioPatches' returns 214*4d7e907cSAndroid Build Coastguard Worker * 'true'. 215*4d7e907cSAndroid Build Coastguard Worker * 216*4d7e907cSAndroid Build Coastguard Worker * @param patch patch handle. 217*4d7e907cSAndroid Build Coastguard Worker * @return retval operation completion status. 218*4d7e907cSAndroid Build Coastguard Worker */ 219*4d7e907cSAndroid Build Coastguard Worker releaseAudioPatch(AudioPatchHandle patch) generates (Result retval); 220*4d7e907cSAndroid Build Coastguard Worker 221*4d7e907cSAndroid Build Coastguard Worker /** 222*4d7e907cSAndroid Build Coastguard Worker * Returns the list of supported attributes for a given audio port. 223*4d7e907cSAndroid Build Coastguard Worker * 224*4d7e907cSAndroid Build Coastguard Worker * As input, 'port' contains the information (type, role, address etc...) 225*4d7e907cSAndroid Build Coastguard Worker * needed by the HAL to identify the port. 226*4d7e907cSAndroid Build Coastguard Worker * 227*4d7e907cSAndroid Build Coastguard Worker * As output, 'resultPort' contains possible attributes (sampling rates, 228*4d7e907cSAndroid Build Coastguard Worker * formats, channel masks, gain controllers...) for this port. 229*4d7e907cSAndroid Build Coastguard Worker * 230*4d7e907cSAndroid Build Coastguard Worker * @param port port identifier. 231*4d7e907cSAndroid Build Coastguard Worker * @return retval operation completion status. 232*4d7e907cSAndroid Build Coastguard Worker * @return resultPort port descriptor with all parameters filled up. 233*4d7e907cSAndroid Build Coastguard Worker */ 234*4d7e907cSAndroid Build Coastguard Worker getAudioPort(AudioPort port) 235*4d7e907cSAndroid Build Coastguard Worker generates (Result retval, AudioPort resultPort); 236*4d7e907cSAndroid Build Coastguard Worker 237*4d7e907cSAndroid Build Coastguard Worker /** 238*4d7e907cSAndroid Build Coastguard Worker * Set audio port configuration. 239*4d7e907cSAndroid Build Coastguard Worker * 240*4d7e907cSAndroid Build Coastguard Worker * @param config audio port configuration. 241*4d7e907cSAndroid Build Coastguard Worker * @return retval operation completion status. 242*4d7e907cSAndroid Build Coastguard Worker */ 243*4d7e907cSAndroid Build Coastguard Worker setAudioPortConfig(AudioPortConfig config) generates (Result retval); 244*4d7e907cSAndroid Build Coastguard Worker 245*4d7e907cSAndroid Build Coastguard Worker /** 246*4d7e907cSAndroid Build Coastguard Worker * Gets the HW synchronization source of the device. Calling this method is 247*4d7e907cSAndroid Build Coastguard Worker * equivalent to getting AUDIO_PARAMETER_HW_AV_SYNC on the legacy HAL. 248*4d7e907cSAndroid Build Coastguard Worker * 249*4d7e907cSAndroid Build Coastguard Worker * Optional method 250*4d7e907cSAndroid Build Coastguard Worker * 251*4d7e907cSAndroid Build Coastguard Worker * @return retval operation completion status: OK or NOT_SUPPORTED. 252*4d7e907cSAndroid Build Coastguard Worker * @return hwAvSync HW synchronization source 253*4d7e907cSAndroid Build Coastguard Worker */ 254*4d7e907cSAndroid Build Coastguard Worker getHwAvSync() generates (Result retval, AudioHwSync hwAvSync); 255*4d7e907cSAndroid Build Coastguard Worker 256*4d7e907cSAndroid Build Coastguard Worker /** 257*4d7e907cSAndroid Build Coastguard Worker * Sets whether the screen is on. Calling this method is equivalent to 258*4d7e907cSAndroid Build Coastguard Worker * setting AUDIO_PARAMETER_KEY_SCREEN_STATE on the legacy HAL. 259*4d7e907cSAndroid Build Coastguard Worker * 260*4d7e907cSAndroid Build Coastguard Worker * Optional method 261*4d7e907cSAndroid Build Coastguard Worker * 262*4d7e907cSAndroid Build Coastguard Worker * @param turnedOn whether the screen is turned on. 263*4d7e907cSAndroid Build Coastguard Worker * @return retval operation completion status. 264*4d7e907cSAndroid Build Coastguard Worker */ 265*4d7e907cSAndroid Build Coastguard Worker setScreenState(bool turnedOn) generates (Result retval); 266*4d7e907cSAndroid Build Coastguard Worker 267*4d7e907cSAndroid Build Coastguard Worker /** 268*4d7e907cSAndroid Build Coastguard Worker * Generic method for retrieving vendor-specific parameter values. 269*4d7e907cSAndroid Build Coastguard Worker * The framework does not interpret the parameters, they are passed 270*4d7e907cSAndroid Build Coastguard Worker * in an opaque manner between a vendor application and HAL. 271*4d7e907cSAndroid Build Coastguard Worker * 272*4d7e907cSAndroid Build Coastguard Worker * Multiple parameters can be retrieved at the same time. 273*4d7e907cSAndroid Build Coastguard Worker * The implementation should return as many requested parameters 274*4d7e907cSAndroid Build Coastguard Worker * as possible, even if one or more is not supported 275*4d7e907cSAndroid Build Coastguard Worker * 276*4d7e907cSAndroid Build Coastguard Worker * @param context provides more information about the request 277*4d7e907cSAndroid Build Coastguard Worker * @param keys keys of the requested parameters 278*4d7e907cSAndroid Build Coastguard Worker * @return retval operation completion status. 279*4d7e907cSAndroid Build Coastguard Worker * OK must be returned if keys is empty. 280*4d7e907cSAndroid Build Coastguard Worker * NOT_SUPPORTED must be returned if at least one key is unknown. 281*4d7e907cSAndroid Build Coastguard Worker * @return parameters parameter key value pairs. 282*4d7e907cSAndroid Build Coastguard Worker * Must contain the value of all requested keys if retval == OK 283*4d7e907cSAndroid Build Coastguard Worker */ 284*4d7e907cSAndroid Build Coastguard Worker getParameters(vec<ParameterValue> context, vec<string> keys) 285*4d7e907cSAndroid Build Coastguard Worker generates (Result retval, vec<ParameterValue> parameters); 286*4d7e907cSAndroid Build Coastguard Worker 287*4d7e907cSAndroid Build Coastguard Worker /** 288*4d7e907cSAndroid Build Coastguard Worker * Generic method for setting vendor-specific parameter values. 289*4d7e907cSAndroid Build Coastguard Worker * The framework does not interpret the parameters, they are passed 290*4d7e907cSAndroid Build Coastguard Worker * in an opaque manner between a vendor application and HAL. 291*4d7e907cSAndroid Build Coastguard Worker * 292*4d7e907cSAndroid Build Coastguard Worker * Multiple parameters can be set at the same time though this is 293*4d7e907cSAndroid Build Coastguard Worker * discouraged as it make failure analysis harder. 294*4d7e907cSAndroid Build Coastguard Worker * 295*4d7e907cSAndroid Build Coastguard Worker * If possible, a failed setParameters should not impact the platform state. 296*4d7e907cSAndroid Build Coastguard Worker * 297*4d7e907cSAndroid Build Coastguard Worker * @param context provides more information about the request 298*4d7e907cSAndroid Build Coastguard Worker * @param parameters parameter key value pairs. 299*4d7e907cSAndroid Build Coastguard Worker * @return retval operation completion status. 300*4d7e907cSAndroid Build Coastguard Worker * All parameters must be successfully set for OK to be returned 301*4d7e907cSAndroid Build Coastguard Worker */ 302*4d7e907cSAndroid Build Coastguard Worker setParameters(vec<ParameterValue> context, vec<ParameterValue> parameters) 303*4d7e907cSAndroid Build Coastguard Worker generates (Result retval); 304*4d7e907cSAndroid Build Coastguard Worker 305*4d7e907cSAndroid Build Coastguard Worker /** 306*4d7e907cSAndroid Build Coastguard Worker * Returns an array with available microphones in device. 307*4d7e907cSAndroid Build Coastguard Worker * 308*4d7e907cSAndroid Build Coastguard Worker * @return retval NOT_SUPPORTED if there are no microphones on this device 309*4d7e907cSAndroid Build Coastguard Worker * INVALID_STATE if the call is not successful, 310*4d7e907cSAndroid Build Coastguard Worker * OK otherwise. 311*4d7e907cSAndroid Build Coastguard Worker * 312*4d7e907cSAndroid Build Coastguard Worker * @return microphones array with microphones info 313*4d7e907cSAndroid Build Coastguard Worker */ 314*4d7e907cSAndroid Build Coastguard Worker getMicrophones() 315*4d7e907cSAndroid Build Coastguard Worker generates(Result retval, vec<MicrophoneInfo> microphones); 316*4d7e907cSAndroid Build Coastguard Worker 317*4d7e907cSAndroid Build Coastguard Worker /** 318*4d7e907cSAndroid Build Coastguard Worker * Notifies the device module about the connection state of an input/output 319*4d7e907cSAndroid Build Coastguard Worker * device attached to it. Calling this method is equivalent to setting 320*4d7e907cSAndroid Build Coastguard Worker * AUDIO_PARAMETER_DEVICE_[DIS]CONNECT on the legacy HAL. 321*4d7e907cSAndroid Build Coastguard Worker * 322*4d7e907cSAndroid Build Coastguard Worker * @param address audio device specification. 323*4d7e907cSAndroid Build Coastguard Worker * @param connected whether the device is connected. 324*4d7e907cSAndroid Build Coastguard Worker * @return retval operation completion status. 325*4d7e907cSAndroid Build Coastguard Worker */ 326*4d7e907cSAndroid Build Coastguard Worker setConnectedState(DeviceAddress address, bool connected) 327*4d7e907cSAndroid Build Coastguard Worker generates (Result retval); 328*4d7e907cSAndroid Build Coastguard Worker 329*4d7e907cSAndroid Build Coastguard Worker /** 330*4d7e907cSAndroid Build Coastguard Worker * Called by the framework to deinitialize the device and free up 331*4d7e907cSAndroid Build Coastguard Worker * all currently allocated resources. It is recommended to close 332*4d7e907cSAndroid Build Coastguard Worker * the device on the client side as soon as it is becomes unused. 333*4d7e907cSAndroid Build Coastguard Worker * 334*4d7e907cSAndroid Build Coastguard Worker * Note that all streams must be closed by the client before 335*4d7e907cSAndroid Build Coastguard Worker * attempting to close the device they belong to. 336*4d7e907cSAndroid Build Coastguard Worker * 337*4d7e907cSAndroid Build Coastguard Worker * @return retval OK in case the success. 338*4d7e907cSAndroid Build Coastguard Worker * INVALID_STATE if the device was already closed 339*4d7e907cSAndroid Build Coastguard Worker * or there are streams currently opened. 340*4d7e907cSAndroid Build Coastguard Worker */ 341*4d7e907cSAndroid Build Coastguard Worker close() generates (Result retval); 342*4d7e907cSAndroid Build Coastguard Worker 343*4d7e907cSAndroid Build Coastguard Worker /** 344*4d7e907cSAndroid Build Coastguard Worker * Applies an audio effect to an audio device. The effect is inserted 345*4d7e907cSAndroid Build Coastguard Worker * according to its insertion preference specified by INSERT_... EffectFlags 346*4d7e907cSAndroid Build Coastguard Worker * in the EffectDescriptor. 347*4d7e907cSAndroid Build Coastguard Worker * 348*4d7e907cSAndroid Build Coastguard Worker * @param device identifies the sink or source device this effect must be applied to. 349*4d7e907cSAndroid Build Coastguard Worker * "device" is the AudioPortHandle indicated for the device when the audio 350*4d7e907cSAndroid Build Coastguard Worker * patch connecting that device was created. 351*4d7e907cSAndroid Build Coastguard Worker * @param effectId effect ID (obtained from IEffectsFactory.createEffect) of 352*4d7e907cSAndroid Build Coastguard Worker * the effect to add. 353*4d7e907cSAndroid Build Coastguard Worker * @return retval operation completion status. 354*4d7e907cSAndroid Build Coastguard Worker */ 355*4d7e907cSAndroid Build Coastguard Worker addDeviceEffect(AudioPortHandle device, uint64_t effectId) generates (Result retval); 356*4d7e907cSAndroid Build Coastguard Worker 357*4d7e907cSAndroid Build Coastguard Worker /** 358*4d7e907cSAndroid Build Coastguard Worker * Stops applying an audio effect to an audio device. 359*4d7e907cSAndroid Build Coastguard Worker * 360*4d7e907cSAndroid Build Coastguard Worker * @param device identifies the sink or source device this effect was applied to. 361*4d7e907cSAndroid Build Coastguard Worker * "device" is the AudioPortHandle indicated for the device when the audio 362*4d7e907cSAndroid Build Coastguard Worker * patch is created at the audio HAL. 363*4d7e907cSAndroid Build Coastguard Worker * @param effectId effect ID (obtained from IEffectsFactory.createEffect) of 364*4d7e907cSAndroid Build Coastguard Worker * the effect. 365*4d7e907cSAndroid Build Coastguard Worker * @return retval operation completion status. 366*4d7e907cSAndroid Build Coastguard Worker */ 367*4d7e907cSAndroid Build Coastguard Worker removeDeviceEffect(AudioPortHandle device, uint64_t effectId) generates (Result retval); 368*4d7e907cSAndroid Build Coastguard Worker}; 369