29#include "bta_ag_api.h"
33#ifndef BTA_AG_MULTI_RESULT_INCLUDED
34#define BTA_AG_MULTI_RESULT_INCLUDED FALSE
38#ifndef BTA_HSP_RESULT_REPLACE_COLON
39#define BTA_HSP_RESULT_REPLACE_COLON TRUE
45#define HFP_VERSION_1_1 0x0101
46#define HFP_VERSION_1_5 0x0105
47#define HFP_VERSION_1_6 0x0106
49#define HSP_VERSION_1_0 0x0100
50#define HSP_VERSION_1_2 0x0102
54#define BTA_AG_NUM_SCB 2
58#ifndef BTA_AG_COLLISION_TIMER
59#define BTA_AG_COLLISION_TIMER 2000
68#define BTA_AG_NUM_IDX 2
75#define BTA_AG_BSRF_FEAT_SPEC (BTA_AG_FEAT_3WAY | BTA_AG_FEAT_ECNR | \
76 BTA_AG_FEAT_VREC | BTA_AG_FEAT_INBAND | \
77 BTA_AG_FEAT_VTAG | BTA_AG_FEAT_REJECT | \
78 BTA_AG_FEAT_ECS | BTA_AG_FEAT_ECC | \
79 BTA_AG_FEAT_EXTERR | BTA_AG_FEAT_CODEC | \
82#define BTA_AG_SDP_FEAT_SPEC (BTA_AG_FEAT_3WAY | BTA_AG_FEAT_ECNR | \
83 BTA_AG_FEAT_VREC | BTA_AG_FEAT_INBAND | \
89 BTA_AG_API_REGISTER_EVT = BTA_SYS_EVT_START(BTA_ID_AG),
90 BTA_AG_API_DEREGISTER_EVT,
93 BTA_AG_API_AUDIO_OPEN_EVT,
94 BTA_AG_API_AUDIO_CLOSE_EVT,
95 BTA_AG_API_RESULT_EVT,
96 BTA_AG_API_SETCODEC_EVT,
99 BTA_AG_RFC_SRV_CLOSE_EVT,
102 BTA_AG_SCO_CLOSE_EVT,
103 BTA_AG_DISC_ACP_RES_EVT,
104 BTA_AG_DISC_INT_RES_EVT,
106 BTA_AG_DISC_FAIL_EVT,
107 BTA_AG_CI_RX_WRITE_EVT,
108 BTA_AG_RING_TOUT_EVT,
110 BTA_AG_CI_SCO_DATA_EVT,
111 BTA_AG_CI_SLC_READY_EVT,
115 BTA_AG_API_ENABLE_EVT,
116 BTA_AG_API_DISABLE_EVT
122 BTA_AG_POST_SCO_NONE,
123 BTA_AG_POST_SCO_CLOSE_RFC,
124 BTA_AG_POST_SCO_RING,
125 BTA_AG_POST_SCO_CALL_CONN,
126 BTA_AG_POST_SCO_CALL_ORIG,
127 BTA_AG_POST_SCO_CALL_END,
128 BTA_AG_POST_SCO_CALL_END_INCALL
134 BTA_AG_SCO_SHUTDOWN_ST,
135 BTA_AG_SCO_LISTEN_ST,
136#if (BTM_WBS_INCLUDED == TRUE )
139 BTA_AG_SCO_OPENING_ST,
140 BTA_AG_SCO_OPEN_CL_ST,
141 BTA_AG_SCO_OPEN_XFER_ST,
143 BTA_AG_SCO_CLOSING_ST,
144 BTA_AG_SCO_CLOSE_OP_ST,
145 BTA_AG_SCO_CLOSE_XFER_ST,
146 BTA_AG_SCO_SHUTTING_ST
157 tBTA_AG_PARSE_MODE parse_mode;
158 tBTA_AG_CBACK *p_cback;
165 char p_name[2][BTA_SERVICE_NAME_LEN+1];
166 tBTA_SERVICE_MASK services;
168 tBTA_AG_FEAT features;
177 tBTA_SERVICE_MASK services;
193 tBTA_AG_PEER_CODEC codec;
225#if (BTM_WBS_INCLUDED == TRUE )
243 char clip[BTA_AG_AT_MAX_LEN+1];
244 UINT16 serv_handle[BTA_AG_NUM_IDX];
246 TIMER_LIST_ENT act_timer;
249 tBTA_SERVICE_MASK reg_services;
250 tBTA_SERVICE_MASK open_services;
252 tBTA_SEC serv_sec_mask;
253 tBTA_SEC cli_sec_mask;
254 tBTA_AG_FEAT features;
255 tBTA_AG_PEER_FEAT peer_features;
258#if (BTM_WBS_INCLUDED == TRUE )
259 tBTA_AG_PEER_CODEC peer_codecs;
260 tBTA_AG_PEER_CODEC sco_codec;
261 tBTA_AG_PEER_CODEC inuse_codec;
262 BOOLEAN codec_updated;
263 BOOLEAN codec_fallback;
264 TIMER_LIST_ENT cn_timer;
269 BOOLEAN clip_enabled;
270 BOOLEAN ccwa_enabled;
271 BOOLEAN cmer_enabled;
272 BOOLEAN cmee_enabled;
273 BOOLEAN inband_enabled;
275 TIMER_LIST_ENT colli_timer;
276 BOOLEAN colli_tmr_on;
290 BOOLEAN retry_with_sco_only;
291 UINT32 bia_masked_out;
302 BOOLEAN param_updated;
313 tBTA_AG_CBACK *p_cback;
314 tBTA_AG_PARSE_MODE parse_mode;
322extern const UINT16 bta_ag_uuid[BTA_AG_NUM_IDX];
323extern const UINT8 bta_ag_sec_id[BTA_AG_NUM_IDX];
327#if BTA_DYNAMIC_MEMORY == FALSE
331#define bta_ag_cb (*bta_ag_cb_ptr)
343extern UINT16 bta_ag_scb_to_idx(
tBTA_AG_SCB *p_scb);
345extern UINT8 bta_ag_service_to_idx(tBTA_SERVICE_MASK services);
346extern UINT16 bta_ag_idx_by_bdaddr(BD_ADDR peer_addr);
347extern BOOLEAN bta_ag_other_scb_open(
tBTA_AG_SCB *p_curr_scb);
350extern BOOLEAN bta_ag_hdl_event(
BT_HDR *p_msg);
351extern void bta_ag_collision_cback (tBTA_SYS_CONN_STATUS status, UINT8
id,
352 UINT8 app_id, BD_ADDR peer_addr);
353extern void bta_ag_resume_open (
tBTA_AG_SCB *p_scb);
356extern BOOLEAN bta_ag_add_record(UINT16 service_uuid,
char *p_service_name, UINT8 scn,
357 tBTA_AG_FEAT features, UINT32 sdp_handle);
360extern BOOLEAN bta_ag_sdp_find_attr(
tBTA_AG_SCB *p_scb, tBTA_SERVICE_MASK service);
361extern void bta_ag_do_disc(
tBTA_AG_SCB *p_scb, tBTA_SERVICE_MASK service);
365extern void bta_ag_start_servers(
tBTA_AG_SCB *p_scb, tBTA_SERVICE_MASK services);
366extern void bta_ag_close_servers(
tBTA_AG_SCB *p_scb, tBTA_SERVICE_MASK services);
367extern BOOLEAN bta_ag_is_server_closed (
tBTA_AG_SCB *p_scb);
372extern BOOLEAN bta_ag_sco_is_open(
tBTA_AG_SCB *p_scb);
373extern BOOLEAN bta_ag_sco_is_opening(
tBTA_AG_SCB *p_scb);
377extern void bta_ag_at_hsp_cback(
tBTA_AG_SCB *p_scb, UINT16 cmd, UINT8 arg_type,
378 char *p_arg, INT16 int_arg);
379extern void bta_ag_at_hfp_cback(
tBTA_AG_SCB *p_scb, UINT16 cmd, UINT8 arg_type,
380 char *p_arg, INT16 int_arg);
381extern void bta_ag_at_err_cback(
tBTA_AG_SCB *p_scb, BOOLEAN unknown,
char *p_arg);
382extern BOOLEAN bta_ag_inband_enabled(
tBTA_AG_SCB *p_scb);
383extern void bta_ag_send_call_inds(
tBTA_AG_SCB *p_scb, tBTA_AG_RES result);
403#if (BTM_WBS_INCLUDED == TRUE )
404extern void bta_ag_sco_codec_nego(
tBTA_AG_SCB *p_scb, BOOLEAN result);
405extern void bta_ag_codec_negotiate (
tBTA_AG_SCB *p_scb);
415#if (BTM_WBS_INCLUDED == TRUE )
420extern void bta_ag_set_esco_param(BOOLEAN set_reset,
tBTM_ESCO_PARAMS *param);