/******************************************************************************* ** ** Function avdt_ccb_ll_closed ** ** Description Clear commands from and deallocate CCB. ** ** ** Returns void. ** *******************************************************************************/ void avdt_ccb_ll_closed(tAVDT_CCB *p_ccb, tAVDT_CCB_EVT *p_data) { tAVDT_CTRL_CBACK *p_cback; BD_ADDR bd_addr; tAVDT_CTRL avdt_ctrl; UNUSED(p_data); /* clear any pending commands */ avdt_ccb_clear_cmds(p_ccb, NULL); /* save callback pointer, bd addr */ p_cback = p_ccb->p_conn_cback; if (!p_cback) p_cback = avdt_cb.p_conn_cback; memcpy(bd_addr, p_ccb->peer_addr, BD_ADDR_LEN); /* dealloc ccb */ avdt_ccb_dealloc(p_ccb, NULL); /* call callback */ if (p_cback) { avdt_ctrl.hdr.err_code = 0; (*p_cback)(0, bd_addr, AVDT_DISCONNECT_IND_EVT, &avdt_ctrl); } }
/******************************************************************************* ** ** Function avdt_ccb_do_disconn ** ** Description Do action associated with AVDT_DisconnectReq(). ** ** ** Returns void. ** *******************************************************************************/ void avdt_ccb_do_disconn(tAVDT_CCB *p_ccb, tAVDT_CCB_EVT *p_data) { /* clear any pending commands */ avdt_ccb_clear_cmds(p_ccb, NULL); /* close channel */ avdt_ccb_chan_close(p_ccb, NULL); }