1/******************************************************************************
2 *
3 *  Copyright (C) 2009-2012 Broadcom Corporation
4 *
5 *  Licensed under the Apache License, Version 2.0 (the "License");
6 *  you may not use this file except in compliance with the License.
7 *  You may obtain a copy of the License at:
8 *
9 *  http://www.apache.org/licenses/LICENSE-2.0
10 *
11 *  Unless required by applicable law or agreed to in writing, software
12 *  distributed under the License is distributed on an "AS IS" BASIS,
13 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 *  See the License for the specific language governing permissions and
15 *  limitations under the License.
16 *
17 ******************************************************************************/
18
19/*******************************************************************************
20 *
21 *  Filename:      btif_av.h
22 *
23 *  Description:   Main API header file for all BTIF AV functions accessed
24 *                 from internal stack.
25 *
26 *******************************************************************************/
27
28#ifndef BTIF_AV_H
29#define BTIF_AV_H
30
31#include "btif_common.h"
32#include "btif_sm.h"
33#include "bta_av_api.h"
34
35
36/*******************************************************************************
37**  Type definitions for callback functions
38********************************************************************************/
39
40typedef enum {
41    /* Reuse BTA_AV_XXX_EVT - No need to redefine them here */
42    BTIF_AV_CONNECT_REQ_EVT = BTA_AV_MAX_EVT,
43    BTIF_AV_DISCONNECT_REQ_EVT,
44    BTIF_AV_START_STREAM_REQ_EVT,
45    BTIF_AV_STOP_STREAM_REQ_EVT,
46    BTIF_AV_SUSPEND_STREAM_REQ_EVT,
47    BTIF_AV_SINK_CONFIG_REQ_EVT,
48    BTIF_AV_OFFLOAD_START_REQ_EVT,
49    BTIF_AV_SINK_FOCUS_REQ_EVT,
50    BTIF_AV_CLEANUP_REQ_EVT,
51} btif_av_sm_event_t;
52
53
54/*******************************************************************************
55**  BTIF AV API
56********************************************************************************/
57
58/*******************************************************************************
59**
60** Function         btif_av_get_sm_handle
61**
62** Description      Fetches current av SM handle
63**
64** Returns          None
65**
66*******************************************************************************/
67
68btif_sm_handle_t btif_av_get_sm_handle(void);
69
70/*******************************************************************************
71**
72** Function         btif_av_get_addr
73**
74** Description      Fetches current AV BD address
75**
76** Returns          BD address
77**
78*******************************************************************************/
79
80bt_bdaddr_t btif_av_get_addr(void);
81
82/*******************************************************************************
83** Function         btif_av_is_sink_enabled
84**
85** Description      Checks if A2DP Sink is enabled or not
86**
87** Returns          TRUE if A2DP Sink is enabled, false otherwise
88**
89*******************************************************************************/
90
91BOOLEAN btif_av_is_sink_enabled(void);
92
93/*******************************************************************************
94**
95** Function         btif_av_stream_ready
96**
97** Description      Checks whether AV is ready for starting a stream
98**
99** Returns          None
100**
101*******************************************************************************/
102
103BOOLEAN btif_av_stream_ready(void);
104
105/*******************************************************************************
106**
107** Function         btif_av_stream_started_ready
108**
109** Description      Checks whether AV ready for media start in streaming state
110**
111** Returns          None
112**
113*******************************************************************************/
114
115BOOLEAN btif_av_stream_started_ready(void);
116
117/*******************************************************************************
118**
119** Function         btif_dispatch_sm_event
120**
121** Description      Send event to AV statemachine
122**
123** Returns          None
124**
125*******************************************************************************/
126
127/* used to pass events to AV statemachine from other tasks */
128void btif_dispatch_sm_event(btif_av_sm_event_t event, void *p_data, int len);
129
130/*******************************************************************************
131**
132** Function         btif_av_init
133**
134** Description      Initializes btif AV if not already done
135**
136** Returns          bt_status_t
137**
138*******************************************************************************/
139
140bt_status_t btif_av_init(int service_id);
141
142/*******************************************************************************
143**
144** Function         btif_av_is_connected
145**
146** Description      Checks if av has a connected sink
147**
148** Returns          BOOLEAN
149**
150*******************************************************************************/
151
152BOOLEAN btif_av_is_connected(void);
153
154
155/*******************************************************************************
156**
157** Function         btif_av_is_peer_edr
158**
159** Description      Check if the connected a2dp device supports
160**                  EDR or not. Only when connected this function
161**                  will accurately provide a true capability of
162**                  remote peer. If not connected it will always be false.
163**
164** Returns          TRUE if remote device is capable of EDR
165**
166*******************************************************************************/
167
168BOOLEAN btif_av_is_peer_edr(void);
169
170#ifdef USE_AUDIO_TRACK
171/*******************************************************************************
172**
173** Function         audio_focus_status
174**
175** Description      Update Audio Focus State
176**
177** Returns          None
178**
179*******************************************************************************/
180void audio_focus_status(int state);
181
182/*******************************************************************************
183**
184** Function         btif_queue_focus_request
185**
186** Description      This is used to move context to btif and
187**                  queue audio_focus_request
188**
189** Returns          none
190**
191*******************************************************************************/
192void btif_queue_focus_request(void);
193#endif
194
195/******************************************************************************
196**
197** Function         btif_av_clear_remote_suspend_flag
198**
199** Description      Clears remote suspended flag
200**
201** Returns          Void
202********************************************************************************/
203void btif_av_clear_remote_suspend_flag(void);
204
205/*******************************************************************************
206**
207** Function         btif_av_peer_supports_3mbps
208**
209** Description      Check if the connected A2DP device supports
210**                  3 Mbps EDR. This function will only work while connected.
211**                  If not connected it will always return false.
212**
213** Returns          TRUE if remote device is EDR and supports 3 Mbps
214**
215*******************************************************************************/
216BOOLEAN btif_av_peer_supports_3mbps(void);
217
218#endif /* BTIF_AV_H */
219