| /****************************************************************************** |
| * |
| * Copyright 2021 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. |
| * |
| ******************************************************************************/ |
| |
| #ifndef ANDROID_INCLUDE_BT_BAP_BA_H |
| #define ANDROID_INCLUDE_BT_BAP_BA_H |
| |
| #include <hardware/bluetooth.h> |
| #include "hardware/bt_av.h" |
| |
| __BEGIN_DECLS |
| |
| #define BT_PROFILE_BAP_BROADCAST_ID "bap_broadcast" |
| |
| /* Bluetooth BAP BROADCAST states */ |
| typedef enum { |
| BTBAP_BROADCAST_STATE_IDLE = 0, //Idle |
| BTBAP_BROADCAST_STATE_CONFIGURED, //Configured |
| BTBAP_BROADCAST_STATE_STREAMING, //Streaming |
| } btbap_broadcast_state_t; |
| |
| /* Bluetooth BAP BROADCAST Audio states */ |
| typedef enum { |
| BTBAP_BROADCAST_AUDIO_STATE_STOPPED = 0, |
| BTBAP_BROADCAST__AUDIO_STATE_STARTED, |
| } btbap_broadcast_audio_state_t; |
| |
| /** Callback for broadcast state change. |
| * state will have one of the values from btbap_broadcast_state_t |
| */ |
| typedef void (* bap_broadcast_state_callback)(int adv_id, |
| btbap_broadcast_state_t state); |
| |
| /** Callback for audiopath state change. |
| * state will have one of the values from btbap_broadcast_audio_state_t |
| */ |
| typedef void (* bap_broadcast_audio_state_callback)(int adv_id, |
| btbap_broadcast_audio_state_t state); |
| |
| /** Callback for audio configuration change. |
| */ |
| typedef void (* bap_broadcast_audio_config_callback)(int adv_id, |
| btav_a2dp_codec_config_t codec_config, |
| std::vector<btav_a2dp_codec_config_t> codec_capabilities); |
| |
| /** Callback for Iso datapath setup or removed. |
| */ |
| //typedef void (* bap_broadcast_iso_datapath_callback) (int big_handle, int enabled); |
| |
| /** Callback for encryption key generation notification |
| */ |
| typedef void (* bap_broadcast_enckey_callback) (std::string key); |
| |
| /** Callback to create/terminate BIG |
| */ |
| |
| typedef void (* bap_broadcast_setup_big_callback) (int enable, int adv_id, int big_handle, |
| int num_bises, std::vector<uint16_t> bis_handles); |
| |
| typedef void (* bap_broadcast_bid_callback) (std::vector<uint8_t> broadcast_id); |
| |
| /** BT-BAP-BROADCAST callback structure. */ |
| typedef struct { |
| /** set to sizeof(btbap_broadcast_callbacks_t) */ |
| size_t size; |
| bap_broadcast_state_callback broadcast_state_cb; |
| bap_broadcast_audio_state_callback audio_state_cb; |
| bap_broadcast_audio_config_callback audio_config_cb; |
| //bap_broadcast_iso_datapath_callback iso_datapath_cb; |
| bap_broadcast_enckey_callback enc_key_cb; |
| bap_broadcast_setup_big_callback create_big_cb; |
| bap_broadcast_bid_callback broadcast_id_cb; |
| } btbap_broadcast_callbacks_t; |
| |
| typedef struct { |
| |
| /** set to sizeof(btav_source_interface_t) */ |
| size_t size; |
| /** |
| * Register the btbap_broadcast callbacks. |
| */ |
| bt_status_t (*init)(btbap_broadcast_callbacks_t* callbacks, |
| int max_broadcast, btav_a2dp_codec_config_t config, int mode); |
| |
| /** Enable broadcast with provided codec config */ |
| bt_status_t (*enable_broadcast)(btav_a2dp_codec_config_t config); |
| |
| /** disable broadcast to move the state machine to idle state */ |
| bt_status_t (*disable_broadcast)(int adv_id); |
| |
| /** sets bap broadcast as active session */ |
| bt_status_t (*set_broadcast_active)(bool enable, uint8_t adv_id); |
| |
| /** configure the codecs settings preferences */ |
| bt_status_t (*codec_config_change)(uint8_t adv_id, btav_a2dp_codec_config_t config); |
| |
| /** Disable ISO datapath */ |
| bt_status_t (*setup_audiopath)(bool enable, uint8_t adv_id, uint8_t big_handle, int num_bises, int* bis_handles); |
| |
| /** Get stored encryption key */ |
| std::string (*get_encryption_key)( void ); |
| |
| /** Set Encryption with encryption lenght provided */ |
| bt_status_t (*set_encryption) (bool enabled, uint8_t key_length); |
| |
| /** Closes the interface. */ |
| void (*cleanup)( void ); |
| |
| } btbap_broadcast_interface_t; |
| __END_DECLS |
| #endif /*ANDROID_INCLUDE_BT_BAP_BA_H*/ |
| |