/* * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.hardware.bluetooth.a2dp@1.0; import IBluetoothAudioHost; /** * HAL interface for Bluetooth A2DP Offload functionality where * the encoding of the A2DP data packets is offloaded to platform * specific encoders. The A2DP control path is maintained in the * Bluetooth stack. * * This interface is from HAL client to HAL server. * * The HAL client must provide the handle of IBluetoothAudioHost as well * as codec configuration to the HAL server, when its connected to an * active A2DP Sink device. HAL Server, based on the feedback from the Audio * framework must call into the commands provided by the IBluetoothAudioHost. * HAL client must call into IBluetoothAudioOffload to provide the status of * these commands. Once the device becomes inactive, the HAL client must * call the endSession to terminate the session with the HAL server. */ interface IBluetoothAudioOffload { /** * Indicates that the HAL client is connected to an A2DP Sink device * and is ready to stream audio. This function is also used to register * the BluetoothAudioHost interface and the provide the current negotiated * codec. * * |endSession| must be called to unregister the interface. * * @param hostIf interface used to request stream control * @param codecConfig Codec configuration as negotiated with the A2DP Sink * device * @return status one of the following * SUCCESS if HAL server successfully initializes the platform with the * given codec configuration * UNSUPPORTED_CODEC_CONFIGURATION if HAL server cannot initialize the * platform with the given codec configuration * FAILURE if HAL server cannot initialize the platform for any other * reason */ startSession(IBluetoothAudioHost hostIf, CodecConfiguration codecConfig) generates (Status status); /** * Updates status for start stream request. The HAL client may need * to communicate to Bluetooth Controller and remote Sink device, in which * case it must update with PENDING status. Once the operation is * completed, it must return with either SUCCESS or FAILURE. * * @param status SUCCESS, FAILURE or PENDING */ oneway streamStarted(Status status); /** * Updates status for suspend stream request. The HAL client may need * to communicate to Bluetooth Controller and remote device, in which case * it must update with PENDING status. Once the operation is completed, it * must return with either SUCCESS or FAILURE. * * @param status SUCCESS, FAILURE or PENDING */ oneway streamSuspended(Status status); /** * Ends the current A2DP offload session and unregisters the * BluetoothAudioHost interface. */ oneway endSession(); };