29#include "bta_av_api.h"
33#define BTA_AV_DEBUG TRUE
41 BTA_AV_API_DISABLE_EVT = BTA_SYS_EVT_START(BTA_ID_AV),
42 BTA_AV_API_REMOTE_CMD_EVT,
43 BTA_AV_API_VENDOR_CMD_EVT,
44 BTA_AV_API_VENDOR_RSP_EVT,
45 BTA_AV_API_META_RSP_EVT,
46 BTA_AV_API_RC_CLOSE_EVT,
56 BTA_AV_API_RECONFIG_EVT,
57 BTA_AV_API_PROTECT_REQ_EVT,
58 BTA_AV_API_PROTECT_RSP_EVT,
59 BTA_AV_API_RC_OPEN_EVT,
60 BTA_AV_SRC_DATA_READY_EVT,
61 BTA_AV_CI_SETCONFIG_OK_EVT,
62 BTA_AV_CI_SETCONFIG_FAIL_EVT,
63 BTA_AV_SDP_DISC_OK_EVT,
64 BTA_AV_SDP_DISC_FAIL_EVT,
65 BTA_AV_STR_DISC_OK_EVT,
66 BTA_AV_STR_DISC_FAIL_EVT,
67 BTA_AV_STR_GETCAP_OK_EVT,
68 BTA_AV_STR_GETCAP_FAIL_EVT,
69 BTA_AV_STR_OPEN_OK_EVT,
70 BTA_AV_STR_OPEN_FAIL_EVT,
71 BTA_AV_STR_START_OK_EVT,
72 BTA_AV_STR_START_FAIL_EVT,
74 BTA_AV_STR_CONFIG_IND_EVT,
75 BTA_AV_STR_SECURITY_IND_EVT,
76 BTA_AV_STR_SECURITY_CFM_EVT,
77 BTA_AV_STR_WRITE_CFM_EVT,
78 BTA_AV_STR_SUSPEND_CFM_EVT,
79 BTA_AV_STR_RECONFIG_CFM_EVT,
80 BTA_AV_AVRC_TIMER_EVT,
81 BTA_AV_AVDT_CONNECT_EVT,
82 BTA_AV_AVDT_DISCONNECT_EVT,
83 BTA_AV_ROLE_CHANGE_EVT,
84 BTA_AV_AVDT_DELAY_RPT_EVT,
85 BTA_AV_ACP_CONNECT_EVT,
88 BTA_AV_API_ENABLE_EVT,
89 BTA_AV_API_REGISTER_EVT,
90 BTA_AV_API_DEREGISTER_EVT,
91 BTA_AV_API_DISCONNECT_EVT,
92 BTA_AV_CI_SRC_DATA_READY_EVT,
95 BTA_AV_SDP_AVRC_DISC_EVT,
96 BTA_AV_AVRC_CLOSE_EVT,
98 BTA_AV_DEREG_COMP_EVT,
99#if (AVDT_REPORTING == TRUE)
100 BTA_AV_AVDT_RPT_CONN_EVT,
102 BTA_AV_API_START_EVT,
107#define BTA_AV_FIRST_SM_EVT BTA_AV_API_DISABLE_EVT
108#define BTA_AV_LAST_SM_EVT BTA_AV_AVRC_NONE_EVT
111#define BTA_AV_FIRST_SSM_EVT BTA_AV_API_OPEN_EVT
114#define BTA_AV_FIRST_NSM_EVT BTA_AV_API_ENABLE_EVT
115#define BTA_AV_LAST_NSM_EVT BTA_AV_API_STOP_EVT
118#define BTA_AV_FIRST_A2S_API_EVT BTA_AV_API_START_EVT
119#define BTA_AV_FIRST_A2S_SSM_EVT BTA_AV_AP_START_EVT
121#define BTA_AV_LAST_EVT BTA_AV_API_STOP_EVT
124#define BTA_AV_NUM_SEPS 32
127#define BTA_AV_RC_HANDLE_NONE 0xFF
130#define BTA_AV_DISC_BUF_SIZE 1000
133#define BTA_AV_MEDIA_TYPE_IDX 1
136#define BTA_AV_SECURITY_MAX_LEN 400
139#define BTA_AV_QUEUE_DATA_CHK_NUM 5
142#define BTA_AV_NUM_LINKS AVDT_NUM_LINKS
144#define BTA_AV_CO_ID_TO_BE_STREAM(p, u32) {*(p)++ = (UINT8)((u32) >> 16); *(p)++ = (UINT8)((u32) >> 8); *(p)++ = (UINT8)(u32); }
145#define BTA_AV_BE_STREAM_TO_CO_ID(u32, p) {u32 = (((UINT32)(*((p) + 2))) + (((UINT32)(*((p) + 1))) << 8) + (((UINT32)(*(p))) << 16)); (p) += 3;}
148#define BTA_AV_MULTI_AV_SUPPORTED 0x01
149#define BTA_AV_MULTI_AV_IN_USE 0x02
157typedef BOOLEAN (*tBTA_AV_CO_INIT) (UINT8 *p_codec_type, UINT8 *p_codec_info,
158 UINT8 *p_num_protect, UINT8 *p_protect_info, UINT8 index);
160typedef void (*tBTA_AV_CO_DISC_RES) (tBTA_AV_HNDL hndl, UINT8 num_seps,
161 UINT8 num_snk, BD_ADDR addr);
163typedef UINT8 (*tBTA_AV_CO_GETCFG) (tBTA_AV_HNDL hndl, tBTA_AV_CODEC codec_type,
164 UINT8 *p_codec_info, UINT8 *p_sep_info_idx, UINT8 seid,
165 UINT8 *p_num_protect, UINT8 *p_protect_info);
166typedef void (*tBTA_AV_CO_SETCFG) (tBTA_AV_HNDL hndl, tBTA_AV_CODEC codec_type,
167 UINT8 *p_codec_info, UINT8 seid, BD_ADDR addr,
168 UINT8 num_protect, UINT8 *p_protect_info);
169typedef void (*tBTA_AV_CO_OPEN) (tBTA_AV_HNDL hndl,
170 tBTA_AV_CODEC codec_type, UINT8 *p_codec_info,
172typedef void (*tBTA_AV_CO_CLOSE) (tBTA_AV_HNDL hndl, tBTA_AV_CODEC codec_type, UINT16 mtu);
173typedef void (*tBTA_AV_CO_START) (tBTA_AV_HNDL hndl, tBTA_AV_CODEC codec_type);
174typedef void (*tBTA_AV_CO_STOP) (tBTA_AV_HNDL hndl, tBTA_AV_CODEC codec_type);
175typedef void * (*tBTA_AV_CO_DATAPATH) (tBTA_AV_CODEC codec_type,
176 UINT32 *p_len, UINT32 *p_timestamp);
177typedef void (*tBTA_AV_CO_DELAY) (tBTA_AV_HNDL hndl, UINT16 delay);
182 tBTA_AV_CO_INIT init;
183 tBTA_AV_CO_DISC_RES disc_res;
184 tBTA_AV_CO_GETCFG getcfg;
185 tBTA_AV_CO_SETCFG setcfg;
186 tBTA_AV_CO_OPEN open;
187 tBTA_AV_CO_CLOSE close;
188 tBTA_AV_CO_START start;
189 tBTA_AV_CO_STOP stop;
190 tBTA_AV_CO_DATAPATH data;
191 tBTA_AV_CO_DELAY delay;
198 tBTA_AV_CBACK *p_cback;
199 tBTA_AV_FEAT features;
207 char p_service_name[BTA_SERVICE_NAME_LEN+1];
219typedef UINT8 tBTA_AV_RS_RES;
227 tBTA_AV_RS_RES switch_res;
296 tBTA_AV_CODE rsp_code;
305 UINT8 codec_info[AVDT_CODEC_SIZE];
306 UINT8 *p_protect_info;
321 BOOLEAN recfg_needed;
380 tBTA_AV_CODEC codec_type;
385#define BTA_AV_ROLE_AD_INT 0x00
386#define BTA_AV_ROLE_AD_ACP 0x01
389#define BTA_AV_ROLE_START_ACP 0x00
390#define BTA_AV_ROLE_START_INT 0x10
392#define BTA_AV_ROLE_SUSPEND 0x20
393#define BTA_AV_ROLE_SUSPEND_OPT 0x40
419typedef void (tBTA_AV_VDP_DATA_ACT)(
void *p_scb);
423 tBTA_AV_VDP_DATA_ACT *p_act;
439#define BTA_AV_Q_TAG_OPEN 0x01
440#define BTA_AV_Q_TAG_START 0x02
441#define BTA_AV_Q_TAG_STREAM 0x03
443#define BTA_AV_WAIT_ACP_CAPS_ON 0x01
444#define BTA_AV_WAIT_ACP_CAPS_STARTED 0x02
445#define BTA_AV_WAIT_ROLE_SW_RES_OPEN 0x04
446#define BTA_AV_WAIT_ROLE_SW_RES_START 0x08
447#define BTA_AV_WAIT_ROLE_SW_STARTED 0x10
448#define BTA_AV_WAIT_ROLE_SW_RETRY 0x20
449#define BTA_AV_WAIT_CHECK_RC 0x40
450#define BTA_AV_WAIT_ROLE_SW_FAILED 0x80
452#define BTA_AV_WAIT_ROLE_SW_BITS (BTA_AV_WAIT_ROLE_SW_RES_OPEN|BTA_AV_WAIT_ROLE_SW_RES_START|BTA_AV_WAIT_ROLE_SW_STARTED|BTA_AV_WAIT_ROLE_SW_RETRY)
455#define BTA_AV_COLL_INC_TMR 0x01
456#define BTA_AV_COLL_API_CALLED 0x02
461 const tBTA_AV_ACT *p_act_tbl;
469 TIMER_LIST_ENT timer;
475 tBTA_AV_CODEC codec_type;
478 tBTA_AV_STATUS open_status;
501 BOOLEAN deregistring;
509#define BTA_AV_RC_ROLE_MASK 0x10
510#define BTA_AV_RC_ROLE_INT 0x00
511#define BTA_AV_RC_ROLE_ACP 0x10
513#define BTA_AV_RC_CONN_MASK 0x20
523 tBTA_AV_FEAT peer_features;
525#define BTA_AV_NUM_RCB (BTA_AV_NUM_STRS + 2)
550 tBTA_AV_CBACK *p_cback;
553 TIMER_LIST_ENT sig_tmr;
554 TIMER_LIST_ENT acp_sig_tmr;
555 UINT32 sdp_a2d_handle;
556 UINT32 sdp_vdp_handle;
557 tBTA_AV_FEAT features;
567 UINT8 audio_open_cnt;
573 BOOLEAN sco_occupied;
585#if BTA_DYNAMIC_MEMORY == FALSE
589#define bta_av_cb (*bta_av_cb_ptr)
596extern UINT16 *p_bta_av_rc_id;
597extern UINT16 *p_bta_av_rc_id_ac;
599extern const tBTA_AV_SACT bta_av_a2d_action[];
601extern const tBTA_AV_SACT bta_av_vdp_action[];
602extern tAVDT_CTRL_CBACK *
const bta_av_dt_cback[];
608extern tBTA_AV_SCB *bta_av_hndl_to_scb(UINT16 handle);
609extern BOOLEAN bta_av_chk_start(
tBTA_AV_SCB *p_scb);
610extern void bta_av_restore_switch (
void);
611extern UINT16 bta_av_chk_mtu(
tBTA_AV_SCB *p_scb, UINT16 mtu);
612extern void bta_av_conn_cback(UINT8 handle, BD_ADDR bd_addr, UINT8 event,
tAVDT_CTRL *p_data);
613extern UINT8 bta_av_rc_create(
tBTA_AV_CB *p_cb, UINT8 role, UINT8 shdl, UINT8 lidx);
614extern void bta_av_proc_stream_evt(UINT8 handle, BD_ADDR bd_addr, UINT8 event,
tAVDT_CTRL *p_data,
int index);
615extern void bta_av_stream_chg(
tBTA_AV_SCB *p_scb, BOOLEAN started);
616extern BOOLEAN bta_av_is_scb_opening (
tBTA_AV_SCB *p_scb);
617extern BOOLEAN bta_av_is_scb_incoming (
tBTA_AV_SCB *p_scb);
618extern void bta_av_set_scb_sst_init (
tBTA_AV_SCB *p_scb);
619extern BOOLEAN bta_av_is_scb_init (
tBTA_AV_SCB *p_scb);
620extern void bta_av_set_scb_sst_incoming (
tBTA_AV_SCB *p_scb);
621extern tBTA_AV_LCB * bta_av_find_lcb(BD_ADDR addr, UINT8 op);
629extern BOOLEAN bta_av_hdl_event(
BT_HDR *p_msg);
630#if (defined(BTA_AV_DEBUG) && BTA_AV_DEBUG == TRUE)
631extern char *bta_av_evt_code(UINT16 evt_code);
633extern BOOLEAN bta_av_switch_if_needed(
tBTA_AV_SCB *p_scb);
634extern BOOLEAN bta_av_link_role_ok(
tBTA_AV_SCB *p_scb, UINT8 bits);
635extern BOOLEAN bta_av_is_rcfg_sst(
tBTA_AV_SCB *p_scb);
643extern void bta_av_rc_disc(UINT8 disc);
659extern tBTA_AV_RCB * bta_av_get_rcb_by_shdl(UINT8 shdl);
717extern void bta_av_reg_vdp (
tAVDT_CS *p_cs,
char *p_service_name,
void *p_data);