| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  | // Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | // 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.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /*******************************************************************************
 | 
					
						
							|  |  |  |  * | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  |  *  Filename:      btc_a2dp_source.h | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  |  * | 
					
						
							|  |  |  |  *******************************************************************************/ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  | #ifndef __BTC_A2DP_SOURCE_H__
 | 
					
						
							|  |  |  | #define __BTC_A2DP_SOURCE_H__
 | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | #include <stdbool.h>
 | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  | #include "bt_target.h"
 | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  | #include "bta_api.h"
 | 
					
						
							|  |  |  | #include "btc_av_api.h"
 | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  | #include "esp_a2dp_api.h"
 | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  | #if BTC_AV_SRC_INCLUDED
 | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  | /*******************************************************************************
 | 
					
						
							|  |  |  |  **  Data types | 
					
						
							|  |  |  |  *******************************************************************************/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* tBTC_MEDIA_INIT_AUDIO msg structure */ | 
					
						
							|  |  |  | typedef struct { | 
					
						
							|  |  |  |     BT_HDR hdr; | 
					
						
							|  |  |  |     UINT16 SamplingFreq; /* 16k, 32k, 44.1k or 48k*/ | 
					
						
							|  |  |  |     UINT8 ChannelMode; /* mono, dual, stereo or joint stereo*/ | 
					
						
							|  |  |  |     UINT8 NumOfSubBands; /* 4 or 8 */ | 
					
						
							|  |  |  |     UINT8 NumOfBlocks; /* 4, 8, 12 or 16*/ | 
					
						
							|  |  |  |     UINT8 AllocationMethod; /* loudness or SNR*/ | 
					
						
							|  |  |  |     UINT16 MtuSize; /* peer mtu size */ | 
					
						
							|  |  |  | } tBTC_MEDIA_INIT_AUDIO; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* tBTC_MEDIA_UPDATE_AUDIO msg structure */ | 
					
						
							|  |  |  | typedef struct { | 
					
						
							|  |  |  |     BT_HDR hdr; | 
					
						
							|  |  |  |     UINT16 MinMtuSize; /* Minimum peer mtu size */ | 
					
						
							|  |  |  |     UINT8 MaxBitPool; /* Maximum peer bitpool */ | 
					
						
							|  |  |  |     UINT8 MinBitPool; /* Minimum peer bitpool */ | 
					
						
							|  |  |  | } tBTC_MEDIA_UPDATE_AUDIO; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* tBTC_MEDIA_INIT_AUDIO_FEEDING msg structure */ | 
					
						
							|  |  |  | typedef struct { | 
					
						
							|  |  |  |     BT_HDR hdr; | 
					
						
							|  |  |  |     tBTC_AV_FEEDING_MODE feeding_mode; | 
					
						
							|  |  |  |     tBTC_AV_MEDIA_FEEDINGS feeding; | 
					
						
							|  |  |  | } tBTC_MEDIA_INIT_AUDIO_FEEDING; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /*******************************************************************************
 | 
					
						
							|  |  |  |  **  Public functions | 
					
						
							|  |  |  |  *******************************************************************************/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /*******************************************************************************
 | 
					
						
							|  |  |  |  ** | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  |  ** Function         btc_a2dp_source_startup | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  |  ** | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  |  ** Description      Initialize and startup the A2DP source module. This function | 
					
						
							|  |  |  |  **                  should be called by the BTC AV state machine prior to using | 
					
						
							|  |  |  |  **                  the module | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  |  ** | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  |  ** Returns          TRUE is success | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  |  ** | 
					
						
							|  |  |  |  *******************************************************************************/ | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  | bool btc_a2dp_source_startup(void); | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | /*******************************************************************************
 | 
					
						
							|  |  |  |  ** | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  |  ** Function         btc_a2dp_source_shutdown | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  |  ** | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  |  ** Description      Shutdown and cleanup the A2DP source module. | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  |  ** | 
					
						
							|  |  |  |  *******************************************************************************/ | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  | void btc_a2dp_source_shutdown(void); | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | /*******************************************************************************
 | 
					
						
							|  |  |  |  ** | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  |  ** Function         btc_a2dp_source_enc_init_req | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  |  ** | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  |  ** Description      Request to initialize the media task encoder | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  |  ** | 
					
						
							|  |  |  |  ** Returns          TRUE is success | 
					
						
							|  |  |  |  ** | 
					
						
							|  |  |  |  *******************************************************************************/ | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  | BOOLEAN btc_a2dp_source_enc_init_req(tBTC_MEDIA_INIT_AUDIO *p_msg); | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | /*******************************************************************************
 | 
					
						
							|  |  |  |  ** | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  |  ** Function         btc_a2dp_source_enc_udpate_req | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  |  ** | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  |  ** Description      Request to update the media task encoder | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  |  ** | 
					
						
							|  |  |  |  ** Returns          TRUE is success | 
					
						
							|  |  |  |  ** | 
					
						
							|  |  |  |  *******************************************************************************/ | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  | BOOLEAN btc_a2dp_source_enc_update_req(tBTC_MEDIA_UPDATE_AUDIO *p_msg); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | /*******************************************************************************
 | 
					
						
							|  |  |  |  ** | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  |  ** Function         btc_a2dp_source_start_audio_req | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  |  ** | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  |  ** Description      Request to start audio encoding task | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  |  ** | 
					
						
							|  |  |  |  ** Returns          TRUE is success | 
					
						
							|  |  |  |  ** | 
					
						
							|  |  |  |  *******************************************************************************/ | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  | BOOLEAN btc_a2dp_source_start_audio_req(void); | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | /*******************************************************************************
 | 
					
						
							|  |  |  |  ** | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  |  ** Function         btc_a2dp_source_stop_audio_req | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  |  ** | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  |  ** Description      Request to stop audio encoding task | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  |  ** | 
					
						
							|  |  |  |  ** Returns          TRUE is success | 
					
						
							|  |  |  |  ** | 
					
						
							|  |  |  |  *******************************************************************************/ | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  | BOOLEAN btc_a2dp_source_stop_audio_req(void); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  | /*******************************************************************************
 | 
					
						
							|  |  |  |  ** | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  |  ** Function         btc_a2dp_source_tx_flush_req | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  |  ** | 
					
						
							|  |  |  |  ** Description      Request to flush audio encoding pipe | 
					
						
							|  |  |  |  ** | 
					
						
							|  |  |  |  ** Returns          TRUE is success | 
					
						
							|  |  |  |  ** | 
					
						
							|  |  |  |  *******************************************************************************/ | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  | BOOLEAN btc_a2dp_source_tx_flush_req(void); | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | /*******************************************************************************
 | 
					
						
							|  |  |  |  ** | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  |  ** Function         btc_a2dp_source_audio_readbuf | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  |  ** | 
					
						
							| 
									
										
										
										
											2017-09-12 09:40:52 +03:00
										 |  |  |  ** Description      Read an audio buffer from the BTC media TX queue | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  |  ** | 
					
						
							| 
									
										
										
										
											2017-09-12 09:40:52 +03:00
										 |  |  |  ** Returns          pointer on a aa buffer ready to send | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  |  ** | 
					
						
							|  |  |  |  *******************************************************************************/ | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  | BT_HDR *btc_a2dp_source_audio_readbuf(void); | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | /*******************************************************************************
 | 
					
						
							|  |  |  |  ** | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  |  ** Function         btc_a2dp_source_audio_feeding_init_req | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  |  ** | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  |  ** Description      Request to initialize audio feeding | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  |  ** | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  |  ** Returns          TRUE if success | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  |  ** | 
					
						
							|  |  |  |  *******************************************************************************/ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  | BOOLEAN btc_a2dp_source_audio_feeding_init_req(tBTC_MEDIA_INIT_AUDIO_FEEDING *p_msg); | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | /*******************************************************************************
 | 
					
						
							|  |  |  |  ** | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  |  ** Function         btc_a2dp_source_is_streaming | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  |  ** | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  |  ** Description      Check whether A2DP source is in streaming state | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  |  ** | 
					
						
							|  |  |  |  *******************************************************************************/ | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  | bool btc_a2dp_source_is_streaming(void); | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | /*******************************************************************************
 | 
					
						
							|  |  |  |  ** | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  |  ** Function         btc_a2dp_source_is_task_shutting_down | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  |  ** | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  |  ** Description      Check whether A2DP source media task is shutting down | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  |  ** | 
					
						
							|  |  |  |  *******************************************************************************/ | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  | bool btc_a2dp_source_is_task_shutting_down(void); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | /*******************************************************************************
 | 
					
						
							|  |  |  |  ** | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  |  ** Function         btc_a2dp_source_on_idle | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  |  ** | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  |  ** Description      Request 'idle' request from BTC AV state machine during | 
					
						
							|  |  |  |  **                  initialization | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  |  ** | 
					
						
							|  |  |  |  *******************************************************************************/ | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  | void btc_a2dp_source_on_idle(void); | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  | /*******************************************************************************
 | 
					
						
							|  |  |  |  ** | 
					
						
							|  |  |  |  ** Function         btc_a2dp_source_on_stopped | 
					
						
							|  |  |  |  ** | 
					
						
							|  |  |  |  ** Description      Process 'stop' request from the BTC AV state machine to stop | 
					
						
							|  |  |  |  **                  A2DP streaming | 
					
						
							|  |  |  |  ** | 
					
						
							|  |  |  |  *******************************************************************************/ | 
					
						
							|  |  |  | void btc_a2dp_source_on_stopped(tBTA_AV_SUSPEND *p_av); | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | /*******************************************************************************
 | 
					
						
							|  |  |  |  ** | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  |  ** Function         btc_a2dp_source_on_suspended | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  |  ** | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  |  ** Description      Process 'suspend' request from the BTC AV state machine to stop | 
					
						
							|  |  |  |  **                  A2DP streaming | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  |  ** | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  |  *******************************************************************************/ | 
					
						
							|  |  |  | void btc_a2dp_source_on_suspended(tBTA_AV_SUSPEND *p_av); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /*******************************************************************************
 | 
					
						
							|  |  |  |  ** | 
					
						
							|  |  |  |  ** Function         btc_a2dp_source_setup_codec | 
					
						
							|  |  |  |  ** | 
					
						
							|  |  |  |  ** Description      initialize the encoder parameters | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  |  ** | 
					
						
							|  |  |  |  *******************************************************************************/ | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  | void btc_a2dp_source_setup_codec(void); | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  | /*******************************************************************************
 | 
					
						
							|  |  |  |  ** | 
					
						
							|  |  |  |  ** Function         btc_a2dp_source_set_tx_flush | 
					
						
							|  |  |  |  ** | 
					
						
							|  |  |  |  ** Description      enable/disable discarding of transmitted frames | 
					
						
							|  |  |  |  ** | 
					
						
							|  |  |  |  *******************************************************************************/ | 
					
						
							|  |  |  | void btc_a2dp_source_set_tx_flush(BOOLEAN enable); | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  | /*******************************************************************************
 | 
					
						
							|  |  |  |  ** | 
					
						
							|  |  |  |  ** Function         btc_a2dp_source_encoder_update | 
					
						
							|  |  |  |  ** | 
					
						
							|  |  |  |  ** Description      update changed SBC encoder parameters | 
					
						
							|  |  |  |  ** | 
					
						
							|  |  |  |  *******************************************************************************/ | 
					
						
							|  |  |  | void btc_a2dp_source_encoder_update(void); | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  | #endif /* #if BTC_AV_SRC_INCLUDED */
 | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-18 00:56:58 +02:00
										 |  |  | #endif /* __BTC_A2DP_SOURCE_H__ */
 |