1/******************************************************************************
2 *
3 *  Copyright (C) 2006-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 interface file for device mananger callout functions.
22 *
23 ******************************************************************************/
24#ifndef BTA_DM_CO_H
25#define BTA_DM_CO_H
26
27#include "bta_sys.h"
28
29
30#ifndef BTA_SCO_OUT_PKT_SIZE
31    #define BTA_SCO_OUT_PKT_SIZE    BTM_SCO_DATA_SIZE_MAX
32#endif
33
34#define BTA_SCO_CODEC_PCM       0       /* used for regular SCO */
35#define BTA_SCO_CODEC_SBC       1       /* used for WBS */
36typedef UINT8   tBTA_SCO_CODEC_TYPE;
37
38#define BTA_DM_SCO_SAMP_RATE_8K     8000
39#define BTA_DM_SCO_SAMP_RATE_16K    16000
40
41/* SCO codec information */
42typedef struct
43{
44    tBTA_SCO_CODEC_TYPE   codec_type;
45}tBTA_CODEC_INFO;
46
47#define BTA_DM_SCO_ROUTE_PCM	BTM_SCO_ROUTE_PCM
48#define BTA_DM_SCO_ROUTE_HCI	BTM_SCO_ROUTE_HCI
49
50typedef tBTM_SCO_ROUTE_TYPE tBTA_DM_SCO_ROUTE_TYPE;
51
52
53/*****************************************************************************
54**  Function Declarations
55*****************************************************************************/
56
57/*******************************************************************************
58**
59** Function         bta_dm_co_io_req
60**
61** Description      This callout function is executed by DM to get IO capabilities
62**                  of the local device for the Simple Pairing process
63**
64** Parameters       bd_addr  - The peer device
65**                  *p_io_cap - The local Input/Output capabilities
66**                  *p_oob_data - TRUE, if OOB data is available for the peer device.
67**                  *p_auth_req - TRUE, if MITM protection is required.
68**
69** Returns          void.
70**
71*******************************************************************************/
72BTA_API extern void bta_dm_co_io_req(BD_ADDR bd_addr, tBTA_IO_CAP *p_io_cap,
73                                     tBTA_OOB_DATA *p_oob_data, tBTA_AUTH_REQ *p_auth_req,
74                                     BOOLEAN is_orig);
75
76/*******************************************************************************
77**
78** Function         bta_dm_co_io_rsp
79**
80** Description      This callout function is executed by DM to report IO capabilities
81**                  of the peer device for the Simple Pairing process
82**
83** Parameters       bd_addr  - The peer device
84**                  io_cap - The remote Input/Output capabilities
85**                  oob_data - TRUE, if OOB data is available for the peer device.
86**                  auth_req - TRUE, if MITM protection is required.
87**
88** Returns          void.
89**
90*******************************************************************************/
91BTA_API extern void bta_dm_co_io_rsp(BD_ADDR bd_addr, tBTA_IO_CAP io_cap,
92                                     tBTA_OOB_DATA oob_data, tBTA_AUTH_REQ auth_req);
93
94/*******************************************************************************
95**
96** Function         bta_dm_co_lk_upgrade
97**
98** Description      This callout function is executed by DM to check if the
99**                  platform wants allow link key upgrade
100**
101** Parameters       bd_addr  - The peer device
102**                  *p_upgrade - TRUE, if link key upgrade is desired.
103**
104** Returns          void.
105**
106*******************************************************************************/
107BTA_API extern void  bta_dm_co_lk_upgrade(BD_ADDR bd_addr, BOOLEAN *p_upgrade );
108
109/*******************************************************************************
110**
111** Function         bta_dm_co_loc_oob
112**
113** Description      This callout function is executed by DM to report the OOB
114**                  data of the local device for the Simple Pairing process
115**
116** Parameters       valid - TRUE, if the local OOB data is retrieved from LM
117**                  c     - Simple Pairing Hash C
118**                  r     - Simple Pairing Randomnizer R
119**
120** Returns          void.
121**
122*******************************************************************************/
123BTA_API extern void bta_dm_co_loc_oob(BOOLEAN valid, BT_OCTET16 c, BT_OCTET16 r);
124
125/*******************************************************************************
126**
127** Function         bta_dm_co_rmt_oob
128**
129** Description      This callout function is executed by DM to request the OOB
130**                  data for the remote device for the Simple Pairing process
131**
132** Parameters       bd_addr  - The peer device
133**
134** Returns          void.
135**
136*******************************************************************************/
137BTA_API extern void bta_dm_co_rmt_oob(BD_ADDR bd_addr);
138
139/*****************************************************************************
140**  SCO over HCI Function Declarations
141*****************************************************************************/
142/*******************************************************************************
143**
144** Function         bta_dm_sco_co_init
145**
146** Description      This function can be used by the phone to initialize audio
147**                  codec or for other initialization purposes before SCO connection
148**                  is opened.
149**
150**
151** Returns          Void.
152**
153*******************************************************************************/
154BTA_API extern tBTA_DM_SCO_ROUTE_TYPE bta_dm_sco_co_init(UINT32 rx_bw, UINT32 tx_bw,
155                                                         tBTA_CODEC_INFO *p_codec_info, UINT8 app_id);
156
157
158/*******************************************************************************
159**
160** Function         bta_dm_sco_co_open
161**
162** Description      This function is executed when a SCO connection is open.
163**
164**
165** Returns          void
166**
167*******************************************************************************/
168BTA_API extern void bta_dm_sco_co_open(UINT16 handle, UINT8 pkt_size, UINT16 event);
169
170/*******************************************************************************
171**
172** Function         bta_dm_sco_co_close
173**
174** Description      This function is called when a SCO connection is closed
175**
176**
177** Returns          void
178**
179*******************************************************************************/
180BTA_API extern void bta_dm_sco_co_close(void);
181
182/*******************************************************************************
183**
184** Function         bta_dm_sco_co_out_data
185**
186** Description      This function is called to send SCO data over HCI.
187**
188** Returns          void
189**
190*******************************************************************************/
191BTA_API extern void bta_dm_sco_co_out_data(BT_HDR  **p_buf);
192
193/*******************************************************************************
194**
195** Function         bta_dm_sco_co_in_data
196**
197** Description      This function is called to send incoming SCO data to application.
198**
199** Returns          void
200**
201*******************************************************************************/
202BTA_API extern void bta_dm_sco_co_in_data(BT_HDR  *p_buf, tBTM_SCO_DATA_FLAG status);
203
204
205
206/*******************************************************************************
207**
208** Function         bta_dm_co_ble_io_req
209**
210** Description      This callout function is executed by DM to get BLE IO capabilities
211**                  before SMP pairing gets going.
212**
213** Parameters       bd_addr  - The peer device
214**                  *p_io_cap - The local Input/Output capabilities
215**                  *p_oob_data - TRUE, if OOB data is available for the peer device.
216**                  *p_auth_req -  Auth request setting (Bonding and MITM required or not)
217**                  *p_max_key_size - max key size local device supported.
218**                  *p_init_key - initiator keys.
219**                  *p_resp_key - responder keys.
220**
221** Returns          void.
222**
223*******************************************************************************/
224BTA_API extern void bta_dm_co_ble_io_req(BD_ADDR bd_addr,  tBTA_IO_CAP *p_io_cap,
225                                        tBTA_OOB_DATA *p_oob_data,
226                                        tBTA_LE_AUTH_REQ *p_auth_req,
227                                        UINT8 *p_max_key_size,
228                                        tBTA_LE_KEY_TYPE *p_init_key,
229                                        tBTA_LE_KEY_TYPE  *p_resp_key );
230
231
232/*******************************************************************************
233**
234** Function         bta_dm_co_ble_local_key_reload
235**
236** Description      This callout function is to load the local BLE keys if available
237**                  on the device.
238**
239** Parameters       none
240**
241** Returns          void.
242**
243*******************************************************************************/
244BTA_API extern void bta_dm_co_ble_load_local_keys (tBTA_DM_BLE_LOCAL_KEY_MASK *p_key_mask, BT_OCTET16 er,
245                                                   tBTA_BLE_LOCAL_ID_KEYS *p_id_keys);
246
247// btla-specific ++
248/*******************************************************************************
249**
250** Function         bta_dm_co_ble_io_req
251**
252** Description      This callout function is executed by DM to get BLE IO capabilities
253**                  before SMP pairing gets going.
254**
255** Parameters       bd_addr  - The peer device
256**                  *p_io_cap - The local Input/Output capabilities
257**                  *p_oob_data - TRUE, if OOB data is available for the peer device.
258**                  *p_auth_req -  Auth request setting (Bonding and MITM required or not)
259**                  *p_max_key_size - max key size local device supported.
260**                  *p_init_key - initiator keys.
261**                  *p_resp_key - responder keys.
262**
263** Returns          void.
264**
265*******************************************************************************/
266BTA_API extern void bta_dm_co_ble_io_req(BD_ADDR bd_addr,  tBTA_IO_CAP *p_io_cap,
267                         tBTA_OOB_DATA *p_oob_data,
268                         tBTA_LE_AUTH_REQ *p_auth_req,
269                         UINT8 *p_max_key_size,
270                         tBTA_LE_KEY_TYPE *p_init_key,
271                         tBTA_LE_KEY_TYPE  *p_resp_key );
272// btla-specific --
273
274#endif
275