35#if (!defined BTTRC_INCLUDED || BTTRC_INCLUDED == FALSE)
36#define AVDT_DEBUG TRUE
38#define AVDT_DEBUG FALSE
50#if AVDT_REPORTING == TRUE
58#if ((AVDT_MULTIPLEXING == TRUE) && (AVDT_REPORTING == TRUE))
59#define AVDT_PSC (AVDT_PSC_TRANS | AVDT_PSC_MUX | AVDT_PSC_REPORT | AVDT_PSC_DELAY_RPT)
60#define AVDT_LEG_PSC (AVDT_PSC_TRANS | AVDT_PSC_MUX | AVDT_PSC_REPORT)
63#if (AVDT_MULTIPLEXING == TRUE)
64#define AVDT_PSC (AVDT_PSC_TRANS | AVDT_PSC_MUX | AVDT_PSC_DELAY_RPT)
65#define AVDT_LEG_PSC (AVDT_PSC_TRANS | AVDT_PSC_MUX)
68#if (AVDT_REPORTING == TRUE)
69#define AVDT_PSC (AVDT_PSC_TRANS | AVDT_PSC_REPORT | AVDT_PSC_DELAY_RPT)
70#define AVDT_LEG_PSC (AVDT_PSC_TRANS | AVDT_PSC_REPORT)
72#define AVDT_PSC (AVDT_PSC_TRANS | AVDT_PSC_DELAY_RPT)
73#define AVDT_LEG_PSC (AVDT_PSC_TRANS)
81#define AVDT_CLOSE_ACP 0
82#define AVDT_CLOSE_INT 1
83#define AVDT_OPEN_ACP 2
84#define AVDT_OPEN_INT 3
87#define AVDT_VERIFY_OPEN 0
88#define AVDT_VERIFY_STREAMING 1
89#define AVDT_VERIFY_SUSPEND 2
90#define AVDT_VERIFY_START 3
93#define AVDT_CCB_MKR 0x80
96#define AVDT_HDR_OFFSET (L2CAP_MIN_OFFSET + AVDT_NUM_SEPS)
106#define AVDT_MSG_OFFSET (L2CAP_MIN_OFFSET + AVDT_NUM_SEPS + AVDT_LEN_TYPE_START)
109#define AVDT_SCB_TC_CONN_TOUT 10
112#define AVDT_SCB_TC_DISC_TOUT 10
116#define AVDT_RET_MAX 1
133 AVDT_CCB_HDL_DISCOVER_CMD,
134 AVDT_CCB_HDL_DISCOVER_RSP,
135 AVDT_CCB_HDL_GETCAP_CMD,
136 AVDT_CCB_HDL_GETCAP_RSP,
137 AVDT_CCB_HDL_START_CMD,
138 AVDT_CCB_HDL_START_RSP,
139 AVDT_CCB_HDL_SUSPEND_CMD,
140 AVDT_CCB_HDL_SUSPEND_RSP,
141 AVDT_CCB_SND_DISCOVER_CMD,
142 AVDT_CCB_SND_DISCOVER_RSP,
143 AVDT_CCB_SND_GETCAP_CMD,
144 AVDT_CCB_SND_GETCAP_RSP,
145 AVDT_CCB_SND_START_CMD,
146 AVDT_CCB_SND_START_RSP,
147 AVDT_CCB_SND_SUSPEND_CMD,
148 AVDT_CCB_SND_SUSPEND_RSP,
161 AVDT_CCB_SET_DISCONN,
169#define AVDT_CCB_IGNORE AVDT_CCB_NUM_ACTIONS
173 AVDT_CCB_API_DISCOVER_REQ_EVT,
174 AVDT_CCB_API_GETCAP_REQ_EVT,
175 AVDT_CCB_API_START_REQ_EVT,
176 AVDT_CCB_API_SUSPEND_REQ_EVT,
177 AVDT_CCB_API_DISCOVER_RSP_EVT,
178 AVDT_CCB_API_GETCAP_RSP_EVT,
179 AVDT_CCB_API_START_RSP_EVT,
180 AVDT_CCB_API_SUSPEND_RSP_EVT,
181 AVDT_CCB_API_CONNECT_REQ_EVT,
182 AVDT_CCB_API_DISCONNECT_REQ_EVT,
183 AVDT_CCB_MSG_DISCOVER_CMD_EVT,
184 AVDT_CCB_MSG_GETCAP_CMD_EVT,
185 AVDT_CCB_MSG_START_CMD_EVT,
186 AVDT_CCB_MSG_SUSPEND_CMD_EVT,
187 AVDT_CCB_MSG_DISCOVER_RSP_EVT,
188 AVDT_CCB_MSG_GETCAP_RSP_EVT,
189 AVDT_CCB_MSG_START_RSP_EVT,
190 AVDT_CCB_MSG_SUSPEND_RSP_EVT,
192 AVDT_CCB_SENDMSG_EVT,
193 AVDT_CCB_RET_TOUT_EVT,
194 AVDT_CCB_RSP_TOUT_EVT,
195 AVDT_CCB_IDLE_TOUT_EVT,
196 AVDT_CCB_UL_OPEN_EVT,
197 AVDT_CCB_UL_CLOSE_EVT,
198 AVDT_CCB_LL_OPEN_EVT,
199 AVDT_CCB_LL_CLOSE_EVT,
218 AVDT_SCB_HDL_ABORT_CMD,
219 AVDT_SCB_HDL_ABORT_RSP,
220 AVDT_SCB_HDL_CLOSE_CMD,
221 AVDT_SCB_HDL_CLOSE_RSP,
222 AVDT_SCB_HDL_GETCONFIG_CMD,
223 AVDT_SCB_HDL_GETCONFIG_RSP,
224 AVDT_SCB_HDL_OPEN_CMD,
225 AVDT_SCB_HDL_OPEN_REJ,
226 AVDT_SCB_HDL_OPEN_RSP,
229 AVDT_SCB_HDL_RECONFIG_CMD,
230 AVDT_SCB_HDL_RECONFIG_RSP,
231 AVDT_SCB_HDL_SECURITY_CMD,
232 AVDT_SCB_HDL_SECURITY_RSP,
233 AVDT_SCB_HDL_SETCONFIG_CMD,
234 AVDT_SCB_HDL_SETCONFIG_REJ,
235 AVDT_SCB_HDL_SETCONFIG_RSP,
236 AVDT_SCB_HDL_START_CMD,
237 AVDT_SCB_HDL_START_RSP,
238 AVDT_SCB_HDL_SUSPEND_CMD,
239 AVDT_SCB_HDL_SUSPEND_RSP,
240 AVDT_SCB_HDL_TC_CLOSE,
241#if AVDT_REPORTING == TRUE
242 AVDT_SCB_HDL_TC_CLOSE_STO,
244 AVDT_SCB_HDL_TC_OPEN,
245#if AVDT_REPORTING == TRUE
246 AVDT_SCB_HDL_TC_OPEN_STO,
248 AVDT_SCB_SND_DELAY_RPT_REQ,
249 AVDT_SCB_HDL_DELAY_RPT_CMD,
250 AVDT_SCB_HDL_DELAY_RPT_RSP,
251 AVDT_SCB_HDL_WRITE_REQ,
252 AVDT_SCB_SND_ABORT_REQ,
253 AVDT_SCB_SND_ABORT_RSP,
254 AVDT_SCB_SND_CLOSE_REQ,
255 AVDT_SCB_SND_STREAM_CLOSE,
256 AVDT_SCB_SND_CLOSE_RSP,
257 AVDT_SCB_SND_GETCONFIG_REQ,
258 AVDT_SCB_SND_GETCONFIG_RSP,
259 AVDT_SCB_SND_OPEN_REQ,
260 AVDT_SCB_SND_OPEN_RSP,
261 AVDT_SCB_SND_RECONFIG_REQ,
262 AVDT_SCB_SND_RECONFIG_RSP,
263 AVDT_SCB_SND_SECURITY_REQ,
264 AVDT_SCB_SND_SECURITY_RSP,
265 AVDT_SCB_SND_SETCONFIG_REQ,
266 AVDT_SCB_SND_SETCONFIG_REJ,
267 AVDT_SCB_SND_SETCONFIG_RSP,
268 AVDT_SCB_SND_TC_CLOSE,
273 AVDT_SCB_REJ_NOT_IN_USE,
277 AVDT_SCB_CHK_SND_PKT,
284#define AVDT_SCB_IGNORE AVDT_SCB_NUM_ACTIONS
288 AVDT_SCB_API_REMOVE_EVT,
289 AVDT_SCB_API_WRITE_REQ_EVT,
290 AVDT_SCB_API_GETCONFIG_REQ_EVT,
291 AVDT_SCB_API_DELAY_RPT_REQ_EVT,
292 AVDT_SCB_API_SETCONFIG_REQ_EVT,
293 AVDT_SCB_API_OPEN_REQ_EVT,
294 AVDT_SCB_API_CLOSE_REQ_EVT,
295 AVDT_SCB_API_RECONFIG_REQ_EVT,
296 AVDT_SCB_API_SECURITY_REQ_EVT,
297 AVDT_SCB_API_ABORT_REQ_EVT,
298 AVDT_SCB_API_GETCONFIG_RSP_EVT,
299 AVDT_SCB_API_SETCONFIG_RSP_EVT,
300 AVDT_SCB_API_SETCONFIG_REJ_EVT,
301 AVDT_SCB_API_OPEN_RSP_EVT,
302 AVDT_SCB_API_CLOSE_RSP_EVT,
303 AVDT_SCB_API_RECONFIG_RSP_EVT,
304 AVDT_SCB_API_SECURITY_RSP_EVT,
305 AVDT_SCB_API_ABORT_RSP_EVT,
306 AVDT_SCB_MSG_SETCONFIG_CMD_EVT,
307 AVDT_SCB_MSG_GETCONFIG_CMD_EVT,
308 AVDT_SCB_MSG_OPEN_CMD_EVT,
309 AVDT_SCB_MSG_START_CMD_EVT,
310 AVDT_SCB_MSG_SUSPEND_CMD_EVT,
311 AVDT_SCB_MSG_CLOSE_CMD_EVT,
312 AVDT_SCB_MSG_ABORT_CMD_EVT,
313 AVDT_SCB_MSG_RECONFIG_CMD_EVT,
314 AVDT_SCB_MSG_SECURITY_CMD_EVT,
315 AVDT_SCB_MSG_DELAY_RPT_CMD_EVT,
316 AVDT_SCB_MSG_DELAY_RPT_RSP_EVT,
317 AVDT_SCB_MSG_SETCONFIG_RSP_EVT,
318 AVDT_SCB_MSG_GETCONFIG_RSP_EVT,
319 AVDT_SCB_MSG_OPEN_RSP_EVT,
320 AVDT_SCB_MSG_START_RSP_EVT,
321 AVDT_SCB_MSG_SUSPEND_RSP_EVT,
322 AVDT_SCB_MSG_CLOSE_RSP_EVT,
323 AVDT_SCB_MSG_ABORT_RSP_EVT,
324 AVDT_SCB_MSG_RECONFIG_RSP_EVT,
325 AVDT_SCB_MSG_SECURITY_RSP_EVT,
326 AVDT_SCB_MSG_SETCONFIG_REJ_EVT,
327 AVDT_SCB_MSG_OPEN_REJ_EVT,
328 AVDT_SCB_MSG_START_REJ_EVT,
329 AVDT_SCB_MSG_SUSPEND_REJ_EVT,
330 AVDT_SCB_TC_TOUT_EVT,
331 AVDT_SCB_TC_OPEN_EVT,
332 AVDT_SCB_TC_CLOSE_EVT,
333 AVDT_SCB_TC_CONG_EVT,
334 AVDT_SCB_TC_DATA_EVT,
335 AVDT_SCB_CC_CLOSE_EVT
339#if AVDT_REPORTING == TRUE
341#define AVDT_NUM_RT_TBL ((AVDT_NUM_SEPS<<1) + 1)
343#define AVDT_NUM_RT_TBL (AVDT_NUM_SEPS + 1)
350#define AVDT_AD_ST_UNUSED 0
351#define AVDT_AD_ST_IDLE 1
352#define AVDT_AD_ST_ACP 2
353#define AVDT_AD_ST_INT 3
354#define AVDT_AD_ST_CONN 4
355#define AVDT_AD_ST_CFG 5
356#define AVDT_AD_ST_OPEN 6
357#define AVDT_AD_ST_SEC_INT 7
358#define AVDT_AD_ST_SEC_ACP 8
361#define AVDT_L2C_CFG_IND_DONE (1<<0)
362#define AVDT_L2C_CFG_CFM_DONE (1<<1)
363#define AVDT_L2C_CFG_CONN_INT (1<<2)
364#define AVDT_L2C_CFG_CONN_ACP (1<<3)
368#define AVDT_AD_FAILED L2CAP_DW_FAILED
369#define AVDT_AD_SUCCESS L2CAP_DW_SUCCESS
370#define AVDT_AD_CONGESTED L2CAP_DW_CONGESTED
392 tAVDT_CTRL_CBACK *p_cback;
400 tAVDT_CTRL_CBACK *p_cback;
406 tAVDT_CTRL_CBACK *p_cback;
412 tAVDT_CTRL_CBACK *p_cback;
429 TIMER_LIST_ENT timer_entry;
432 tAVDT_CTRL_CBACK *proc_cback;
433 tAVDT_CTRL_CBACK *p_conn_cback;
456#if AVDT_MULTIPLEXING == TRUE
487 TIMER_LIST_ENT timer_entry;
500#if AVDT_MULTIPLEXING == TRUE
506 UINT32 media_buf_len;
537 UINT8 lcid_tbl[MAX_L2CAP_CHANNELS];
546 tAVDTC_CTRL_CBACK *p_conf_cback;
547 tAVDT_CCB_ACTION *p_ccb_act;
548 tAVDT_SCB_ACTION *p_scb_act;
549 tAVDT_CTRL_CBACK *p_conn_cback;
559extern void avdt_ccb_init(
void);
561extern tAVDT_CCB *avdt_ccb_by_bd(BD_ADDR bd_addr);
562extern tAVDT_CCB *avdt_ccb_alloc(BD_ADDR bd_addr);
564extern UINT8 avdt_ccb_to_idx(
tAVDT_CCB *p_ccb);
565extern tAVDT_CCB *avdt_ccb_by_idx(UINT8 idx);
606extern void avdt_scb_init(
void);
609extern UINT8 avdt_scb_to_hdl(
tAVDT_SCB *p_scb);
610extern tAVDT_SCB *avdt_scb_by_hdl(UINT8 hdl);
611extern UINT8 avdt_scb_verify(
tAVDT_CCB *p_ccb, UINT8 state, UINT8 *p_seid, UINT16 num_seid, UINT8 *p_err_code);
612extern void avdt_scb_peer_seid_list(
tAVDT_MULTI *p_multi);
613extern UINT32 avdt_scb_gen_ssrc(
tAVDT_SCB *p_scb);
674extern void avdt_scb_queue_frags(
tAVDT_SCB *p_scb, UINT8 **pp_data, UINT32 *p_data_len,
BUFFER_Q *pq);
678extern void avdt_msg_send_cmd(
tAVDT_CCB *p_ccb,
void *p_scb, UINT8 sig_id,
tAVDT_MSG *p_params);
685extern void avdt_ad_init(
void);
686extern UINT8 avdt_ad_type_to_tcid(UINT8 type,
tAVDT_SCB *p_scb);
688extern tAVDT_TC_TBL *avdt_ad_tc_tbl_by_lcid(UINT16 lcid);
691extern void avdt_ad_tc_close_ind(
tAVDT_TC_TBL *p_tbl, UINT16 reason);
693extern void avdt_ad_tc_cong_ind(
tAVDT_TC_TBL *p_tbl, BOOLEAN is_congested);
697extern void avdt_ad_open_req(UINT8 type,
tAVDT_CCB *p_ccb,
tAVDT_SCB *p_scb, UINT8 role);
700extern void avdt_process_timeout(TIMER_LIST_ENT *p_tle);
709#define AVDT_BLD_LAYERSPEC(ls, msg, label) \
710 ls = (((label) << 4) | (msg))
712#define AVDT_LAYERSPEC_LABEL(ls) ((UINT8)((ls) >> 4))
714#define AVDT_LAYERSPEC_MSG(ls) ((UINT8)((ls) & 0x000F))
727#if AVDT_DYNAMIC_MEMORY == FALSE
730AVDT_API
extern tAVDT_CB *avdt_cb_ptr;
731#define avdt_cb (*avdt_cb_ptr)
739extern const UINT8 avdt_msg_rej_2_evt[];