blob: 52a580f8487c5ade082b6de925d4574df867c4e0 [file] [log] [blame]
/*
* 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();
};