1/******************************************************************************
2 *
3 *  Copyright (C) 2003-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 *  This is the API implementation file for the BTA device manager.
22 *
23 ******************************************************************************/
24
25#include "gki.h"
26#include "bd.h"
27#include "bta_sys.h"
28#include "bta_api.h"
29#include "bta_dm_int.h"
30#include <string.h>
31#include "bta_dm_ci.h"
32
33
34#if (BTM_OOB_INCLUDED == TRUE)
35/*******************************************************************************
36**
37** Function         bta_dm_ci_io_req
38**
39** Description      This function must be called in response to function
40**                  bta_dm_co_io_req(), if *p_oob_data to BTA_OOB_UNKNOWN
41**                  by bta_dm_co_io_req().
42**
43** Returns          void
44**
45*******************************************************************************/
46void bta_dm_ci_io_req(BD_ADDR bd_addr, tBTA_IO_CAP io_cap, tBTA_OOB_DATA oob_data,
47                                     tBTA_AUTH_REQ auth_req)
48
49{
50    tBTA_DM_CI_IO_REQ    *p_msg;
51
52    if ((p_msg = (tBTA_DM_CI_IO_REQ *) GKI_getbuf(sizeof(tBTA_DM_CI_IO_REQ))) != NULL)
53    {
54        p_msg->hdr.event = BTA_DM_CI_IO_REQ_EVT;
55        bdcpy(p_msg->bd_addr, bd_addr);
56        p_msg->io_cap   = io_cap;
57        p_msg->oob_data = oob_data;
58        p_msg->auth_req = auth_req;
59        bta_sys_sendmsg(p_msg);
60    }
61}
62
63/*******************************************************************************
64**
65** Function         bta_dm_ci_rmt_oob
66**
67** Description      This function must be called in response to function
68**                  bta_dm_co_rmt_oob() to provide the OOB data associated
69**                  with the remote device.
70**
71** Returns          void
72**
73*******************************************************************************/
74void bta_dm_ci_rmt_oob(BOOLEAN accept, BD_ADDR bd_addr, BT_OCTET16 c, BT_OCTET16 r)
75{
76    tBTA_DM_CI_RMT_OOB    *p_msg;
77
78    if ((p_msg = (tBTA_DM_CI_RMT_OOB *) GKI_getbuf(sizeof(tBTA_DM_CI_RMT_OOB))) != NULL)
79    {
80        p_msg->hdr.event = BTA_DM_CI_RMT_OOB_EVT;
81        bdcpy(p_msg->bd_addr, bd_addr);
82        p_msg->accept    = accept;
83        memcpy(p_msg->c, c, BT_OCTET16_LEN);
84        memcpy(p_msg->r, r, BT_OCTET16_LEN);
85        bta_sys_sendmsg(p_msg);
86    }
87}
88#endif /* BTM_OOB_INCLUDED */
89
90#if (BTM_SCO_HCI_INCLUDED == TRUE)
91/*******************************************************************************
92**
93** Function         bta_dm_sco_ci_data_ready
94**
95** Description      This function sends an event to indicating that the phone
96**                  has SCO data ready.
97**
98** Parameters       event: is obtained from bta_dm_sco_co_open() function, which
99**                          is the BTA event we want to send back to BTA module
100**                          when there is encoded data ready.
101**                  sco_handle: is the BTA sco handle which indicate a specific
102**                           SCO connection.
103** Returns          void
104**
105*******************************************************************************/
106void bta_dm_sco_ci_data_ready(UINT16 event, UINT16 sco_handle)
107{
108    BT_HDR  *p_buf;
109
110    if ((p_buf = (BT_HDR *) GKI_getbuf(sizeof(BT_HDR))) != NULL)
111    {
112        p_buf->event = event;
113        p_buf->layer_specific = sco_handle;
114
115        bta_sys_sendmsg(p_buf);
116    }
117}
118#endif
119