16ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach/******************************************************************************
26ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach *
36ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach *  Copyright (C) 1999-2012 Broadcom Corporation
46ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach *
56ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach *  Licensed under the Apache License, Version 2.0 (the "License");
66ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach *  you may not use this file except in compliance with the License.
76ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach *  You may obtain a copy of the License at:
86ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach *
96ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach *  http://www.apache.org/licenses/LICENSE-2.0
106ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach *
116ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach *  Unless required by applicable law or agreed to in writing, software
126ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach *  distributed under the License is distributed on an "AS IS" BASIS,
136ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
146ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach *  See the License for the specific language governing permissions and
156ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach *  limitations under the License.
166ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach *
176ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach ******************************************************************************/
186ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach
196ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach/******************************************************************************
206ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach *
216ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach *  This file contains the Bluetooth Manager (BTM) API function external
226ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach *  definitions.
236ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach *
246ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach ******************************************************************************/
25e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#ifndef BTM_API_H
26e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_API_H
27e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
28e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#include "bt_target.h"
29e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#include "sdp_api.h"
30e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#include "hcidefs.h"
31e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
32e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#if BLE_INCLUDED == TRUE && SMP_INCLUDED == TRUE
33e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#include "smp_api.h"
34e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#endif
35e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*****************************************************************************
36e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**  DEVICE CONTROL and COMMON
37e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*****************************************************************************/
38e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*****************************
39e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**  Device Control Constants
40e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach******************************/
41e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Maximum number of bytes allowed for vendor specific command parameters */
42e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_MAX_VENDOR_SPECIFIC_LEN  HCI_COMMAND_SIZE
43e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
44e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* BTM application return status codes */
45e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachenum
46e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
47e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_SUCCESS = 0,                    /* 0  Command succeeded                 */
48e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_CMD_STARTED,                    /* 1  Command started OK.               */
49e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_BUSY,                           /* 2  Device busy with another command  */
50e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_NO_RESOURCES,                   /* 3  No resources to issue command     */
51e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_MODE_UNSUPPORTED,               /* 4  Request for 1 or more unsupported modes */
52e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_ILLEGAL_VALUE,                  /* 5  Illegal parameter value           */
53e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_WRONG_MODE,                     /* 6  Device in wrong mode for request  */
54e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_UNKNOWN_ADDR,                   /* 7  Unknown remote BD address         */
55e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_DEVICE_TIMEOUT,                 /* 8  Device timeout                    */
56e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_BAD_VALUE_RET,                  /* 9  A bad value was received from HCI */
57e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_ERR_PROCESSING,                 /* 10 Generic error                     */
58e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_NOT_AUTHORIZED,                 /* 11 Authorization failed              */
59e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_DEV_RESET,                      /* 12 Device has been reset             */
60e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_CMD_STORED,                     /* 13 request is stored in control block */
61e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_ILLEGAL_ACTION,                 /* 14 state machine gets illegal command */
62e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_DELAY_CHECK,                    /* 15 delay the check on encryption */
63e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_SCO_BAD_LENGTH,                 /* 16 Bad SCO over HCI data length */
64e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_SUCCESS_NO_SECURITY,            /* 17 security passed, no security set  */
65e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_FAILED_ON_SECURITY ,             /* 18 security failed                   */
66e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_REPEATED_ATTEMPTS               /* 19 repeated attempts for LE security requests */
67e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach};
68e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tBTM_STATUS;
69e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
70e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*************************
71e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**  Device Control Types
72e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**************************/
73e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_DEVICE_ROLE_BR      0x01
74e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_DEVICE_ROLE_DUAL    0x02
75e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_MAX_DEVICE_ROLE     BTM_DEVICE_ROLE_DUAL
76e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tBTM_DEVICE_ROLE;
77e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
78e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Device name of peer (may be truncated to save space in BTM database) */
79e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tBTM_BD_NAME[BTM_MAX_REM_BD_NAME_LEN + 1];
80e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
81e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Structure returned with local version information */
82e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
83e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
84e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8       hci_version;
85e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT16      hci_revision;
86e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8       lmp_version;
87e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT16      manufacturer;
88e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT16      lmp_subversion;
89e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_VERSION_INFO;
90e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
91e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Structure returned with Vendor Specific Command complete callback */
92e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
93e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
94e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT16  opcode;
95e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT16  param_len;
96e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8   *p_param_buf;
97e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_VSC_CMPL;
98e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
99e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define  BTM_VSC_CMPL_DATA_SIZE  (BTM_MAX_VENDOR_SPECIFIC_LEN + sizeof(tBTM_VSC_CMPL))
100e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/**************************************************
101e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**  Device Control and General Callback Functions
102e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach***************************************************/
103e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Callback function for when device status changes. Appl must poll for
104e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** what the new state is (BTM_IsDeviceUp). The event occurs whenever the stack
105e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** has detected that the controller status has changed. This asynchronous event
106e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** is enabled/disabled by calling BTM_RegisterForDeviceStatusNotif().
107e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/
108e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachenum
109e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
110e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_DEV_STATUS_UP,
111e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_DEV_STATUS_DOWN,
112e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_DEV_STATUS_CMD_TOUT
113e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach};
114e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
115e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tBTM_DEV_STATUS;
116e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
117e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
118e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef void (tBTM_DEV_STATUS_CB) (tBTM_DEV_STATUS status);
119e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
120e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
121e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Callback function for when a vendor specific event occurs. The length and
122e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** array of returned parameter bytes are included. This asynchronous event
123e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** is enabled/disabled by calling BTM_RegisterForVSEvents().
124e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/
125e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef void (tBTM_VS_EVT_CB) (UINT8 len, UINT8 *p);
126e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
127e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
128e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* General callback function for notifying an application that a synchronous
129e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** BTM function is complete. The pointer contains the address of any returned data.
130e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/
131e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef void (tBTM_CMPL_CB) (void *p1);
132e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
133e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* VSC callback function for notifying an application that a synchronous
134e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** BTM function is complete. The pointer contains the address of any returned data.
135e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/
136e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef void (tBTM_VSC_CMPL_CB) (tBTM_VSC_CMPL *p1);
137e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
138e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Callback for apps to check connection and inquiry filters.
139e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameters are the BD Address of remote and the Dev Class of remote.
140e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** If the app returns none zero, the connection or inquiry result will be dropped.
141e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/
142e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 (tBTM_FILTER_CB) (BD_ADDR bd_addr, DEV_CLASS dc);
143e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
144e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*****************************************************************************
145e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**  DEVICE DISCOVERY - Inquiry, Remote Name, Discovery, Class of Device
146e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*****************************************************************************/
147e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************
148e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**  Device Discovery Constants
149e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach********************************/
150e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Discoverable modes */
151e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_NON_DISCOVERABLE        0
152e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_LIMITED_DISCOVERABLE    1
153e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_GENERAL_DISCOVERABLE    2
154e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_DISCOVERABLE_MASK       (BTM_LIMITED_DISCOVERABLE|BTM_GENERAL_DISCOVERABLE)
155e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_MAX_DISCOVERABLE        BTM_GENERAL_DISCOVERABLE
156e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* high byte for BLE Discoverable modes */
157e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_BLE_NON_DISCOVERABLE        0x0000
158e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_BLE_LIMITED_DISCOVERABLE    0x0100
159e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_BLE_GENERAL_DISCOVERABLE    0x0200
160e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_BLE_MAX_DISCOVERABLE        BTM_BLE_GENERAL_DISCOVERABLE
161e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_BLE_DISCOVERABLE_MASK       (BTM_BLE_NON_DISCOVERABLE|BTM_BLE_LIMITED_DISCOVERABLE|BTM_BLE_GENERAL_DISCOVERABLE)
162e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
163e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Connectable modes */
164e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_NON_CONNECTABLE         0
165e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_CONNECTABLE             1
166e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_CONNECTABLE_MASK        (BTM_NON_CONNECTABLE | BTM_CONNECTABLE)
167e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* high byte for BLE Connectable modes */
168e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_BLE_NON_CONNECTABLE      0x0000
169e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_BLE_CONNECTABLE          0x0100
170e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_BLE_MAX_CONNECTABLE      BTM_BLE_CONNECTABLE
171e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_BLE_CONNECTABLE_MASK    (BTM_BLE_NON_CONNECTABLE | BTM_BLE_CONNECTABLE)
172e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
173e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Inquiry modes
174e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach * Note: These modes are associated with the inquiry active values (BTM_*ACTIVE) */
175e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_GENERAL_INQUIRY         0
176e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_LIMITED_INQUIRY         1
177e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_BR_INQUIRY_MASK         0x0f
178e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* high byte of inquiry mode for BLE inquiry mode */
179e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_BLE_INQUIRY_NONE         0x00
180e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_BLE_GENERAL_INQUIRY      0x10
181e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_BLE_LIMITED_INQUIRY      0x20
182e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_BLE_INQUIRY_MASK         (BTM_BLE_GENERAL_INQUIRY|BTM_BLE_LIMITED_INQUIRY)
183e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
184e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* BTM_IsInquiryActive return values (Bit Mask)
185e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach * Note: These bit masks are associated with the inquiry modes (BTM_*_INQUIRY) */
186e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_INQUIRY_INACTIVE        0x0     /* no inquiry in progress */
187e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_GENERAL_INQUIRY_ACTIVE  0x1     /* a general inquiry is in progress */
188e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_LIMITED_INQUIRY_ACTIVE  0x2     /* a limited inquiry is in progress */
189e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_PERIODIC_INQUIRY_ACTIVE 0x8     /* a periodic inquiry is active */
190e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SSP_INQUIRY_ACTIVE      0x4     /* SSP is active, so inquiry is disallowed (work around for FW bug) */
191e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
192e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Define scan types */
193e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SCAN_TYPE_STANDARD      0
194e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SCAN_TYPE_INTERLACED    1       /* 1.2 devices only */
195e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
196e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Define inquiry results mode */
197e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_INQ_RESULT_STANDARD     0
198e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_INQ_RESULT_WITH_RSSI    1
199e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_INQ_RESULT_EXTENDED     2
200e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
201e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_INQ_RES_IGNORE_RSSI     0x7f    /* RSSI value not supplied (ignore it) */
202e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
203e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Inquiry Filter Condition types (see tBTM_INQ_PARMS) */
204e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_CLR_INQUIRY_FILTER          0                   /* Inquiry Filtering is turned off */
205e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_FILTER_COND_DEVICE_CLASS    HCI_FILTER_COND_DEVICE_CLASS /* Filter on device class */
206e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_FILTER_COND_BD_ADDR         HCI_FILTER_COND_BD_ADDR /* Filter on device addr */
207e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
208e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* State of the remote name retrieval during inquiry operations.
209e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Used in the tBTM_INQ_INFO structure, and returned in the
210e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** BTM_InqDbRead, BTM_InqDbFirst, and BTM_InqDbNext functions.
211e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** The name field is valid when the state returned is
212e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** BTM_INQ_RMT_NAME_DONE */
213e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_INQ_RMT_NAME_EMPTY      0
214e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_INQ_RMT_NAME_PENDING    1
215e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_INQ_RMT_NAME_DONE       2
216e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_INQ_RMT_NAME_FAILED     3
217e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
218e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*********************************
219e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach *** Class of Device constants ***
220e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach *********************************/
221e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_FORMAT_TYPE_1   0x00
222e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
223e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/****************************
224e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** minor device class field
225e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*****************************/
226e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
227e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* 0x00 is used as unclassified for all minor device classes */
228e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_UNCLASSIFIED          0x00
229e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
230e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* minor device class field for Computer Major Class */
231e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* #define BTM_COD_MINOR_UNCLASSIFIED       0x00    */
232e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_DESKTOP_WORKSTATION   0x04
233e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_SERVER_COMPUTER       0x08
234e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_LAPTOP                0x0C
235e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_HANDHELD_PC_PDA       0x10    /* clam shell */
236e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_PALM_SIZE_PC_PDA      0x14
237e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_WEARABLE_COMPUTER     0x18    /* watch sized */
238e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
239e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* minor device class field for Phone Major Class */
240e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* #define BTM_COD_MINOR_UNCLASSIFIED       0x00    */
241e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_CELLULAR              0x04
242e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_CORDLESS              0x08
243e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_SMART_PHONE           0x0C
244e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_WIRED_MDM_V_GTWY      0x10 /* wired modem or voice gatway */
245e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_ISDN_ACCESS           0x14
246e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
247e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* minor device class field for LAN Access Point Major Class */
248e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Load Factor Field bit 5-7 */
249e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_FULLY_AVAILABLE       0x00
250e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_1_17_UTILIZED         0x20
251e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_17_33_UTILIZED        0x40
252e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_33_50_UTILIZED        0x60
253e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_50_67_UTILIZED        0x80
254e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_67_83_UTILIZED        0xA0
255e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_83_99_UTILIZED        0xC0
256e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_NO_SERVICE_AVAILABLE  0xE0
257e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* sub-Field bit 2-4 */
258e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* #define BTM_COD_MINOR_UNCLASSIFIED       0x00    */
259e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
260e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* minor device class field for Audio/Video Major Class */
261e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* #define BTM_COD_MINOR_UNCLASSIFIED       0x00    */
262e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_CONFM_HEADSET         0x04
263e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_CONFM_HANDSFREE       0x08
264e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_MICROPHONE            0x10
265e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_LOUDSPEAKER           0x14
266e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_HEADPHONES            0x18
267e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_PORTABLE_AUDIO        0x1C
268e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_CAR_AUDIO             0x20
269e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_SET_TOP_BOX           0x24
270e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_HIFI_AUDIO            0x28
271e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_VCR                   0x2C
272e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_VIDEO_CAMERA          0x30
273e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_CAMCORDER             0x34
274e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_VIDEO_MONITOR         0x38
275e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_VIDDISP_LDSPKR        0x3C
276e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_VIDEO_CONFERENCING    0x40
277e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_GAMING_TOY            0x48
278e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
279e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* minor device class field for Peripheral Major Class */
280e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Bits 6-7 independently specify mouse, keyboard, or combo mouse/keyboard */
281e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_KEYBOARD              0x40
282e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_POINTING              0x80
283e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_COMBO                 0xC0
284e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Bits 2-5 OR'd with selection from bits 6-7 */
285e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* #define BTM_COD_MINOR_UNCLASSIFIED       0x00    */
286e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_JOYSTICK              0x04
287e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_GAMEPAD               0x08
288e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_REMOTE_CONTROL        0x0C
289e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_SENSING_DEVICE        0x10
290e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_DIGITIZING_TABLET     0x14
291e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_CARD_READER           0x18    /* e.g. SIM card reader */
292e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_DIGITAL_PAN           0x1C
293e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_HAND_SCANNER          0x20
294e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_HAND_GESTURAL_INPUT   0x24
295e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
296e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* minor device class field for Imaging Major Class */
297e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Bits 5-7 independently specify display, camera, scanner, or printer */
298e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_DISPLAY               0x10
299e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_CAMERA                0x20
300e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_SCANNER               0x40
301e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_PRINTER               0x80
302e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Bits 2-3 Reserved */
303e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* #define BTM_COD_MINOR_UNCLASSIFIED       0x00    */
304e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
305e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* minor device class field for Wearable Major Class */
306e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Bits 2-7 meaningful    */
307e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_WRIST_WATCH           0x04
308e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_PAGER                 0x08
309e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_JACKET                0x0C
310e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_HELMET                0x10
311e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_GLASSES               0x14
312e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
313e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* minor device class field for Toy Major Class */
314e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Bits 2-7 meaningful    */
315e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_ROBOT                 0x04
316e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_VEHICLE               0x08
317e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_DOLL_ACTION_FIGURE    0x0C
318e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_CONTROLLER            0x10
319e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_GAME                  0x14
320e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
321e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* minor device class field for Health Major Class */
322e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Bits 2-7 meaningful    */
323e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_BLOOD_MONITOR         0x04
324e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_THERMOMETER           0x08
325e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_WEIGHING_SCALE        0x0C
326e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_GLUCOSE_METER         0x10
327e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_PULSE_OXIMETER        0x14
328e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_HEART_PULSE_MONITOR   0x18
329e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_HEALTH_DATA_DISPLAY   0x1C
330e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_STEP_COUNTER          0x20
331e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_BODY_COM_ANALYZER     0x24
332e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_PEAK_FLOW_MONITOR     0x28
333e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_MEDICATION_MONITOR    0x2C
334e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_KNEE_PROSTHESIS       0x30
335e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_ANKLE_PROSTHESIS      0x34
336e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
337e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
338e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/***************************
339e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** major device class field
340e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach****************************/
341e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MAJOR_MISCELLANEOUS         0x00
342e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MAJOR_COMPUTER              0x01
343e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MAJOR_PHONE                 0x02
344e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MAJOR_LAN_ACCESS_PT         0x03
345e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MAJOR_AUDIO                 0x04
346e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MAJOR_PERIPHERAL            0x05
347e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MAJOR_IMAGING               0x06
348e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MAJOR_WEARABLE              0x07
349e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MAJOR_TOY                   0x08
350e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MAJOR_HEALTH                0x09
351e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MAJOR_UNCLASSIFIED          0x1F
352e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
353e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/***************************
354e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** service class fields
355e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach****************************/
356e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_SERVICE_LMTD_DISCOVER       0x0020
357e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_SERVICE_POSITIONING         0x0100
358e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_SERVICE_NETWORKING          0x0200
359e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_SERVICE_RENDERING           0x0400
360e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_SERVICE_CAPTURING           0x0800
361e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_SERVICE_OBJ_TRANSFER        0x1000
362e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_SERVICE_AUDIO               0x2000
363e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_SERVICE_TELEPHONY           0x4000
364e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_SERVICE_INFORMATION         0x8000
365e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
366e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* class of device field macros */
367e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_FORMAT_TYPE(u8, pd)         {u8  = pd[2]&0x03;}
368e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_CLASS(u8, pd)         {u8  = pd[2]&0xFC;}
369e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MAJOR_CLASS(u8, pd)         {u8  = pd[1]&0x1F;}
370e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_SERVICE_CLASS(u16, pd)      {u16 = pd[0]; u16<<=8; u16 += pd[1]&0xE0;}
371e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
372e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* to set the fields (assumes that format type is always 0) */
373e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define FIELDS_TO_COD(pd, mn, mj, sv) {pd[2] = mn; pd[1] =              \
374e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                       mj+ ((sv)&BTM_COD_SERVICE_CLASS_LO_B); \
375e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                       pd[0] = (sv) >> 8;}
376e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
377e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* the COD masks */
378e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_FORMAT_TYPE_MASK      0x03
379e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MINOR_CLASS_MASK      0xFC
380e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_MAJOR_CLASS_MASK      0x1F
381e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_SERVICE_CLASS_LO_B    0x00E0
382e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_COD_SERVICE_CLASS_MASK    0xFFE0
383e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
384e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
385e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* BTM service definitions
386e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Used for storing EIR data to bit mask
387e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/
388e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#ifndef BTM_EIR_UUID_LKUP_TBL
389e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachenum
390e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
391e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_EIR_UUID_SERVCLASS_SERVICE_DISCOVERY_SERVER,
392e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*    BTM_EIR_UUID_SERVCLASS_BROWSE_GROUP_DESCRIPTOR,   */
393e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*    BTM_EIR_UUID_SERVCLASS_PUBLIC_BROWSE_GROUP,       */
394e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_EIR_UUID_SERVCLASS_SERIAL_PORT,
395e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_EIR_UUID_SERVCLASS_LAN_ACCESS_USING_PPP,
396e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_EIR_UUID_SERVCLASS_DIALUP_NETWORKING,
397e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_EIR_UUID_SERVCLASS_IRMC_SYNC,
398e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_EIR_UUID_SERVCLASS_OBEX_OBJECT_PUSH,
399e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_EIR_UUID_SERVCLASS_OBEX_FILE_TRANSFER,
400e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_EIR_UUID_SERVCLASS_IRMC_SYNC_COMMAND,
401e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_EIR_UUID_SERVCLASS_HEADSET,
402e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_EIR_UUID_SERVCLASS_CORDLESS_TELEPHONY,
403e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_EIR_UUID_SERVCLASS_AUDIO_SOURCE,
404e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_EIR_UUID_SERVCLASS_AUDIO_SINK,
405e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_EIR_UUID_SERVCLASS_AV_REM_CTRL_TARGET,
406e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*    BTM_EIR_UUID_SERVCLASS_ADV_AUDIO_DISTRIBUTION,    */
407e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_EIR_UUID_SERVCLASS_AV_REMOTE_CONTROL,
408e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*    BTM_EIR_UUID_SERVCLASS_VIDEO_CONFERENCING,        */
409e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_EIR_UUID_SERVCLASS_INTERCOM,
410e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_EIR_UUID_SERVCLASS_FAX,
411e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_EIR_UUID_SERVCLASS_HEADSET_AUDIO_GATEWAY,
412e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*    BTM_EIR_UUID_SERVCLASS_WAP,                       */
413e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*    BTM_EIR_UUID_SERVCLASS_WAP_CLIENT,                */
414e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_EIR_UUID_SERVCLASS_PANU,
415e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_EIR_UUID_SERVCLASS_NAP,
416e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_EIR_UUID_SERVCLASS_GN,
417e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_EIR_UUID_SERVCLASS_DIRECT_PRINTING,
418e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*    BTM_EIR_UUID_SERVCLASS_REFERENCE_PRINTING,        */
419e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_EIR_UUID_SERVCLASS_IMAGING,
420e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_EIR_UUID_SERVCLASS_IMAGING_RESPONDER,
421e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_EIR_UUID_SERVCLASS_IMAGING_AUTO_ARCHIVE,
422e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_EIR_UUID_SERVCLASS_IMAGING_REF_OBJECTS,
423e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_EIR_UUID_SERVCLASS_HF_HANDSFREE,
424e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_EIR_UUID_SERVCLASS_AG_HANDSFREE,
425e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_EIR_UUID_SERVCLASS_DIR_PRT_REF_OBJ_SERVICE,
426e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*    BTM_EIR_UUID_SERVCLASS_REFLECTED_UI,              */
427e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_EIR_UUID_SERVCLASS_BASIC_PRINTING,
428e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_EIR_UUID_SERVCLASS_PRINTING_STATUS,
429e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_EIR_UUID_SERVCLASS_HUMAN_INTERFACE,
430e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_EIR_UUID_SERVCLASS_CABLE_REPLACEMENT,
431e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_EIR_UUID_SERVCLASS_HCRP_PRINT,
432e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_EIR_UUID_SERVCLASS_HCRP_SCAN,
433e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*    BTM_EIR_UUID_SERVCLASS_COMMON_ISDN_ACCESS,        */
434e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*    BTM_EIR_UUID_SERVCLASS_VIDEO_CONFERENCING_GW,     */
435e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*    BTM_EIR_UUID_SERVCLASS_UDI_MT,                    */
436e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*    BTM_EIR_UUID_SERVCLASS_UDI_TA,                    */
437e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*    BTM_EIR_UUID_SERVCLASS_VCP,                       */
438e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_EIR_UUID_SERVCLASS_SAP,
439e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_EIR_UUID_SERVCLASS_PBAP_PCE,
440e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_EIR_UUID_SERVCLASS_PBAP_PSE,
441e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*    BTM_EIR_UUID_SERVCLASS_TE_PHONE_ACCESS,           */
442e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*    BTM_EIR_UUID_SERVCLASS_ME_PHONE_ACCESS,           */
443e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_EIR_UUID_SERVCLASS_PHONE_ACCESS,
444e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_EIR_UUID_SERVCLASS_HEADSET_HS,
445e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_EIR_UUID_SERVCLASS_PNP_INFORMATION,
446e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*    BTM_EIR_UUID_SERVCLASS_GENERIC_NETWORKING,        */
447e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*    BTM_EIR_UUID_SERVCLASS_GENERIC_FILETRANSFER,      */
448e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*    BTM_EIR_UUID_SERVCLASS_GENERIC_AUDIO,             */
449e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*    BTM_EIR_UUID_SERVCLASS_GENERIC_TELEPHONY,         */
450e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*    BTM_EIR_UUID_SERVCLASS_UPNP_SERVICE,              */
451e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*    BTM_EIR_UUID_SERVCLASS_UPNP_IP_SERVICE,           */
452e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*    BTM_EIR_UUID_SERVCLASS_ESDP_UPNP_IP_PAN,          */
453e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*    BTM_EIR_UUID_SERVCLASS_ESDP_UPNP_IP_LAP,          */
454e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*    BTM_EIR_UUID_SERVCLASS_ESDP_UPNP_IP_L2CAP,        */
455e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_EIR_UUID_SERVCLASS_VIDEO_SOURCE,
456e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_EIR_UUID_SERVCLASS_VIDEO_SINK,
457e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*    BTM_EIR_UUID_SERVCLASS_VIDEO_DISTRIBUTION         */
458e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*    BTM_EIR_UUID_SERVCLASS_HDP_PROFILE                */
459e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_EIR_UUID_SERVCLASS_MESSAGE_ACCESS,
460e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_EIR_UUID_SERVCLASS_MESSAGE_NOTIFICATION,
4616ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach    BTM_EIR_UUID_SERVCLASS_HDP_SOURCE,
462e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_EIR_UUID_SERVCLASS_HDP_SINK,
463e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_EIR_MAX_SERVICES
464e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach};
465e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#endif /* BTM_EIR_UUID_LKUP_TBL */
466e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
467e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* search result in EIR of inquiry database */
468e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_EIR_FOUND           0
469e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_EIR_NOT_FOUND       1
470e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_EIR_UNKNOWN         2
471e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
472e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tBTM_EIR_SEARCH_RESULT;
473e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
474e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_EIR_FLAGS_TYPE                  HCI_EIR_FLAGS_TYPE                  /* 0x01 */
475e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_EIR_MORE_16BITS_UUID_TYPE       HCI_EIR_MORE_16BITS_UUID_TYPE       /* 0x02 */
476e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_EIR_COMPLETE_16BITS_UUID_TYPE   HCI_EIR_COMPLETE_16BITS_UUID_TYPE   /* 0x03 */
477e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_EIR_MORE_32BITS_UUID_TYPE       HCI_EIR_MORE_32BITS_UUID_TYPE       /* 0x04 */
478e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_EIR_COMPLETE_32BITS_UUID_TYPE   HCI_EIR_COMPLETE_32BITS_UUID_TYPE   /* 0x05 */
479e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_EIR_MORE_128BITS_UUID_TYPE      HCI_EIR_MORE_128BITS_UUID_TYPE      /* 0x06 */
480e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_EIR_COMPLETE_128BITS_UUID_TYPE  HCI_EIR_COMPLETE_128BITS_UUID_TYPE  /* 0x07 */
481e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_EIR_SHORTENED_LOCAL_NAME_TYPE   HCI_EIR_SHORTENED_LOCAL_NAME_TYPE   /* 0x08 */
482e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_EIR_COMPLETE_LOCAL_NAME_TYPE    HCI_EIR_COMPLETE_LOCAL_NAME_TYPE    /* 0x09 */
483e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_EIR_TX_POWER_LEVEL_TYPE         HCI_EIR_TX_POWER_LEVEL_TYPE         /* 0x0A */
484e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_EIR_MANUFACTURER_SPECIFIC_TYPE  HCI_EIR_MANUFACTURER_SPECIFIC_TYPE  /* 0xFF */
485e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
486e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* the following EIR tags are defined to OOB, not regular EIR data */
487e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_EIR_OOB_BD_ADDR_TYPE            HCI_EIR_OOB_BD_ADDR_TYPE    /* 6 bytes */
488e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_EIR_OOB_COD_TYPE                HCI_EIR_OOB_COD_TYPE        /* 3 bytes */
489e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_EIR_OOB_SSP_HASH_C_TYPE         HCI_EIR_OOB_SSP_HASH_C_TYPE /* 16 bytes */
490e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_EIR_OOB_SSP_RAND_R_TYPE         HCI_EIR_OOB_SSP_RAND_R_TYPE /* 16 bytes */
491e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
492e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_OOB_MANDATORY_SIZE      8   /* include 2 bytes length & 6 bytes bd_addr */
493e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_OOB_DATA_LEN_SIZE       2
494e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_OOB_BD_ADDR_SIZE        6
495e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_OOB_COD_SIZE            BT_OOB_COD_SIZE
496e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_OOB_HASH_C_SIZE         BT_OOB_HASH_C_SIZE
497e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_OOB_RAND_R_SIZE         BT_OOB_RAND_R_SIZE
498e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
499e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
500e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#if BLE_INCLUDED == TRUE
501e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_BLE_SEC_NONE                0
502e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_BLE_SEC_ENCRYPT             1 /* encrypt the link using current key */
5036ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define BTM_BLE_SEC_ENCRYPT_NO_MITM     2
504e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_BLE_SEC_ENCRYPT_MITM        3
505e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8   tBTM_BLE_SEC_ACT;
506e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#endif
507e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/************************************************************************************************
508e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** BTM Services MACROS handle array of UINT32 bits for more than 32 services
509e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*************************************************************************************************/
510e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Determine the number of UINT32's necessary for services */
511e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_EIR_ARRAY_BITS          32          /* Number of bits in each array element */
512e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_EIR_SERVICE_ARRAY_SIZE  (((UINT32)BTM_EIR_MAX_SERVICES / BTM_EIR_ARRAY_BITS) + \
513e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                    (((UINT32)BTM_EIR_MAX_SERVICES % BTM_EIR_ARRAY_BITS) ? 1 : 0))
514e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
515e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* MACRO to set the service bit mask in a bit stream */
516e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_EIR_SET_SERVICE(p, service)  (((UINT32 *)(p))[(((UINT32)(service)) / BTM_EIR_ARRAY_BITS)] |=  \
517e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                    ((UINT32)1 << (((UINT32)(service)) % BTM_EIR_ARRAY_BITS)))
518e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
519e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
520e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* MACRO to clear the service bit mask in a bit stream */
521e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_EIR_CLR_SERVICE(p, service)  (((UINT32 *)(p))[(((UINT32)(service)) / BTM_EIR_ARRAY_BITS)] &=  \
522e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                    ~((UINT32)1 << (((UINT32)(service)) % BTM_EIR_ARRAY_BITS)))
523e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
524e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* MACRO to check the service bit mask in a bit stream */
525e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_EIR_HAS_SERVICE(p, service)  ((((UINT32 *)(p))[(((UINT32)(service)) / BTM_EIR_ARRAY_BITS)] &  \
526e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                    ((UINT32)1 << (((UINT32)(service)) % BTM_EIR_ARRAY_BITS))) >> (((UINT32)(service)) % BTM_EIR_ARRAY_BITS))
527e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
528e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* start of EIR in HCI buffer, 4 bytes = HCI Command(2) + Length(1) + FEC_Req(1) */
529e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_HCI_EIR_OFFSET          (BT_HDR_SIZE + 4)
530e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
531e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/***************************
532e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**  Device Discovery Types
533e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach****************************/
534e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Definitions of the parameters passed to BTM_StartInquiry and
535e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** BTM_SetPeriodicInquiryMode.
536e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/
537e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct              /* contains the two device class condition fields */
538e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
539e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    DEV_CLASS       dev_class;
540e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    DEV_CLASS       dev_class_mask;
541e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_COD_COND;
542e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
543e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
544e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef union               /* contains the inquiry filter condition */
545e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
546e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BD_ADDR         bdaddr_cond;
547e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_COD_COND   cod_cond;
548e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_INQ_FILT_COND;
549e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
550e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
551e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct              /* contains the parameters passed to the inquiry functions */
552e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
553e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8   mode;                       /* general or limited */
554e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8   duration;                   /* duration of the inquiry (1.28 sec increments) */
555e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8   max_resps;                  /* maximum number of responses to return */
556e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BOOLEAN report_dup;                 /* report duplicated inquiry response with higher RSSI value */
557e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8   filter_cond_type;           /* new devices, BD ADDR, COD, or No filtering */
558e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_INQ_FILT_COND  filter_cond;    /* filter value based on filter cond type */
559e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_INQ_PARMS;
560e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
561e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_INQ_RESULT_BR       0x01
562e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_INQ_RESULT_BLE      0x02
563e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
564e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#if (BLE_INCLUDED == TRUE)
565e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_BLE_EVT_CONN_ADV        0x00
566e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_BLE_EVT_CONN_DIR_ADV    0x01
567e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_BLE_EVT_DISC_ADV        0x02
568e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_BLE_EVT_NON_CONN_ADV    0x03
569e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_BLE_EVT_SCAN_RSP        0x04
570e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tBTM_BLE_EVT_TYPE;
571e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#endif
572e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
573e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* These are the fields returned in each device's response to the inquiry.  It
574e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** is returned in the results callback if registered.
575e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/
576e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
577e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
578e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT16      clock_offset;
579e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BD_ADDR     remote_bd_addr;
580e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    DEV_CLASS   dev_class;
581e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8       page_scan_rep_mode;
582e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8       page_scan_per_mode;
583e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8       page_scan_mode;
584e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    INT8        rssi;       /* Set to BTM_INQ_RES_IGNORE_RSSI if  not valid */
585e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#if (BTM_EIR_CLIENT_INCLUDED == TRUE)
586e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT32      eir_uuid[BTM_EIR_SERVICE_ARRAY_SIZE];
587e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BOOLEAN     eir_complete_list;
588e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#endif
589e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#if (BLE_INCLUDED == TRUE)
590e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBT_DEVICE_TYPE         device_type;
591e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8       inq_result_type;
592e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8       ble_addr_type;
593e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_BLE_EVT_TYPE       ble_evt_type;
594e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8                   flag;
595e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#endif
596e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_INQ_RESULTS;
597e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
598e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
599e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* This is the inquiry response information held in its database by BTM, and available
600e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** to applications via BTM_InqDbRead, BTM_InqDbFirst, and BTM_InqDbNext.
601e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/
602e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
603e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
604e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_INQ_RESULTS    results;
605e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
606e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BOOLEAN             appl_knows_rem_name;    /* set by application if it knows the remote name of the peer device.
607e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                   This is later used by application to determine if remote name request is
608e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                   required to be done. Having the flag here avoid duplicate store of inquiry results */
609e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
610e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
611e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#if (BTM_INQ_GET_REMOTE_NAME == TRUE || BLE_INCLUDED == TRUE)
612e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT16          remote_name_len;
613e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_BD_NAME    remote_name;
614e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8           remote_name_state;
615e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8           remote_name_type;
616e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#endif
617e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
618e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_INQ_INFO;
619e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
620e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
621e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Structure returned with inquiry complete callback */
622e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
623e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
624e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_STATUS status;
625e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8       num_resp;       /* Number of results from the current inquiry */
626e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_INQUIRY_CMPL;
627e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
628e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
629e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Structure returned with remote name  request */
630e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
631e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
632e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT16      status;
633e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT16      length;
634e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BD_NAME     remote_bd_name;
635e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_REMOTE_DEV_NAME;
636e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
637e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
638e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
6396ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach    UINT8   pcm_intf_rate;  /* PCM interface rate: 0: 128kbps, 1: 256 kbps;
640e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                2:512 bps; 3: 1024kbps; 4: 2048kbps */
641e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8   frame_type;     /* frame type: 0: short; 1: long */
642e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8   sync_mode;      /* sync mode: 0: slave; 1: master */
643e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8   clock_mode;     /* clock mode: 0: slave; 1: master */
644e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
645e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach}tBTM_SCO_PCM_PARAM;
646e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
647e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/****************************************
648e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**  Device Discovery Callback Functions
649e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*****************************************/
650e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Callback function for asynchronous notifications when the BTM inquiry DB
651e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** changes. First param is inquiry database, second is if added to or removed
652e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** from the inquiry database.
653e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/
654e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef void (tBTM_INQ_DB_CHANGE_CB) (void *p1, BOOLEAN is_new);
655e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
656e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Callback function for notifications when the BTM gets inquiry response.
657e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** First param is inquiry results database, second is pointer of EIR.
658e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/
659e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef void (tBTM_INQ_RESULTS_CB) (tBTM_INQ_RESULTS *p_inq_results, UINT8 *p_eir);
660e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
661e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*****************************************************************************
662e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**  ACL CHANNEL MANAGEMENT
663e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*****************************************************************************/
664e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************
665e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**  ACL Constants
666e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************/
667e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
668e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* ACL modes */
669e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_ACL_MODE_NORMAL     HCI_MODE_ACTIVE
670e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_ACL_MODE_HOLD       HCI_MODE_HOLD
671e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_ACL_MODE_SNIFF      HCI_MODE_SNIFF
672e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_ACL_MODE_PARK       HCI_MODE_PARK
673e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
674e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Returned with structure in role switch callback (tBTM_ROLE_SWITCH_CMPL) */
675e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_ROLE_MASTER         HCI_ROLE_MASTER
676e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_ROLE_SLAVE          HCI_ROLE_SLAVE
677e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_ROLE_UNDEFINED      0xff     /* undefined value (error status) */
678e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
679e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* ACL Packet Types */
680e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_ACL_PKT_TYPES_MASK_DM1      HCI_PKT_TYPES_MASK_DM1
681e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_ACL_PKT_TYPES_MASK_DH1      HCI_PKT_TYPES_MASK_DH1
682e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_ACL_PKT_TYPES_MASK_DM3      HCI_PKT_TYPES_MASK_DM3
683e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_ACL_PKT_TYPES_MASK_DH3      HCI_PKT_TYPES_MASK_DH3
684e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_ACL_PKT_TYPES_MASK_DM5      HCI_PKT_TYPES_MASK_DM5
685e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_ACL_PKT_TYPES_MASK_DH5      HCI_PKT_TYPES_MASK_DH5
686e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_ACL_PKT_TYPES_MASK_NO_2_DH1 HCI_PKT_TYPES_MASK_NO_2_DH1
687e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_ACL_PKT_TYPES_MASK_NO_3_DH1 HCI_PKT_TYPES_MASK_NO_3_DH1
688e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_ACL_PKT_TYPES_MASK_NO_2_DH3 HCI_PKT_TYPES_MASK_NO_2_DH3
689e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_ACL_PKT_TYPES_MASK_NO_3_DH3 HCI_PKT_TYPES_MASK_NO_3_DH3
690e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_ACL_PKT_TYPES_MASK_NO_2_DH5 HCI_PKT_TYPES_MASK_NO_2_DH5
691e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_ACL_PKT_TYPES_MASK_NO_3_DH5 HCI_PKT_TYPES_MASK_NO_3_DH5
692e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
693e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/***************
694e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**  ACL Types
695e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach****************/
696e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
697e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Structure returned with link policy information (in tBTM_CMPL_CB callback function)
698e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** in response to BTM_ReadLinkPolicy call.
699e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/
700e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
701e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
702e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_STATUS status;
703e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8       hci_status;
704e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BD_ADDR     rem_bda;
705e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT16      settings;
706e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_LNK_POLICY_RESULTS;
707e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
708e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Structure returned with Role Switch information (in tBTM_CMPL_CB callback function)
709e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** in response to BTM_SwitchRole call.
710e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/
711e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
712e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
713e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8   hci_status;     /* HCI status returned with the event */
714e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8   role;           /* BTM_ROLE_MASTER or BTM_ROLE_SLAVE */
715e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BD_ADDR remote_bd_addr; /* Remote BD addr involved with the switch */
716e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_ROLE_SWITCH_CMPL;
717e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
718e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
719e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Structure returned with Change Link Key information (in tBTM_CMPL_CB callback function)
720e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** in response to BTM_ChangeLinkKey call.
721e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/
722e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
723e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
724e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8   hci_status;     /* HCI status returned with the event */
725e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BD_ADDR remote_bd_addr; /* Remote BD addr involved with the change link key */
726e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_CHANGE_KEY_CMPL;
727e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
728e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
729e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Structure returned with QoS information (in tBTM_CMPL_CB callback function)
730e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** in response to BTM_SetQoS call.
731e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/
732e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
733e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
734e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    FLOW_SPEC flow;
735e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT16 handle;
736e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8 status;
737e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_QOS_SETUP_CMPL;
738e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
739e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
740e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Structure returned with read RSSI event (in tBTM_CMPL_CB callback function)
741e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** in response to BTM_ReadRSSI call.
742e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/
743e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
744e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
745e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_STATUS status;
746e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8       hci_status;
747e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    INT8        rssi;
748e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BD_ADDR     rem_bda;
749e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_RSSI_RESULTS;
750e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
751e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Structure returned with read current TX power event (in tBTM_CMPL_CB callback function)
752e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** in response to BTM_ReadTxPower call.
753e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/
754e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
755e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
756e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_STATUS status;
757e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8       hci_status;
758e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    INT8        tx_power;
759e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BD_ADDR     rem_bda;
760e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_TX_POWER_RESULTS;
761e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
762e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Structure returned with read link quality event (in tBTM_CMPL_CB callback function)
763e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** in response to BTM_ReadLinkQuality call.
764e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/
765e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
766e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
767e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_STATUS status;
768e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8       hci_status;
769e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8       link_quality;
770e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BD_ADDR     rem_bda;
771e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_LINK_QUALITY_RESULTS;
772e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
773e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Structure returned with read inq tx power quality event (in tBTM_CMPL_CB callback function)
774e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** in response to BTM_ReadInquiryRspTxPower call.
775e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/
776e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
777e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
778e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_STATUS status;
779e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8       hci_status;
780e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    INT8        tx_power;
781e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_INQ_TXPWR_RESULTS;
782e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
783e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachenum
784e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
785e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_BL_CONN_EVT,
786e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_BL_DISCN_EVT,
787e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_BL_UPDATE_EVT,
788e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_BL_ROLE_CHG_EVT,
789e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_BL_COLLISION_EVT
790e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach};
791e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tBTM_BL_EVENT;
792e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT16 tBTM_BL_EVENT_MASK;
793e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
794e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_BL_CONN_MASK        0x0001
795e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_BL_DISCN_MASK       0x0002
796e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_BL_UPDATE_MASK      0x0004
797e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_BL_ROLE_CHG_MASK    0x0008
798e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
799e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* the data type associated with BTM_BL_CONN_EVT */
800e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
801e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
802e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_BL_EVENT   event;      /* The event reported. */
803e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BD_ADDR_PTR     p_bda;      /* The address of the newly connected device */
804e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    DEV_CLASS_PTR   p_dc;       /* The device class */
805e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BD_NAME_PTR     p_bdn;      /* The device name */
806e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8          *p_features; /* The remote device's supported features */
807e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_BL_CONN_DATA;
808e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
809e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* the data type associated with BTM_BL_DISCN_EVT */
810e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
811e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
812e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_BL_EVENT   event;  /* The event reported. */
813e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BD_ADDR_PTR     p_bda;  /* The address of the disconnected device */
814e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_BL_DISCN_DATA;
815e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
816a5c380dbe1419e077bf6a3a8a30359ce74958350Kausik Sinnaswamy/* Busy-Level shall have the inquiry_paging mask set when
817a5c380dbe1419e077bf6a3a8a30359ce74958350Kausik Sinnaswamy * inquiry/paging is in progress, Else the number of ACL links */
818a5c380dbe1419e077bf6a3a8a30359ce74958350Kausik Sinnaswamy#define BTM_BL_INQUIRY_PAGING_MASK 0x10
819a5c380dbe1419e077bf6a3a8a30359ce74958350Kausik Sinnaswamy#define BTM_BL_INQUIRY_STARTED   (BTM_BL_INQUIRY_PAGING_MASK | 0x1)
820a5c380dbe1419e077bf6a3a8a30359ce74958350Kausik Sinnaswamy#define BTM_BL_INQUIRY_CANCELLED (BTM_BL_INQUIRY_PAGING_MASK | 0x2)
821a5c380dbe1419e077bf6a3a8a30359ce74958350Kausik Sinnaswamy#define BTM_BL_INQUIRY_COMPLETE  (BTM_BL_INQUIRY_PAGING_MASK | 0x3)
822a5c380dbe1419e077bf6a3a8a30359ce74958350Kausik Sinnaswamy#define BTM_BL_PAGING_STARTED    (BTM_BL_INQUIRY_PAGING_MASK | 0x4)
823a5c380dbe1419e077bf6a3a8a30359ce74958350Kausik Sinnaswamy#define BTM_BL_PAGING_COMPLETE   (BTM_BL_INQUIRY_PAGING_MASK | 0x5)
824e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* the data type associated with BTM_BL_UPDATE_EVT */
825e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
826e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
827e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_BL_EVENT   event;  /* The event reported. */
828a5c380dbe1419e077bf6a3a8a30359ce74958350Kausik Sinnaswamy    UINT8           busy_level;/* when paging or inquiring, level is as above.
829e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                * Otherwise, the number of ACL links. */
830e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_BL_UPDATE_DATA;
831e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
832e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* the data type associated with BTM_BL_ROLE_CHG_EVT */
833e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
834e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
835e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_BL_EVENT   event;      /* The event reported. */
836e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BD_ADDR_PTR     p_bda;      /* The address of the peer connected device */
837e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8           new_role;
838e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8           hci_status; /* HCI status returned with the event */
839e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_BL_ROLE_CHG_DATA;
840e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
841e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef union
842e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
843e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_BL_EVENT           event;  /* The event reported. */
844e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_BL_CONN_DATA       conn;   /* The data associated with BTM_BL_CONN_EVT */
845e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_BL_DISCN_DATA      discn;  /* The data associated with BTM_BL_DISCN_EVT */
846e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_BL_UPDATE_DATA     update; /* The data associated with BTM_BL_UPDATE_EVT */
847e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_BL_ROLE_CHG_DATA   role_chg;/*The data associated with BTM_BL_ROLE_CHG_EVT */
848e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_BL_EVENT_DATA;
849e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
850e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Callback function for notifications when the BTM busy level
851e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** changes.
852e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/
853e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef void (tBTM_BL_CHANGE_CB) (tBTM_BL_EVENT_DATA *p_data);
854e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
855e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/***************************
856e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**  ACL Callback Functions
857e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach****************************/
858e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Callback function for notifications when the BTM ACL connection DB
859e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** changes. First param is BD address, second is if added or removed.
860e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Registered through BTM_AclRegisterForChanges call.
861e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/
862e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef void (tBTM_ACL_DB_CHANGE_CB) (BD_ADDR p_bda, DEV_CLASS p_dc,
863e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                      BD_NAME p_bdn, BD_FEATURES features,
864e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                      BOOLEAN is_new);
865e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
866e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*****************************************************************************
867e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**  SCO CHANNEL MANAGEMENT
868e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*****************************************************************************/
869e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************
870e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**  SCO Constants
871e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************/
872e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
873e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Define an invalid SCO index and an invalid HCI handle */
874e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_INVALID_SCO_INDEX       0xFFFF
875e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_INVALID_HCI_HANDLE      0xFFFF
876e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
877e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Define an invalid SCO disconnect reason */
878e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_INVALID_SCO_DISC_REASON 0xFFFF
879e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
880e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Define SCO packet types used in APIs */
881e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SCO_PKT_TYPES_MASK_HV1  HCI_ESCO_PKT_TYPES_MASK_HV1
882e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SCO_PKT_TYPES_MASK_HV2  HCI_ESCO_PKT_TYPES_MASK_HV2
883e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SCO_PKT_TYPES_MASK_HV3  HCI_ESCO_PKT_TYPES_MASK_HV3
884e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SCO_PKT_TYPES_MASK_EV3  HCI_ESCO_PKT_TYPES_MASK_EV3
885e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SCO_PKT_TYPES_MASK_EV4  HCI_ESCO_PKT_TYPES_MASK_EV4
886e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SCO_PKT_TYPES_MASK_EV5  HCI_ESCO_PKT_TYPES_MASK_EV5
887e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SCO_PKT_TYPES_MASK_NO_2_EV3  HCI_ESCO_PKT_TYPES_MASK_NO_2_EV3
888e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SCO_PKT_TYPES_MASK_NO_3_EV3  HCI_ESCO_PKT_TYPES_MASK_NO_3_EV3
889e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SCO_PKT_TYPES_MASK_NO_2_EV5  HCI_ESCO_PKT_TYPES_MASK_NO_2_EV5
890e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SCO_PKT_TYPES_MASK_NO_3_EV5  HCI_ESCO_PKT_TYPES_MASK_NO_3_EV5
891e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
892e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SCO_LINK_ONLY_MASK  (BTM_SCO_PKT_TYPES_MASK_HV1 | \
893e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                 BTM_SCO_PKT_TYPES_MASK_HV2 | \
894e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                 BTM_SCO_PKT_TYPES_MASK_HV3)
895e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
896e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_ESCO_LINK_ONLY_MASK (BTM_SCO_PKT_TYPES_MASK_EV3 | \
897e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                 BTM_SCO_PKT_TYPES_MASK_EV4 | \
898e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                 BTM_SCO_PKT_TYPES_MASK_EV5)
899e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
900e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SCO_LINK_ALL_PKT_MASK   (BTM_SCO_LINK_ONLY_MASK     | \
901e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                     BTM_ESCO_LINK_ONLY_MASK)
902e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
903e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_VALID_SCO_ALL_PKT_TYPE HCI_VALID_SCO_ALL_PKT_TYPE
904e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
905e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Passed in BTM_CreateSco if the packet type parameter should be ignored */
906e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_IGNORE_SCO_PKT_TYPE     0
907e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
908e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/***************
909e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**  SCO Types
910e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach****************/
911e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_LINK_TYPE_SCO           HCI_LINK_TYPE_SCO
912e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_LINK_TYPE_ESCO          HCI_LINK_TYPE_ESCO
913e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tBTM_SCO_TYPE;
914e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
915e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
916e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************
9176ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** SCO Routing Path
918e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach********************/
919e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SCO_ROUTE_PCM           HCI_BRCM_SCO_ROUTE_PCM
920e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SCO_ROUTE_HCI           HCI_BRCM_SCO_ROUTE_HCI
921e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tBTM_SCO_ROUTE_TYPE;
922e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
923e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
924e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************
9256ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** SCO Codec Types
926e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach********************/
927e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SCO_CODEC_NONE          0x0000
928e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SCO_CODEC_CVSD          0x0001
929e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SCO_CODEC_MSBC          0x0002
930e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT16 tBTM_SCO_CODEC_TYPE;
931e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
932e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************
9336ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** SCO Voice Settings
934e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach********************/
935e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_VOICE_SETTING_CVSD  ((UINT16)  (HCI_INP_CODING_LINEAR          |   \
936e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                            HCI_INP_DATA_FMT_2S_COMPLEMENT |   \
937e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                            HCI_INP_SAMPLE_SIZE_16BIT      |   \
938e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                            HCI_AIR_CODING_FORMAT_CVSD))
939e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
940e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_VOICE_SETTING_TRANS ((UINT16)  (HCI_INP_CODING_LINEAR          |   \
941e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                            HCI_INP_DATA_FMT_2S_COMPLEMENT |   \
942e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                            HCI_INP_SAMPLE_SIZE_16BIT      |   \
943e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                            HCI_AIR_CODING_FORMAT_TRANSPNT))
944e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
945e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************
9466ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** SCO Data Status
947e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach********************/
948e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachenum
949e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
950e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_SCO_DATA_CORRECT,
951e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_SCO_DATA_PAR_ERR,
952e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_SCO_DATA_NONE,
953e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_SCO_DATA_PAR_LOST
9546ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach};
955e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tBTM_SCO_DATA_FLAG;
956e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
957e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/***************************
958e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**  SCO Callback Functions
959e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach****************************/
960e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef void (tBTM_SCO_CB) (UINT16 sco_inx);
961e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef void (tBTM_SCO_DATA_CB) (UINT16 sco_inx, BT_HDR *p_data, tBTM_SCO_DATA_FLAG status);
962e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
963e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************
964e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**  eSCO Constants
965e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************/
966e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_64KBITS_RATE            0x00001f40  /* 64 kbits/sec data rate */
967e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
968e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Retransmission effort */
969e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_ESCO_RETRANS_OFF        0
970e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_ESCO_RETRANS_POWER      1
971e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_ESCO_RETRANS_QUALITY    2
972e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_ESCO_RETRANS_DONTCARE   0xff
973e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
974e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Max Latency Don't Care */
975e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_ESCO_MAX_LAT_DONTCARE   0xffff
976e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
977e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/***************
978e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**  eSCO Types
979e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach****************/
980e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* tBTM_ESCO_CBACK event types */
981e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_ESCO_CHG_EVT        1
982e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_ESCO_CONN_REQ_EVT   2
983e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tBTM_ESCO_EVT;
984e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
985e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Passed into BTM_SetEScoMode() */
986e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
987e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
988e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT32 tx_bw;
989e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT32 rx_bw;
990e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT16 max_latency;
991e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT16 voice_contfmt;  /* Voice Settings or Content Format */
992e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT16 packet_types;
993e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8  retrans_effort;
994e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_ESCO_PARAMS;
995e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
996e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
997e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
998e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT16 max_latency;
999e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT16 packet_types;
1000e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8  retrans_effort;
1001e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_CHG_ESCO_PARAMS;
1002e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1003e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Returned by BTM_ReadEScoLinkParms() */
1004e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
1005e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1006e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT16  rx_pkt_len;
1007e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT16  tx_pkt_len;
1008e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BD_ADDR bd_addr;
1009e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8   link_type;  /* BTM_LINK_TYPE_SCO or BTM_LINK_TYPE_ESCO */
1010e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8   tx_interval;
1011e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8   retrans_window;
1012e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8   air_mode;
1013e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_ESCO_DATA;
1014e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1015e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
1016e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1017e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT16  sco_inx;
1018e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT16  rx_pkt_len;
1019e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT16  tx_pkt_len;
1020e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BD_ADDR bd_addr;
1021e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8   hci_status;
1022e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8   tx_interval;
1023e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8   retrans_window;
1024e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_CHG_ESCO_EVT_DATA;
1025e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1026e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
1027e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1028e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT16        sco_inx;
1029e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BD_ADDR       bd_addr;
1030e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    DEV_CLASS     dev_class;
1031e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_SCO_TYPE link_type;
1032e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_ESCO_CONN_REQ_EVT_DATA;
1033e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1034e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef union
1035e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1036e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_CHG_ESCO_EVT_DATA      chg_evt;
1037e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_ESCO_CONN_REQ_EVT_DATA conn_evt;
1038e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_ESCO_EVT_DATA;
1039e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1040e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/***************************
1041e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**  eSCO Callback Functions
1042e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach****************************/
1043e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef void (tBTM_ESCO_CBACK) (tBTM_ESCO_EVT event, tBTM_ESCO_EVT_DATA *p_data);
1044e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1045e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1046e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*****************************************************************************
1047e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**  SECURITY MANAGEMENT
1048e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*****************************************************************************/
1049e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************
1050e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**  Security Manager Constants
1051e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach********************************/
1052e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1053e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Security Mode (BTM_SetSecurityMode) */
1054e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_MODE_UNDEFINED      0
1055e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_MODE_NONE           1
1056e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_MODE_SERVICE        2
1057e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_MODE_LINK           3
1058e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_MODE_SP             4
1059e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_MODE_SP_DEBUG       5
1060e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1061e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Security Service Levels [bit mask] (BTM_SetSecurityLevel)
1062e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Encryption should not be used without authentication
1063e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/
1064e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_NONE               0x0000 /* Nothing required */
1065e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_IN_AUTHORIZE       0x0001 /* Inbound call requires authorization */
1066e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_IN_AUTHENTICATE    0x0002 /* Inbound call requires authentication */
1067e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_IN_ENCRYPT         0x0004 /* Inbound call requires encryption */
1068e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_OUT_AUTHORIZE      0x0008 /* Outbound call requires authorization */
1069e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_OUT_AUTHENTICATE   0x0010 /* Outbound call requires authentication */
1070e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_OUT_ENCRYPT        0x0020 /* Outbound call requires encryption */
1071e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_BOND               0x0040 /* Bonding */
1072e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_BOND_CONN          0x0080 /* bond_created_connection */
1073e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_FORCE_MASTER       0x0100 /* Need to switch connection to be master */
1074e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_ATTEMPT_MASTER     0x0200 /* Try to switch connection to be master */
1075e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_FORCE_SLAVE        0x0400 /* Need to switch connection to be master */
1076e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_ATTEMPT_SLAVE      0x0800 /* Try to switch connection to be slave */
1077e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_IN_MITM            0x1000 /* inbound Do man in the middle protection */
1078e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_OUT_MITM           0x2000 /* outbound Do man in the middle protection */
1079e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1080e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Security Flags [bit mask] (BTM_GetSecurityFlags)
1081e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/
1082e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_FLAG_AUTHORIZED     0x01
1083e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_FLAG_AUTHENTICATED  0x02
1084e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_FLAG_ENCRYPTED      0x04
1085e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_FLAG_LKEY_KNOWN     0x10
1086e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_FLAG_LKEY_AUTHED    0x20
1087e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1088e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* PIN types */
1089e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_PIN_TYPE_VARIABLE       HCI_PIN_TYPE_VARIABLE
1090e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_PIN_TYPE_FIXED          HCI_PIN_TYPE_FIXED
1091e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1092e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Link Key types used to generate the new link key.
1093e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** returned in link key notification callback function
1094e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/
1095e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_LKEY_TYPE_COMBINATION   HCI_LKEY_TYPE_COMBINATION
1096e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_LKEY_TYPE_LOCAL_UNIT    HCI_LKEY_TYPE_LOCAL_UNIT
1097e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_LKEY_TYPE_REMOTE_UNIT   HCI_LKEY_TYPE_REMOTE_UNIT
1098e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_LKEY_TYPE_DEBUG_COMB    HCI_LKEY_TYPE_DEBUG_COMB
1099e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_LKEY_TYPE_UNAUTH_COMB   HCI_LKEY_TYPE_UNAUTH_COMB
1100e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_LKEY_TYPE_AUTH_COMB     HCI_LKEY_TYPE_AUTH_COMB
1101e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_LKEY_TYPE_CHANGED_COMB  HCI_LKEY_TYPE_CHANGED_COMB
1102e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_LKEY_TYPE_IGNORE        0xff    /* used when event is response from
1103e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                               hci return link keys request */
1104e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1105e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Protocol level security (BTM_SetSecurityLevel) */
1106e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_PROTO_L2CAP         0
1107e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_PROTO_SDP           1
1108e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_PROTO_TCS           2
1109e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_PROTO_RFCOMM        3
1110e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_PROTO_OBEX          4
1111e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_PROTO_BNEP          5
1112e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_PROTO_HID           6   /* HID      */
1113e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_PROTO_AVDT          7
1114e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_PROTO_MCA           8
1115e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1116e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Determine the number of UINT32's necessary for security services */
1117e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_ARRAY_BITS          32          /* Number of bits in each array element */
1118e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_ARRAY_SIZE  (((UINT32)BTM_SEC_MAX_SERVICES / BTM_SEC_ARRAY_BITS) + \
1119e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                    (((UINT32)BTM_SEC_MAX_SERVICES % BTM_SEC_ARRAY_BITS) ? 1 : 0))
1120e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1121e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Security service definitions (BTM_SetSecurityLevel)
1122e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Used for Authorization APIs
1123e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/
1124e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_SDP_SERVER      0
1125e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_SERIAL_PORT     1
1126e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_LAN_ACCESS      2
1127e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_DUN             3
1128e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_IRMC_SYNC       4
1129e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_IRMC_SYNC_CMD   5
1130e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_OBEX            6
1131e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_OBEX_FTP        7
1132e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_HEADSET         8
1133e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_CORDLESS        9
1134e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_INTERCOM        10
1135e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_FAX             11
1136e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_HEADSET_AG      12
1137e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_PNP_INFO        13
1138e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_GEN_NET         14
1139e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_GEN_FILE        15
1140e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_GEN_AUDIO       16
1141e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_GEN_TEL         17
1142e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_CTP_DATA        18
1143e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_HCRP_CTRL       19
1144e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_HCRP_DATA       20
1145e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_HCRP_NOTIF      21
1146e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_BPP_JOB         22
1147e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_BPP_STATUS      23
1148e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_BPP_REF         24
1149e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_BNEP_PANU       25
1150e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_BNEP_GN         26
1151e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_BNEP_NAP        27
1152e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_HF_HANDSFREE    28
1153e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_AG_HANDSFREE    29
1154e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_TE_PHONE_ACCESS 30
1155e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_ME_PHONE_ACCESS 31
1156e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1157e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_HID_SEC_CTRL    32
1158e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_HID_NOSEC_CTRL  33
1159e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_HID_INTR        34
1160e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_BIP             35
1161e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_BIP_REF         36
1162e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_AVDTP           37
1163e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_AVDTP_NOSEC     38
1164e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_AVCTP           39
1165e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_SAP             40
1166e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_PBAP            41
1167e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_RFC_MUX         42
1168e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_AVCTP_BROWSE    43
1169e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_MAP             44
1170e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_MAP_NOTIF       45
1171e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_MCAP_CTRL       46
1172e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_MCAP_DATA       47
1173e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_HDP_SNK         48
1174e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_HDP_SRC         49
1175e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_ATT             50
1176e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1177e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Update these as services are added */
1178e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SERVICE_FIRST_EMPTY     51
1179e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1180e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#ifndef BTM_SEC_MAX_SERVICES
1181e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_MAX_SERVICES            65
1182e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#endif
1183e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1184e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/************************************************************************************************
1185e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Security Services MACROS handle array of UINT32 bits for more than 32 trusted services
1186e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*************************************************************************************************/
1187e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* MACRO to set the security service bit mask in a bit stream */
1188e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_SET_SERVICE(p, service)  (((UINT32 *)(p))[(((UINT32)(service)) / BTM_SEC_ARRAY_BITS)] |=  \
1189e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                    ((UINT32)1 << (((UINT32)(service)) % BTM_SEC_ARRAY_BITS)))
1190e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1191e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1192e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* MACRO to clear the security service bit mask in a bit stream */
1193e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_CLR_SERVICE(p, service)  (((UINT32 *)(p))[(((UINT32)(service)) / BTM_SEC_ARRAY_BITS)] &=  \
1194e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                    ~((UINT32)1 << (((UINT32)(service)) % BTM_SEC_ARRAY_BITS)))
1195e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1196e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* MACRO to check the security service bit mask in a bit stream (Returns TRUE or FALSE) */
1197e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_IS_SERVICE_TRUSTED(p, service)    (((((UINT32 *)(p))[(((UINT32)(service)) / BTM_SEC_ARRAY_BITS)]) &   \
1198e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                        (UINT32)(((UINT32)1 << (((UINT32)(service)) % BTM_SEC_ARRAY_BITS)))) ? TRUE : FALSE)
1199e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1200e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* MACRO to copy two trusted device bitmask */
1201e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_COPY_TRUSTED_DEVICE(p_src, p_dst)   {int trst; for (trst = 0; trst < BTM_SEC_SERVICE_ARRAY_SIZE; trst++) \
1202e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                        ((UINT32 *)(p_dst))[trst] = ((UINT32 *)(p_src))[trst];}
1203e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1204e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* MACRO to clear two trusted device bitmask */
1205e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_CLR_TRUSTED_DEVICE(p_dst)   {int trst; for (trst = 0; trst < BTM_SEC_SERVICE_ARRAY_SIZE; trst++) \
1206e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                        ((UINT32 *)(p_dst))[trst] = 0;}
1207e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1208e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Following bits can be provided by host in the trusted_mask array */
1209e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* 0..31 bits of mask[0] (Least Significant Word) */
1210e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_SDP_SERVER        (1 << BTM_SEC_SERVICE_SDP_SERVER)
1211e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_SERIAL_PORT       (1 << BTM_SEC_SERVICE_SERIAL_PORT)
1212e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_LAN_ACCESS        (1 << BTM_SEC_SERVICE_LAN_ACCESS)
1213e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_DUN               (1 << BTM_SEC_SERVICE_DUN)
1214e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_IRMC_SYNC         (1 << BTM_SEC_SERVICE_IRMC_SYNC)
1215e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_IRMC_SYNC_CMD     (1 << BTM_SEC_SERVICE_IRMC_SYNC_CMD)
1216e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_OBEX              (1 << BTM_SEC_SERVICE_OBEX)
1217e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_OBEX_FTP          (1 << BTM_SEC_SERVICE_OBEX_FTP)
1218e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_HEADSET           (1 << BTM_SEC_SERVICE_HEADSET)
1219e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_CORDLESS          (1 << BTM_SEC_SERVICE_CORDLESS)
1220e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_INTERCOM          (1 << BTM_SEC_SERVICE_INTERCOM)
1221e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_FAX               (1 << BTM_SEC_SERVICE_FAX)
1222e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_HEADSET_AG        (1 << BTM_SEC_SERVICE_HEADSET_AG)
1223e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_PNP_INFO          (1 << BTM_SEC_SERVICE_PNP_INFO)
1224e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_GEN_NET           (1 << BTM_SEC_SERVICE_GEN_NET)
1225e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_GEN_FILE          (1 << BTM_SEC_SERVICE_GEN_FILE)
1226e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_GEN_AUDIO         (1 << BTM_SEC_SERVICE_GEN_AUDIO)
1227e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_GEN_TEL           (1 << BTM_SEC_SERVICE_GEN_TEL)
1228e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_CTP_DATA          (1 << BTM_SEC_SERVICE_CTP_DATA)
1229e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_HCRP_CTRL         (1 << BTM_SEC_SERVICE_HCRP_CTRL)
1230e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_HCRP_DATA         (1 << BTM_SEC_SERVICE_HCRP_DATA)
1231e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_HCRP_NOTIF        (1 << BTM_SEC_SERVICE_HCRP_NOTIF)
1232e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_BPP_JOB           (1 << BTM_SEC_SERVICE_JOB)
1233e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_BPP_STATUS        (1 << BTM_SEC_SERVICE_STATUS)
1234e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_BPP_REF           (1 << BTM_SEC_SERVICE_REF)
1235e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_BNEP_PANU         (1 << BTM_SEC_SERVICE_BNEP_PANU)
1236e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_BNEP_GN           (1 << BTM_SEC_SERVICE_BNEP_GN)
1237e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_BNEP_NAP          (1 << BTM_SEC_SERVICE_BNEP_NAP)
1238e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_HFP_HF            (1 << BTM_SEC_SERVICE_HF_HANDSFREE)
1239e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_HFP_AG            (1 << BTM_SEC_SERVICE_AG_HANDSFREE)
1240e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_TE_PHONE_ACCESS   (1 << BTM_SEC_SERVICE_TE_PHONE_ACCESS)
1241e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_ME_PHONE_ACCESS   (1 << BTM_SEC_SERVICE_ME_PHONE_ACCESS)
1242e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1243e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* 0..31 bits of mask[1] (Most Significant Word) */
1244e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_HID_CTRL          (1 << (BTM_SEC_SERVICE_HID_SEC_CTRL - 32))
1245e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_HID_NOSEC_CTRL    (1 << (BTM_SEC_SERVICE_HID_NOSEC_CTRL - 32))
1246e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_HID_INTR          (1 << (BTM_SEC_SERVICE_HID_INTR - 32))
1247e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_BIP               (1 << (BTM_SEC_SERVICE_BIP - 32))
1248e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_BIP_REF           (1 << (BTM_SEC_SERVICE_BIP_REF - 32))
1249e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_AVDTP             (1 << (BTM_SEC_SERVICE_AVDTP - 32))
1250e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_AVDTP_NOSEC       (1 << (BTM_SEC_SERVICE_AVDTP_NOSEC - 32))
1251e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_AVCTP             (1 << (BTM_SEC_SERVICE_AVCTP - 32))
1252e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_SAP               (1 << (BTM_SEC_SERVICE_SAP - 32))
1253e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_PBAP              (1 << (BTM_SEC_SERVICE_PBAP - 32))
1254e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_RFC_MUX           (1 << (BTM_SEC_SERVICE_RFC_MUX - 32))
1255e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_AVCTP_BROWSE      (1 << (BTM_SEC_SERVICE_AVCTP_BROWSE - 32))
1256e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_MAP               (1 << (BTM_SEC_SERVICE_MAP - 32))
1257e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_MAP_NOTIF         (1 << (BTM_SEC_SERVICE_MAP_NOTIF - 32))
1258e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_MCAP_CTRL         (1 << (BTM_SEC_SERVICE_MCAP_CTRL - 32))
1259e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_MCAP_DATA         (1 << (BTM_SEC_SERVICE_MCAP_DATA - 32))
1260e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_HDP_SNK           (1 << (BTM_SEC_SERVICE_HDP_SNK - 32))
1261e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_HDP_SRC           (1 << (BTM_SEC_SERVICE_HDP_SRC - 32))
1262e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1263e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SEC_TRUST_ALL               0xFFFFFFFF  /* for each array element */
1264e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1265e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/****************************************
1266e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**  Security Manager Callback Functions
1267e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*****************************************/
1268e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Authorize device for service.  Parameters are
1269e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**              BD Address of remote
1270e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**              Device Class of remote
1271e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**              BD Name of remote
1272e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**              Service name
1273e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**              Service Id (NULL - unknown service or unused
1274e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                                 [BTM_SEC_SERVICE_NAME_LEN set to 0])
1275e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**              Is originator of the connection
1276e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**              Result of the operation
1277e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/
1278e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 (tBTM_AUTHORIZE_CALLBACK) (BD_ADDR bd_addr, DEV_CLASS dev_class,
1279e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                         tBTM_BD_NAME bd_name, UINT8 *service_name,
1280e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                         UINT8 service_id, BOOLEAN is_originator);
1281e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1282e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Get PIN for the connection.  Parameters are
1283e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**              BD Address of remote
1284e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**              Device Class of remote
1285e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**              BD Name of remote
1286e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/
1287e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 (tBTM_PIN_CALLBACK) (BD_ADDR bd_addr, DEV_CLASS dev_class,
1288e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                   tBTM_BD_NAME bd_name);
1289e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1290e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1291e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Get Link Key for the connection.  Parameters are
1292e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**              BD Address of remote
1293e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**              Link Key
1294e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/
1295e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 (tBTM_LINK_KEY_REQ_CALLBACK) (BD_ADDR bd_addr, LINK_KEY key);
1296e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1297e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* New Link Key for the connection.  Parameters are
1298e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**              BD Address of remote
1299e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**              Link Key
1300e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**              Key Type: Combination, Local Unit, or Remote Unit
1301e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/
1302e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 (tBTM_LINK_KEY_CALLBACK) (BD_ADDR bd_addr, DEV_CLASS dev_class,
1303e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                        tBTM_BD_NAME bd_name, UINT8 *key,
1304e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                        UINT8 key_type);
1305e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1306e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1307e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Remote Name Resolved.  Parameters are
1308e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**              BD Address of remote
1309e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**              BD Name of remote
1310e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/
1311e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef void (tBTM_RMT_NAME_CALLBACK) (BD_ADDR bd_addr, DEV_CLASS dc,
1312e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                       tBTM_BD_NAME bd_name);
1313e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1314e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1315e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Authentication complete for the connection.  Parameters are
1316e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**              BD Address of remote
1317e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**              Device Class of remote
1318e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**              BD Name of remote
1319e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
1320e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/
1321e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 (tBTM_AUTH_COMPLETE_CALLBACK) (BD_ADDR bd_addr, DEV_CLASS dev_class,
1322e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                             tBTM_BD_NAME bd_name, int result);
1323e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1324e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Operation abort.  Called by the stack when link goes down during.  Pin code
1325e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** request or authorization.  Parameters are
1326e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**              BD Address of remote
1327e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
1328e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/
1329e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 (tBTM_ABORT_CALLBACK) (BD_ADDR bd_addr, DEV_CLASS dev_class,
1330e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                     tBTM_BD_NAME bd_name);
1331e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1332e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachenum
1333e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1334e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_SP_IO_REQ_EVT,      /* received IO_CAPABILITY_REQUEST event */
1335e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_SP_IO_RSP_EVT,      /* received IO_CAPABILITY_RESPONSE event */
1336e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_SP_CFM_REQ_EVT,     /* received USER_CONFIRMATION_REQUEST event */
1337e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_SP_KEY_NOTIF_EVT,   /* received USER_PASSKEY_NOTIFY event */
1338e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_SP_KEY_REQ_EVT,     /* received USER_PASSKEY_REQUEST event */
1339e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_SP_KEYPRESS_EVT,    /* received KEYPRESS_NOTIFY event */
1340e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_SP_LOC_OOB_EVT,     /* received result for READ_LOCAL_OOB_DATA command */
1341e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_SP_RMT_OOB_EVT,     /* received REMOTE_OOB_DATA_REQUEST event */
1342e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_SP_COMPLT_EVT,      /* received SIMPLE_PAIRING_COMPLETE event */
1343e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_SP_UPGRADE_EVT      /* check if the application wants to upgrade the link key */
1344e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach};
1345e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tBTM_SP_EVT;
1346e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1347e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_IO_CAP_OUT      0   /* DisplayOnly */
1348e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_IO_CAP_IO       1   /* DisplayYesNo */
1349e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_IO_CAP_IN       2   /* KeyboardOnly */
1350e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_IO_CAP_NONE     3   /* NoInputNoOutput */
1351e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#if BLE_INCLUDED == TRUE && SMP_INCLUDED == TRUE
1352e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_IO_CAP_KBDISP   4   /* Keyboard display */
1353e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_IO_CAP_MAX      5
1354e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#else
1355e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_IO_CAP_MAX      4
1356e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#endif
1357e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1358e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tBTM_IO_CAP;
1359e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1360e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_MAX_PASSKEY_VAL (999999)
1361e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_MIN_PASSKEY_VAL (0)
1362e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1363e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_AUTH_SP_NO      0   /* MITM Protection Not Required - Single Profile/non-bonding
1364e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                Numeric comparison with automatic accept allowed */
1365e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_AUTH_SP_YES     1   /* MITM Protection Required - Single Profile/non-bonding
1366e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                Use IO Capabilities to determine authentication procedure */
1367e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_AUTH_AP_NO      2   /* MITM Protection Not Required - All Profiles/dedicated bonding
1368e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                Numeric comparison with automatic accept allowed */
1369e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_AUTH_AP_YES     3   /* MITM Protection Required - All Profiles/dedicated bonding
1370e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                Use IO Capabilities to determine authentication procedure */
1371e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_AUTH_SPGB_NO    4   /* MITM Protection Not Required - Single Profiles/general bonding
1372e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                Numeric comparison with automatic accept allowed */
1373e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_AUTH_SPGB_YES   5   /* MITM Protection Required - Single Profiles/general bonding
1374e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                Use IO Capabilities to determine authentication procedure */
1375e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_AUTH_DD_BOND    2   /* this bit is ORed to the BTM_AUTH_SP_* when IO exchange for dedicated bonding */
1376e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_AUTH_GB_BIT     4   /* the genernal bonding bit */
1377e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_AUTH_BONDS      6   /* the general/dedicated bonding bits  */
1378e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_AUTH_YN_BIT     1   /* this is the Yes or No bit  */
1379e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1380e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tBTM_AUTH_REQ;
1381e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1382e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachenum
1383e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1384e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_OOB_NONE,
1385e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_OOB_PRESENT
1386e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#if BTM_OOB_INCLUDED == TRUE
1387e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    ,BTM_OOB_UNKNOWN
1388e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#endif
1389e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach};
1390e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tBTM_OOB_DATA;
1391e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1392e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* data type for BTM_SP_IO_REQ_EVT */
1393e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
1394e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1395e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BD_ADDR         bd_addr;        /* peer address */
1396e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_IO_CAP     io_cap;         /* local IO capabilities */
1397e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_OOB_DATA   oob_data;       /* OOB data present (locally) for the peer device */
1398e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_AUTH_REQ   auth_req;       /* Authentication required (for local device) */
1399e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BOOLEAN         is_orig;        /* TRUE, if local device initiated the SP process */
1400e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_SP_IO_REQ;
1401e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1402e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* data type for BTM_SP_IO_RSP_EVT */
1403e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
1404e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1405e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BD_ADDR         bd_addr;        /* peer address */
1406e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_IO_CAP     io_cap;         /* peer IO capabilities */
1407e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_OOB_DATA   oob_data;       /* OOB data present at peer device for the local device */
1408e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_AUTH_REQ   auth_req;       /* Authentication required for peer device */
1409e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_SP_IO_RSP;
1410e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1411e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* data type for BTM_SP_CFM_REQ_EVT */
1412e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
1413e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1414e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BD_ADDR         bd_addr;        /* peer address */
1415e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    DEV_CLASS       dev_class;      /* peer CoD */
1416e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_BD_NAME    bd_name;        /* peer device name */
1417e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT32          num_val;        /* the numeric value for comparison. If just_works, do not show this number to UI */
1418e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BOOLEAN         just_works;     /* TRUE, if "Just Works" association model */
1419e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_AUTH_REQ   loc_auth_req;   /* Authentication required for local device */
1420e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_AUTH_REQ   rmt_auth_req;   /* Authentication required for peer device */
1421defb69c3b383ad0f9b5d6329be625fafc2e3c931Ravi Nagarajan    tBTM_IO_CAP     loc_io_caps;    /* IO Capabilities of the local device */
1422defb69c3b383ad0f9b5d6329be625fafc2e3c931Ravi Nagarajan    tBTM_IO_CAP     rmt_io_caps;    /* IO Capabilities of the remot device */
1423e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_SP_CFM_REQ;
1424e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1425e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* data type for BTM_SP_KEY_REQ_EVT */
1426e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
1427e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1428e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BD_ADDR         bd_addr;        /* peer address */
1429e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    DEV_CLASS       dev_class;      /* peer CoD */
1430e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_BD_NAME    bd_name;        /* peer device name */
1431e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_SP_KEY_REQ;
1432e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1433e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* data type for BTM_SP_KEY_NOTIF_EVT */
1434e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
1435e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1436e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BD_ADDR         bd_addr;        /* peer address */
1437e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    DEV_CLASS       dev_class;      /* peer CoD */
1438e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_BD_NAME    bd_name;        /* peer device name */
1439e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT32          passkey;        /* passkey */
1440e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_SP_KEY_NOTIF;
1441e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1442e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachenum
1443e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1444e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_SP_KEY_STARTED,         /* passkey entry started */
1445e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_SP_KEY_ENTERED,         /* passkey digit entered */
1446e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_SP_KEY_ERASED,          /* passkey digit erased */
1447e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_SP_KEY_CLEARED,         /* passkey cleared */
1448e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_SP_KEY_COMPLT           /* passkey entry completed */
1449e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach};
1450e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8   tBTM_SP_KEY_TYPE;
1451e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1452e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* data type for BTM_SP_KEYPRESS_EVT */
1453e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
1454e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1455e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BD_ADDR             bd_addr;        /* peer address */
1456e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_SP_KEY_TYPE   notif_type;
1457e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_SP_KEYPRESS;
1458e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1459e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* data type for BTM_SP_LOC_OOB_EVT */
1460e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
1461e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1462e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_STATUS     status;         /* */
1463e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BT_OCTET16      c;              /* Simple Pairing Hash C */
1464e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BT_OCTET16      r;              /* Simple Pairing Randomnizer R */
1465e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_SP_LOC_OOB;
1466e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1467e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* data type for BTM_SP_RMT_OOB_EVT */
1468e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
1469e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1470e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BD_ADDR         bd_addr;        /* peer address */
1471e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    DEV_CLASS       dev_class;      /* peer CoD */
1472e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_BD_NAME    bd_name;        /* peer device name */
1473e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_SP_RMT_OOB;
1474e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1475e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1476e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* data type for BTM_SP_COMPLT_EVT */
1477e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
1478e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1479e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BD_ADDR         bd_addr;        /* peer address */
1480e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    DEV_CLASS       dev_class;      /* peer CoD */
1481e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_BD_NAME    bd_name;        /* peer device name */
1482e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_STATUS     status;         /* status of the simple pairing process */
1483e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_SP_COMPLT;
1484e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1485e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* data type for BTM_SP_UPGRADE_EVT */
1486e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
1487e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1488e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BD_ADDR         bd_addr;        /* peer address */
1489e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BOOLEAN         upgrade;        /* TRUE, to upgrade the link key */
1490e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_SP_UPGRADE;
1491e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1492e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef union
1493e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1494e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_SP_IO_REQ      io_req;     /* BTM_SP_IO_REQ_EVT      */
1495e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_SP_IO_RSP      io_rsp;     /* BTM_SP_IO_RSP_EVT      */
1496e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_SP_CFM_REQ     cfm_req;    /* BTM_SP_CFM_REQ_EVT     */
1497e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_SP_KEY_NOTIF   key_notif;  /* BTM_SP_KEY_NOTIF_EVT   */
1498e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_SP_KEY_REQ     key_req;    /* BTM_SP_KEY_REQ_EVT     */
1499e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_SP_KEYPRESS    key_press;  /* BTM_SP_KEYPRESS_EVT    */
1500e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_SP_LOC_OOB     loc_oob;    /* BTM_SP_LOC_OOB_EVT     */
1501e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_SP_RMT_OOB     rmt_oob;    /* BTM_SP_RMT_OOB_EVT     */
1502e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_SP_COMPLT      complt;     /* BTM_SP_COMPLT_EVT      */
15036ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach    tBTM_SP_UPGRADE     upgrade;    /* BTM_SP_UPGRADE_EVT      */
1504e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_SP_EVT_DATA;
1505e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1506e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Simple Pairing Events.  Called by the stack when Simple Pairing related
1507e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** events occur.
1508e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/
1509e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 (tBTM_SP_CALLBACK) (tBTM_SP_EVT event, tBTM_SP_EVT_DATA *p_data);
1510e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1511e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1512e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef void (tBTM_MKEY_CALLBACK) (BD_ADDR bd_addr, UINT8 status, UINT8 key_flag) ;
1513e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1514e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Encryption enabled/disabled complete: Optionally passed with BTM_SetEncryption.
1515e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameters are
1516e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**              BD Address of remote
1517e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**              optional data passed in by BTM_SetEncryption
1518e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**              tBTM_STATUS - result of the operation
1519e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/
1520e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef void (tBTM_SEC_CBACK) (BD_ADDR bd_addr, void *p_ref_data, tBTM_STATUS result);
1521e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1522e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Bond Cancel complete. Parameters are
1523e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**              Result of the cancel operation
1524e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
1525e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/
1526e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef void (tBTM_BOND_CANCEL_CMPL_CALLBACK) (tBTM_STATUS result);
1527e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
15286ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach/* LE related event and data structure
1529e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/
1530e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachenum
1531e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1532e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_LE_IO_REQ_EVT = 1,      /* received IO_CAPABILITY_REQUEST event */
1533e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_LE_SEC_REQUEST_EVT, /* security request event */
1534e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_LE_KEY_NOTIF_EVT,   /* received USER_PASSKEY_NOTIFY event */
1535e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_LE_KEY_REQ_EVT,     /* received USER_PASSKEY_REQUEST event */
1536e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_LE_OOB_REQ_EVT,     /* OOB data request event */
1537e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_LE_COMPLT_EVT,      /* received SIMPLE_PAIRING_COMPLETE event */
1538e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_LE_KEY_EVT         /* KEY update event */
1539e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach};
1540e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tBTM_LE_EVT;
1541e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1542e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_LE_KEY_PENC      SMP_SEC_KEY_TYPE_ENC        /* encryption information of peer device */
1543e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_LE_KEY_PID       SMP_SEC_KEY_TYPE_ID         /* identity key of the peer device */
1544e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_LE_KEY_PCSRK      SMP_SEC_KEY_TYPE_CSRK        /* peer SRK */
1545e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_LE_KEY_LENC      (SMP_SEC_KEY_TYPE_ENC << 3)       /* master role security information:div */
1546e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_LE_KEY_LID       (SMP_SEC_KEY_TYPE_ID << 3)        /* master device ID key */
1547e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_LE_KEY_LCSRK     (SMP_SEC_KEY_TYPE_CSRK << 3)       /* local CSRK has been deliver to peer */
1548e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tBTM_LE_KEY_TYPE;
1549e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
15506ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define BTM_LE_AUTH_REQ_NO_BOND SMP_AUTH_NO_BOND   /* 0 */
1551e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_LE_AUTH_REQ_BOND    SMP_AUTH_GEN_BOND  /* 1 << 0 */
1552e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_LE_AUTH_REQ_MITM    SMP_AUTH_YN_BIT    /* 1 << 2 */
1553e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tBTM_LE_AUTH_REQ;
1554e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1555e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_LE_AUTH_REQ_MASK SMP_AUTH_MASK  /* 0x03*/
1556e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1557e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* LE security level */
15586ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define BTM_LE_SEC_NONE             SMP_SEC_NONE
15596ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define BTM_LE_SEC_UNAUTHENTICATE   SMP_SEC_UNAUTHENTICATE
15606ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define BTM_LE_SEC_AUTHENTICATED    SMP_SEC_AUTHENTICATED
1561e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tBTM_LE_SEC;
1562e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1563e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1564e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
1565e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1566e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_IO_CAP         io_cap;         /* local IO capabilities */
1567e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8               oob_data;       /* OOB data present (locally) for the peer device */
1568e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_LE_AUTH_REQ    auth_req;       /* Authentication request (for local device) contain bonding and MITM info */
1569e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8               max_key_size;   /* max encryption key size */
1570e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_LE_KEY_TYPE    init_keys;      /* keys to be distributed, bit mask */
1571e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_LE_KEY_TYPE    resp_keys;      /* keys to be distributed, bit mask */
1572e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_LE_IO_REQ;
1573e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1574e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#if BLE_INCLUDED == TRUE && SMP_INCLUDED == TRUE
1575e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* data type for tBTM_LE_COMPLT */
1576e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
1577e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1578e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8       reason;
1579e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8       sec_level;
1580e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach}tBTM_LE_COMPLT;
1581e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#endif
1582e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1583e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* BLE encryption keys */
1584e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
1585e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1586e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BT_OCTET16  ltk;
1587e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BT_OCTET8   rand;
1588e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT16      ediv;
1589e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8       sec_level;
1590e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8       key_size;
1591e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach}tBTM_LE_PENC_KEYS;
1592e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1593e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* BLE CSRK keys */
1594e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
1595e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1596e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT32          counter;
1597e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BT_OCTET16      csrk;
1598e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8           sec_level;
1599e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach}tBTM_LE_PCSRK_KEYS;
1600e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1601e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* BLE Encryption reproduction keys */
1602e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
1603e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1604e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT16      div;
1605e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8       key_size;
1606e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8       sec_level;
1607e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach}tBTM_LE_LENC_KEYS;
1608e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1609e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* BLE SRK keys */
1610e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
1611e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1612e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT32          counter;
1613e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT16          div;
1614e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8           sec_level;
1615e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1616e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach}tBTM_LE_LCSRK_KEYS;
1617e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1618e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1619e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef union
1620e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1621e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_LE_PENC_KEYS   penc_key;       /* received peer encryption key */
1622e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_LE_PCSRK_KEYS   pcsrk_key;       /* received peer device SRK */
1623e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BT_OCTET16          pid_key;        /* peer device ID key */
1624e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_LE_LENC_KEYS   lenc_key;       /* local encryption reproduction keys LTK = = d1(ER,DIV,0)*/
1625e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_LE_LCSRK_KEYS   lcsrk_key;      /* local device CSRK = d1(ER,DIV,1)*/
1626e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach}tBTM_LE_KEY_VALUE;
1627e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1628e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
1629e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1630e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_LE_KEY_TYPE        key_type;
1631e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_LE_KEY_VALUE       *p_key_value;
1632e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach}tBTM_LE_KEY;
1633e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1634e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef union
1635e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1636e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_LE_IO_REQ      io_req;     /* BTM_LE_IO_REQ_EVT      */
1637e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT32              key_notif;  /* BTM_LE_KEY_NOTIF_EVT   */
1638e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                    /* no callback dta for BTM_LE_KEY_REQ_EVT & BTM_LE_OOB_REQ_EVT  */
1639e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#if BLE_INCLUDED == TRUE && SMP_INCLUDED == TRUE
1640e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_LE_COMPLT      complt;     /* BTM_LE_COMPLT_EVT      */
1641e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#endif
1642e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_LE_KEY         key;
1643e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_LE_EVT_DATA;
1644e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1645e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Simple Pairing Events.  Called by the stack when Simple Pairing related
1646e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** events occur.
1647e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/
1648e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 (tBTM_LE_CALLBACK) (tBTM_LE_EVT event, BD_ADDR bda, tBTM_LE_EVT_DATA *p_data);
1649e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1650e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_BLE_KEY_TYPE_ID         1
1651e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_BLE_KEY_TYPE_ER         2
16526ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define BTM_BLE_KEY_TYPE_COUNTER    3  //tobe obsolete
1653e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1654e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
1655e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1656e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BT_OCTET16       ir;
1657e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BT_OCTET16       irk;
1658e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BT_OCTET16       dhk;
1659e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1660e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach}tBTM_BLE_LOCAL_ID_KEYS;
1661e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1662e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef union
1663e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1664e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_BLE_LOCAL_ID_KEYS  id_keys;
1665e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BT_OCTET16              er;
1666e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach}tBTM_BLE_LOCAL_KEYS;
1667e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1668e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1669e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* New LE identity key for local device.
1670e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/
1671e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef void (tBTM_LE_KEY_CALLBACK) (UINT8 key_type, tBTM_BLE_LOCAL_KEYS *p_key);
1672e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1673e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1674e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/***************************
1675e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**  Security Manager Types
1676e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach****************************/
1677e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Structure that applications use to register with BTM_SecRegister */
1678e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
1679e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1680e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_AUTHORIZE_CALLBACK     *p_authorize_callback;
1681e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_PIN_CALLBACK           *p_pin_callback;
1682e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_LINK_KEY_CALLBACK      *p_link_key_callback;
1683e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_LINK_KEY_REQ_CALLBACK  *p_link_key_req_callback;
1684e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_AUTH_COMPLETE_CALLBACK *p_auth_complete_callback;
1685e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_ABORT_CALLBACK         *p_abort_callback;
1686e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_BOND_CANCEL_CMPL_CALLBACK *p_bond_cancel_cmpl_callback;
1687e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_SP_CALLBACK            *p_sp_callback;
16886ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#if BLE_INCLUDED == TRUE
1689e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#if SMP_INCLUDED == TRUE
1690e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_LE_CALLBACK            *p_le_callback;
1691e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#endif
1692e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_LE_KEY_CALLBACK        *p_le_key_callback;
1693e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#endif
1694e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_APPL_INFO;
1695e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1696e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Callback function for when a link supervision timeout event occurs.
1697e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** This asynchronous event is enabled/disabled by calling BTM_RegForLstoEvt().
1698e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/
1699e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef void (tBTM_LSTO_CBACK) (BD_ADDR remote_bda, UINT16 timeout);
1700e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1701e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*****************************************************************************
1702e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**  POWER MANAGEMENT
1703e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*****************************************************************************/
1704e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/****************************
1705e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**  Power Manager Constants
1706e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*****************************/
1707e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* BTM Power manager status codes */
1708e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachenum
1709e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1710e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_PM_STS_ACTIVE = HCI_MODE_ACTIVE,
1711e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_PM_STS_HOLD   = HCI_MODE_HOLD,
1712e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_PM_STS_SNIFF  = HCI_MODE_SNIFF,
1713e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_PM_STS_PARK   = HCI_MODE_PARK,
1714e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_PM_STS_SSR,     /* report the SSR parameters in HCI_SNIFF_SUB_RATE_EVT */
1715e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_PM_STS_PENDING,   /* when waiting for status from controller */
1716e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_PM_STS_ERROR   /* when HCI command status returns error */
1717e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach};
1718e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tBTM_PM_STATUS;
1719e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1720e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* BTM Power manager modes */
1721e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachenum
1722e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1723e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_PM_MD_ACTIVE = BTM_PM_STS_ACTIVE,
1724e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_PM_MD_HOLD   = BTM_PM_STS_HOLD,
1725e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_PM_MD_SNIFF  = BTM_PM_STS_SNIFF,
1726e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_PM_MD_PARK   = BTM_PM_STS_PARK,
1727e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_PM_MD_FORCE  = 0x10 /* OR this to force ACL link to a certain mode */
1728e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach};
1729e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tBTM_PM_MODE;
1730e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1731e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_PM_SET_ONLY_ID  0x80
1732e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1733e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Operation codes */
1734e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_PM_REG_SET      1 /* The module wants to set the desired power mode */
1735e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_PM_REG_NOTIF    2 /* The module wants to receive mode change event */
1736e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_PM_DEREG        4 /* The module does not want to involve with PM anymore */
1737e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1738e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/************************
1739e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**  Power Manager Types
1740e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*************************/
1741e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
1742e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1743e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT16          max;
1744e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT16          min;
1745e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT16          attempt;
1746e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT16          timeout;
1747e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_PM_MODE    mode;
1748e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_PM_PWR_MD;
1749e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1750e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*************************************
1751e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**  Power Manager Callback Functions
1752e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**************************************/
1753e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef void (tBTM_PM_STATUS_CBACK) (BD_ADDR p_bda, tBTM_PM_STATUS status,
1754e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                     UINT16 value, UINT8 hci_status);
1755e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1756e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1757e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/************************
1758e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**  Stored Linkkey Types
1759e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*************************/
1760e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_CB_EVT_RETURN_LINK_KEYS         1
1761e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_CB_EVT_READ_STORED_LINK_KEYS    2
1762e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_CB_EVT_WRITE_STORED_LINK_KEYS   3
1763e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_CB_EVT_DELETE_STORED_LINK_KEYS  4
1764e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1765e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
1766e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1767e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8          event;
1768e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1769e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_STORED_LINK_KEYS_EVT;
1770e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1771e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1772e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
1773e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1774e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8          event;
1775e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8          num_keys;
1776e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1777e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_RETURN_LINK_KEYS_EVT;
1778e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1779e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1780e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
1781e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1782e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BD_ADDR         bd_addr;
1783e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    LINK_KEY        link_key;
1784e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1785e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_BD_ADDR_LINK_KEY_PAIR;
1786e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1787e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1788e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
1789e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1790e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8          event;
1791e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8          status;
1792e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT16         max_keys;
1793e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT16         read_keys;
1794e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1795e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_READ_STORED_LINK_KEY_COMPLETE;
1796e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1797e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1798e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
1799e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1800e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8          event;
1801e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8          status;
1802e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8          num_keys;
1803e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1804e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_WRITE_STORED_LINK_KEY_COMPLETE;
1805e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1806e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1807e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
1808e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1809e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8          event;
1810e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8          status;
1811e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT16         num_keys;
1812e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1813e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_DELETE_STORED_LINK_KEY_COMPLETE;
1814e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1815e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1816e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* These macros are defined to check the Broadcom features supported in controller
1817e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach * (the return value for BTM_ReadBrcmFeatures() */
1818e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* multi-av */
1819e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_FEATURE_MULTI_AV_MASK 0x01
1820e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_FEATURE_MULTI_AV_OFF  0
1821e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_VSC_MULTI_AV_SUPPORTED(x) ((x)[BTM_FEATURE_MULTI_AV_OFF] & BTM_FEATURE_MULTI_AV_MASK)
1822e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1823e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* WBS SBC codec */
1824e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_FEATURE_WBS_SBC_MASK 0x02
1825e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_FEATURE_WBS_SBC_OFF  0
1826e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_VSC_WBS_SBC_SUPPORTED(x) ((x)[BTM_FEATURE_WBS_SBC_OFF] & BTM_FEATURE_WBS_SBC_MASK)
1827e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1828e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Advanced Audio LC-PLC */
1829e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_FEATURE_AUDIO_LC_PLC_MASK 0x04
1830e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_FEATURE_AUDIO_LC_PLC_OFF  0
1831e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_VSC_AUDIO_LC_PLC_SUPPORTED(x) ((x)[BTM_FEATURE_AUDIO_LC_PLC_OFF] & BTM_FEATURE_AUDIO_LC_PLC_MASK)
1832e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1833e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Light stack for audio routing in Controller */
1834e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_FEATURE_LIGHT_STACK_MASK 0x08
1835e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_FEATURE_LIGHT_STACK_OFF  0
1836e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_VSC_LIGHT_STACK_SUPPORTED(x) ((x)[BTM_FEATURE_LIGHT_STACK_OFF] & BTM_FEATURE_LIGHT_STACK_MASK)
1837e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1838e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* NFC support */
1839e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_FEATURE_NFC_MASK        (HCI_BRCM_FEATURE_NFC_MASK) /* 0x10 */
1840e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_FEATURE_NFC_OFF         (HCI_BRCM_FEATURE_NFC_OFF)  /* 0    */
1841e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_VSC_NFC_SUPPORTED(x) ((x)[BTM_FEATURE_NFC_OFF] & BTM_FEATURE_NFC_MASK)
1842e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1843e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1844e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/************************
1845e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**  Dual-Stack support
1846e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*************************/
1847e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* BTM_SYNC_FAIL_EVT reason codes */
1848e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SYNC_SUCCESS                    0
1849e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SYNC_FAIL_BTE_SWITCH_REJECTED   1
1850e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SYNC_FAIL_TRANS_PAUSE           2
1851e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SYNC_FAIL_CORE_SYNC             3
1852e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SYNC_FAIL_BTA_SYNC              4
1853e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SYNC_FAIL_TRANS_RESUME          5
1854e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SYNC_FAIL_RESYNC                6
1855e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SYNC_FAIL_ERROR                 7
1856e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SYNC_FAIL_UIPC_OPEN             8
1857e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tBTM_SYNC_STATUS;
1858e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1859e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Direction of sync (used by BTM_SyncStack) */
1860e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SW_BB_TO_MM     0
1861e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SW_TO_BB        1   /* Switch back to baseband stack (from either MM or BTC host) */
1862e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SW_RESYNC       2
1863e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SW_BB_TO_BTC    3   /* Switch from baseband stack to Bluetooth Controller Host stack */
1864e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SW_MM_TO_BB     4
1865e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SW_BTC_TO_BB    5
1866e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tBTM_SW_DIR;
1867e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1868e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Stack synchronization events (returned by tBTM_SYNC_STACK_CBACK callback) */
1869e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SYNC_CPLT_EVT   0
1870e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_SYNC_BTA_EVT    1
1871e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_RESYNC_CPLT_EVT 2
1872e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_UIPC_OPENED_EVT 3
1873e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_UIPC_CLOSED_EVT 4
1874e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tBTM_SYNC_STACK_EVT;
1875e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1876e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Synchronization info from BTA/application that will be sent when calling BTE sync request functions */
1877e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
1878e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1879e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_SW_DIR dir;
1880e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT16      lcid[BTM_SYNC_INFO_NUM_STR];
1881e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8       avdt_handle[BTM_SYNC_INFO_NUM_STR];
1882e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_SYNC_INFO;
1883e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1884e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Stack synchonization callback function
1885e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameters are
1886e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**              event:  stack synchronization event
1887e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**              status: BTM_SUCCESS if event was successful
1888e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/
1889e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef void (*tBTM_SYNC_STACK_CBACK)(tBTM_SYNC_STACK_EVT event, tBTM_SYNC_STATUS status);
1890e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1891e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1892e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Sync complete callback function. Called by bte layers after synchronization is complete
1893e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** so that BTM_SYNC can procede with the next step for switching stack to MM
1894e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
1895e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameters are
1896e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**              status: BTM_SUCCESS if synchronization was successful
1897e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/
1898e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef void (*tBTM_SYNC_CPLT_CBACK)(tBTM_STATUS status);
1899e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1900e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1901e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1902e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* IPC event callback function. Called by BTM when an IPC event is received.
1903e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** These events are currently sent to DM through the callback function.
1904e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
1905e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameters are
1906e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**              status: BTM_SUCCESS if synchronization was successful
1907e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**              p_data: Actual message in the IPC
1908e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/
1909e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef void (tBTM_IPC_EVT_CBACK)(tBTM_STATUS status, BT_HDR *p_data);
1910e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1911e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* MIP evnets, callbacks    */
1912e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachenum
1913e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1914e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_MIP_MODE_CHG_EVT,
1915e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_MIP_DISCONNECT_EVT,
1916e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_MIP_PKTS_COMPL_EVT,
1917e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_MIP_RXDATA_EVT
1918e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach};
1919e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tBTM_MIP_EVT;
1920e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1921e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
1922e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1923e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_MIP_EVT    event;
1924e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BD_ADDR         bd_addr;
1925e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT16          mip_id;
1926e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_MIP_MODE_CHANGE;
1927e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1928e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
1929e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1930e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_MIP_EVT    event;
1931e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT16          mip_id;
1932e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8           disc_reason;
1933e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_MIP_CONN_TIMEOUT;
1934e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1935e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTM_MIP_MAX_RX_LEN  17
1936e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1937e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
1938e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1939e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_MIP_EVT    event;
1940e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT16          mip_id;
1941e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8           rx_len;
1942e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8           rx_data[BTM_MIP_MAX_RX_LEN];
1943e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_MIP_RXDATA;
1944e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1945e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
1946e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1947e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_MIP_EVT    event;
1948e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BD_ADDR         bd_addr;
1949e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8           data[11];       /* data[0] shows Vender-specific device type */
1950e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_MIP_EIR_HANDSHAKE;
1951e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1952e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
1953e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1954e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_MIP_EVT    event;
1955e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT16          num_sent;       /* Number of packets completed at the controller */
1956e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_MIP_PKTS_COMPL;
1957e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1958e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef union
1959e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
1960e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_MIP_EVT            event;
1961e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_MIP_MODE_CHANGE    mod_chg;
1962e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_MIP_CONN_TIMEOUT   conn_tmo;
1963e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_MIP_EIR_HANDSHAKE  eir;
1964e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_MIP_PKTS_COMPL     completed;
1965e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tBTM_MIP_RXDATA         rxdata;
1966e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTM_MIP_EVENT_DATA;
1967e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1968e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* MIP event callback function  */
1969e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef void (tBTM_MIP_EVENTS_CB) (tBTM_MIP_EVT event, tBTM_MIP_EVENT_DATA data);
1970e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1971e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* MIP Device query callback function  */
1972e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef BOOLEAN (tBTM_MIP_QUERY_CB) (BD_ADDR dev_addr, UINT8 *p_mode, LINK_KEY link_key);
1973e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1974e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*****************************************************************************
1975e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**  EXTERNAL FUNCTION DECLARATIONS
1976e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*****************************************************************************/
1977e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#ifdef __cplusplus
1978e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachextern "C" {
1979e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#endif
1980e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1981e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*****************************************************************************
1982e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**  DEVICE CONTROL and COMMON FUNCTIONS
1983e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*****************************************************************************/
1984e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1985e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
1986e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
1987e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SetAfhChannels
1988e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
1989e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to disable channels
1990e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
1991e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          status
1992e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
1993e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
1994e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_SetAfhChannels (UINT8 first, UINT8 last);
1995e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
1996e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
1997e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
1998e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SetAfhChannelAssessment
1999e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2000e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to set the channel assessment mode on or off
2001e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2002e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          status
2003e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2004e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2005e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_SetAfhChannelAssessment (BOOLEAN enable_or_disable);
2006e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2007e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2008e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2009e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_DeviceReset
2010e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2011e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to reset the controller.The Callback function
2012e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  if provided is called when startup of the device has
2013e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  completed.
2014e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2015e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          void
2016e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2017e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2018e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern void BTM_DeviceReset (tBTM_CMPL_CB *p_cb);
2019e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2020e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2021e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2022e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2023e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_IsDeviceUp
2024e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2025e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to check if the device is up.
2026e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2027e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          TRUE if device is up, else FALSE
2028e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2029e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2030e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern BOOLEAN BTM_IsDeviceUp (void);
2031e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2032e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2033e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2034e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2035e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SetLocalDeviceName
2036e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2037e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to set the local device name.
2038e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2039e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_CMD_STARTED if successful, otherwise an error
2040e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2041e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2042e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_SetLocalDeviceName (char *p_name);
2043e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2044e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2045e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2046e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SetDeviceClass
2047e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2048e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to set the local device class
2049e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2050e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_SUCCESS if successful, otherwise an error
2051e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2052e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2053e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS  BTM_SetDeviceClass (DEV_CLASS dev_class);
2054e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2055e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2056e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2057e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2058e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_ReadLocalDeviceName
2059e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2060e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to read the local device name.
2061e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2062e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          status of the operation
2063e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  If success, BTM_SUCCESS is returned and p_name points stored
2064e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                              local device name
2065e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  If BTM doesn't store local device name, BTM_NO_RESOURCES is
2066e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                              is returned and p_name is set to NULL
2067e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2068e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2069e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_ReadLocalDeviceName (char **p_name);
2070e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2071e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2072e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2073e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_ReadLocalDeviceNameFromController
2074e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
20756ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** Description      Get local device name from controller. Do not use cached
2076e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  name (used to get chip-id prior to btm reset complete).
2077e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2078e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_CMD_STARTED if successful, otherwise an error
2079e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2080e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2081e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_ReadLocalDeviceNameFromController (tBTM_CMPL_CB *p_rln_cmpl_cback);
2082e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2083e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2084e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2085e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_ReadLocalVersion
2086e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2087e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to read the local device version
2088e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2089e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_SUCCESS if successful, otherwise an error
2090e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2091e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2092e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_ReadLocalVersion (tBTM_VERSION_INFO *p_vers);
2093e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2094e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2095e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2096e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2097e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_ReadLocalDeviceAddr
2098e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2099e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to read the local device address
2100e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2101e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_SUCCESS
2102e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  Callback returns the local device address
2103e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2104e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2105e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_ReadLocalDeviceAddr (tBTM_CMPL_CB *p_cb);
2106e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2107e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2108e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2109e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2110e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_GetLocalDeviceAddr
2111e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2112e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to read the local device address
2113e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2114e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          void
2115e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  the local device address is copied into bd_addr
2116e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2117e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2118e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern void BTM_GetLocalDeviceAddr (BD_ADDR bd_addr);
2119e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2120e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2121e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2122e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2123e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_ReadDeviceClass
2124e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2125e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to read the local device class
2126e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2127e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          pointer to the device class
2128e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2129e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2130e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern UINT8 *BTM_ReadDeviceClass (void);
2131e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2132e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2133e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2134e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2135e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_ReadLocalFeatures
2136e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2137e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to read the local features
2138e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2139e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          pointer to the local features string
2140e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2141e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2142e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern UINT8 *BTM_ReadLocalFeatures (void);
2143e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2144e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2145e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2146e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_ReadBrcmFeatures
2147e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2148e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to read the Broadcom specific features
2149e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2150e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          pointer to the Broadcom features string
2151e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2152e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2153e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern UINT8 *BTM_ReadBrcmFeatures (void);
2154e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2155e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2156e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2157e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_RegisterForDeviceStatusNotif
2158e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2159e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to register for device status
2160e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  change notifications.
2161e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2162e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          pointer to previous caller's callback function or NULL if first
2163e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  registration.
2164e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2165e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2166e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_DEV_STATUS_CB *BTM_RegisterForDeviceStatusNotif (tBTM_DEV_STATUS_CB *p_cb);
2167e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2168e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2169e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2170e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2171e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_RegisterForVSEvents
2172e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2173e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to register/deregister for vendor
2174e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  specific HCI events.
2175e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2176e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  If is_register=TRUE, then the function will be registered;
2177e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  if is_register=FALSE, then the function will be deregistered.
2178e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2179e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_SUCCESS if successful,
2180e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_BUSY if maximum number of callbacks have already been
2181e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                           registered.
2182e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2183e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2184e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_RegisterForVSEvents (tBTM_VS_EVT_CB *p_cb, BOOLEAN is_register);
2185e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2186e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2187e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2188e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2189e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_ContinueReset
2190e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2191e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      Instructs stack to continue its stack initialization after
2192e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  an application has completed any vender specific commands
2193e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  sent to the controller.
2194e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2195e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  Note: This function is only called if an application
2196e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                      initialization function has been inserted in the reset
2197e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                      sequence.  (BTM_APP_DEV_INIT is defined with a function).
2198e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2199e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          void
2200e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2201e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2202e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern void BTM_ContinueReset (void);
2203e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2204e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2205e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2206e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2207e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_VendorSpecificCommand
2208e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2209e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      Send a vendor specific HCI command to the controller.
2210e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2211e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns
2212e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**      BTM_SUCCESS         Command sent. Does not expect command complete
2213e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                              event. (command cmpl callback param is NULL)
2214e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**      BTM_CMD_STARTED     Command sent. Waiting for command cmpl event.
2215e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**      BTM_BUSY            Command not sent. Waiting for cmd cmpl event for
2216e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                              prior command.
2217e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2218e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2219e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_VendorSpecificCommand(UINT16 opcode,
2220e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                         UINT8 param_len,
2221e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                         UINT8 *p_param_buf,
2222e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                         tBTM_VSC_CMPL_CB *p_cb);
2223e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2224e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2225e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2226e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2227e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_AllocateSCN
2228e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2229e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      Look through the Server Channel Numbers for a free one to be
2230e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  used with an RFCOMM connection.
2231e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2232e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          Allocated SCN number or 0 if none.
2233e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2234e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2235e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern UINT8 BTM_AllocateSCN(void);
2236e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2237e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach// btla-specific ++
2238e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2239e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2240e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_TryAllocateSCN
2241e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2242e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      Try to allocate a fixed server channel
2243e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2244e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          Returns TRUE if server channel was available
2245e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2246e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2247e448862a47c08eb23185aaed574b39264f5005fcAndre EisenbachBTM_API extern BOOLEAN BTM_TryAllocateSCN(UINT8 scn);
2248e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach// btla-specific --
2249e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2250e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2251e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2252e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2253e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_FreeSCN
2254e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2255e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      Free the specified SCN.
2256e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2257e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          TRUE if successful, FALSE if SCN is not in use or invalid
2258e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2259e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2260e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern BOOLEAN BTM_FreeSCN(UINT8 scn);
2261e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2262e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2263e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2264e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2265e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SetTraceLevel
2266e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2267e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function sets the trace level for BTM.  If called with
2268e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  a value of 0xFF, it simply returns the current trace level.
2269e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2270e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          The new or current trace level
2271e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2272e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2273e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern UINT8 BTM_SetTraceLevel (UINT8 new_level);
2274e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2275e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2276e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2277e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2278e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_WritePageTimeout
2279e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2280e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      Send HCI Wite Page Timeout.
2281e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2282e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns
2283e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**      BTM_SUCCESS         Command sent.
2284e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**      BTM_NO_RESOURCES    If out of resources to send the command.
2285e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2286e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2287e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_WritePageTimeout(UINT16 timeout);
2288e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2289e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2290e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2291e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_WriteVoiceSettings
2292e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2293e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      Send HCI Write Voice Settings command.
2294e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  See hcidefs.h for settings bitmask values.
2295e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2296e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns
2297e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**      BTM_SUCCESS         Command sent.
2298e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**      BTM_NO_RESOURCES     If out of resources to send the command.
2299e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2300e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2301e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2302e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_WriteVoiceSettings(UINT16 settings);
2303e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2304e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2305e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2306e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_EnableTestMode
2307e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2308e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      Send HCI the enable device under test command.
2309e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2310e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  Note: Controller can only be taken out of this mode by
2311e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                      resetting the controller.
2312e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2313e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns
2314e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**      BTM_SUCCESS         Command sent.
2315e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**      BTM_NO_RESOURCES    If out of resources to send the command.
2316e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2317e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2318e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2319e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_EnableTestMode(void);
2320e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2321e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2322e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*****************************************************************************
2323e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**  DEVICE DISCOVERY FUNCTIONS - Inquiry, Remote Name, Discovery, Class of Device
2324e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*****************************************************************************/
2325e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2326e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2327e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2328e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SetDiscoverability
2329e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2330e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to set the device into or out of
2331e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  discoverable mode. Discoverable mode means inquiry
2332e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  scans are enabled.  If a value of '0' is entered for window or
2333e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  interval, the default values are used.
2334e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2335e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_SUCCESS if successful
2336e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_BUSY if a setting of the filter is already in progress
2337e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_NO_RESOURCES if couldn't get a memory pool buffer
2338e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_ILLEGAL_VALUE if a bad parameter was detected
2339e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_WRONG_MODE if the device is not up.
2340e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2341e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2342e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS  BTM_SetDiscoverability (UINT16 inq_mode, UINT16 window,
2343e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                        UINT16 interval);
2344e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2345e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2346e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2347e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2348e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_ReadDiscoverability
2349e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2350e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to read the current discoverability
2351e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  mode of the device.
2352e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2353e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Output Params:   p_window - current inquiry scan duration
2354e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  p_interval - current inquiry scan interval
2355e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2356e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_NON_DISCOVERABLE, BTM_LIMITED_DISCOVERABLE, or
2357e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_GENERAL_DISCOVERABLE
2358e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2359e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2360e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern UINT16       BTM_ReadDiscoverability (UINT16 *p_window,
2361e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                         UINT16 *p_interval);
2362e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2363e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2364e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2365e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2366e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SetPeriodicInquiryMode
2367e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2368e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to set the device periodic inquiry mode.
2369e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  If the duration is zero, the periodic inquiry mode is cancelled.
2370e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2371e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameters:      p_inqparms - pointer to the inquiry information
2372e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                      mode - GENERAL or LIMITED inquiry
2373e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                      duration - length in 1.28 sec intervals (If '0', the inquiry is CANCELLED)
2374e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                      max_resps - maximum amount of devices to search for before ending the inquiry
2375e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                      filter_cond_type - BTM_CLR_INQUIRY_FILTER, BTM_FILTER_COND_DEVICE_CLASS, or
2376e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                                         BTM_FILTER_COND_BD_ADDR
2377e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                      filter_cond - value for the filter (based on filter_cond_type)
2378e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2379e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  max_delay - maximum amount of time between successive inquiries
2380e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  min_delay - minimum amount of time between successive inquiries
2381e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  p_results_cb - callback returning pointer to results (tBTM_INQ_RESULTS)
2382e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2383e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_CMD_STARTED if successfully started
2384e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_ILLEGAL_VALUE if a bad parameter is detected
2385e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_NO_RESOURCES if could not allocate a message buffer
2386e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_SUCCESS - if cancelling the periodic inquiry
2387e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_BUSY - if an inquiry is already active
2388e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_WRONG_MODE if the device is not up.
2389e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2390e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2391e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS  BTM_SetPeriodicInquiryMode (tBTM_INQ_PARMS *p_inqparms,
2392e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                            UINT16 max_delay, UINT16 min_delay,
2393e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                            tBTM_INQ_RESULTS_CB *p_results_cb);
2394e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2395e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2396e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2397e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2398e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_StartInquiry
2399e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2400e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to start an inquiry.
2401e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2402e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameters:      p_inqparms - pointer to the inquiry information
2403e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                      mode - GENERAL or LIMITED inquiry
2404e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                      duration - length in 1.28 sec intervals (If '0', the inquiry is CANCELLED)
2405e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                      max_resps - maximum amount of devices to search for before ending the inquiry
2406e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                      filter_cond_type - BTM_CLR_INQUIRY_FILTER, BTM_FILTER_COND_DEVICE_CLASS, or
2407e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                                         BTM_FILTER_COND_BD_ADDR
2408e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                      filter_cond - value for the filter (based on filter_cond_type)
2409e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2410e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  p_results_cb   - Pointer to the callback routine which gets called
2411e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                                upon receipt of an inquiry result. If this field is
2412e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                                NULL, the application is not notified.
2413e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2414e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  p_cmpl_cb   - Pointer to the callback routine which gets called
2415e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                                upon completion.  If this field is NULL, the
2416e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                                application is not notified when completed.
2417e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          tBTM_STATUS
2418e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_CMD_STARTED if successfully initiated
2419e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_BUSY if already in progress
2420e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_ILLEGAL_VALUE if parameter(s) are out of range
2421e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_NO_RESOURCES if could not allocate resources to start the command
2422e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_WRONG_MODE if the device is not up.
2423e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2424e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2425e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS  BTM_StartInquiry (tBTM_INQ_PARMS *p_inqparms,
2426e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                  tBTM_INQ_RESULTS_CB *p_results_cb,
2427e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                  tBTM_CMPL_CB *p_cmpl_cb);
2428e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2429e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2430e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2431e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2432e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_IsInquiryActive
2433e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2434e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function returns a bit mask of the current inquiry state
2435e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2436e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_INQUIRY_INACTIVE if inactive (0)
2437e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_LIMITED_INQUIRY_ACTIVE if a limted inquiry is active
2438e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_GENERAL_INQUIRY_ACTIVE if a general inquiry is active
2439e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_PERIODIC_INQUIRY_ACTIVE if a periodic inquiry is active
2440e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2441e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2442e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern UINT16 BTM_IsInquiryActive (void);
2443e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2444e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2445e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2446e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2447e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_CancelInquiry
2448e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2449e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function cancels an inquiry if active
2450e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2451e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_SUCCESS if successful
2452e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_NO_RESOURCES if could not allocate a message buffer
2453e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_WRONG_MODE if the device is not up.
2454e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2455e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2456e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_CancelInquiry(void);
2457e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2458e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2459e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2460e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2461e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_CancelPeriodicInquiry
2462e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2463e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function cancels a periodic inquiry
2464e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2465e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns
2466e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_NO_RESOURCES if could not allocate a message buffer
2467e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_SUCCESS - if cancelling the periodic inquiry
2468e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_WRONG_MODE if the device is not up.
2469e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2470e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2471e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_CancelPeriodicInquiry(void);
2472e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2473e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2474e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2475e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2476e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SetInquiryFilterCallback
2477e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2478e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      Host can register to be asked whenever an inquiry result
2479e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  is received.  If host does not like the device no name
2480e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  request is issued for the device
2481e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2482e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          void
2483e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2484e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2485e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern void BTM_SetInquiryFilterCallback(tBTM_FILTER_CB *p_callback);
2486e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2487e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2488e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2489e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2490e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SetConnectability
2491e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2492e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to set the device into or out of
2493e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  connectable mode. Discoverable mode means page scans enabled.
2494e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2495e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_SUCCESS if successful
2496e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_ILLEGAL_VALUE if a bad parameter is detected
2497e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_NO_RESOURCES if could not allocate a message buffer
2498e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_WRONG_MODE if the device is not up.
2499e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2500e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2501e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_SetConnectability (UINT16 page_mode, UINT16 window,
2502e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                      UINT16 interval);
2503e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2504e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2505e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2506e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2507e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_ReadConnectability
2508e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2509e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to read the current discoverability
2510e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  mode of the device.
2511e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Output Params    p_window - current page scan duration
2512e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  p_interval - current time between page scans
2513e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2514e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_NON_CONNECTABLE or BTM_CONNECTABLE
2515e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2516e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2517e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern UINT16 BTM_ReadConnectability (UINT16 *p_window, UINT16 *p_interval);
2518e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2519e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2520e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2521e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2522e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SetInquiryMode
2523e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2524e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to set standard, with RSSI
2525e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  mode or extended of the inquiry for local device.
2526e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2527e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Input Params:    BTM_INQ_RESULT_STANDARD, BTM_INQ_RESULT_WITH_RSSI or
2528e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_INQ_RESULT_EXTENDED
2529e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2530e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_SUCCESS if successful
2531e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_NO_RESOURCES if couldn't get a memory pool buffer
2532e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_ILLEGAL_VALUE if a bad parameter was detected
2533e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_WRONG_MODE if the device is not up.
2534e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2535e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2536e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BT_API extern tBTM_STATUS  BTM_SetInquiryMode (UINT8 mode);
2537e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2538e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2539e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2540e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SetInquiryScanType
2541e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2542e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to set the iquiry scan-type to
2543e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  standard or interlaced.
2544e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2545e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Input Params:    BTM_SCAN_TYPE_STANDARD or BTM_SCAN_TYPE_INTERLACED
2546e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2547e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_SUCCESS if successful
2548e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_MODE_UNSUPPORTED if not a 1.2 device
2549e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_WRONG_MODE if the device is not up.
2550e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2551e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2552e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BT_API extern tBTM_STATUS BTM_SetInquiryScanType (UINT16 scan_type);
2553e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2554e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2555e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2556e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SetPageScanType
2557e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2558e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to set the page scan-type to
2559e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  standard or interlaced.
2560e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2561e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Input Params:    BTM_SCAN_TYPE_STANDARD or BTM_SCAN_TYPE_INTERLACED
2562e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2563e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_SUCCESS if successful
2564e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_MODE_UNSUPPORTED if not a 1.2 device
2565e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_WRONG_MODE if the device is not up.
2566e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2567e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2568e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2569e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BT_API extern tBTM_STATUS BTM_SetPageScanType (UINT16 scan_type);
2570e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2571e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2572e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2573e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_ReadRemoteDeviceName
2574e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2575e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function initiates a remote device HCI command to the
2576e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  controller and calls the callback when the process has completed.
2577e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2578e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Input Params:    remote_bda      - device address of name to retrieve
2579e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  p_cb            - callback function called when BTM_CMD_STARTED
2580e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                                    is returned.
2581e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                                    A pointer to tBTM_REMOTE_DEV_NAME is passed to the
2582e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                                    callback.
2583e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2584e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns
2585e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_CMD_STARTED is returned if the request was successfully sent
2586e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                                  to HCI.
2587e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_BUSY if already in progress
2588e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_UNKNOWN_ADDR if device address is bad
2589e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_NO_RESOURCES if could not allocate resources to start the command
2590e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_WRONG_MODE if the device is not up.
2591e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2592e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2593e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS  BTM_ReadRemoteDeviceName (BD_ADDR remote_bda,
2594e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                          tBTM_CMPL_CB *p_cb);
2595e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2596e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2597e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2598e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2599e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_CancelRemoteDeviceName
2600e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2601e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function initiates the cancel request for the specified
2602e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  remote device.
2603e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2604e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Input Params:    None
2605e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2606e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns
2607e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_CMD_STARTED is returned if the request was successfully sent
2608e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                                  to HCI.
2609e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_NO_RESOURCES if could not allocate resources to start the command
2610e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_WRONG_MODE if there is not an active remote name request.
2611e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2612e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2613e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS  BTM_CancelRemoteDeviceName (void);
2614e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2615e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2616e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2617e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_ReadRemoteVersion
2618e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2619e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to read a remote device's version
2620e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2621e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_SUCCESS if successful, otherwise an error
2622e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2623e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2624e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_ReadRemoteVersion (BD_ADDR addr,
2625e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                      UINT8 *lmp_version,
2626e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                      UINT16 *manufacturer,
2627e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                      UINT16 *lmp_sub_version);
2628e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2629e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2630e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2631e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_ReadRemoteFeatures
2632e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2633e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to read a remote device's features
2634e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2635e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          pointer to the features string
2636e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2637e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2638e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern UINT8 *BTM_ReadRemoteFeatures (BD_ADDR addr);
2639e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2640e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2641e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2642e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_InqFirstResult
2643e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2644e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function looks through the inquiry database for the first
2645e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  used entrysince the LAST inquiry. This is used in conjunction
2646e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  with BTM_InqNext by applications as a way to walk through the
2647e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  inquiry results database.
2648e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2649e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          pointer to first in-use entry, or NULL if DB is empty
2650e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2651e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2652e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_INQ_INFO *BTM_InqFirstResult (void);
2653e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2654e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2655e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2656e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2657e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_InqNextResult
2658e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2659e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function looks through the inquiry database for the next
2660e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  used entrysince the LAST inquiry. If the input parameter is NULL,
2661e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  the first entry is returned.
2662e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2663e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          pointer to next in-use entry, or NULL if no more found.
2664e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2665e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2666e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_INQ_INFO *BTM_InqNextResult (tBTM_INQ_INFO *p_cur);
2667e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2668e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2669e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2670e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2671e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_InqDbRead
2672e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2673e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function looks through the inquiry database for a match
2674e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  based on Bluetooth Device Address. This is the application's
2675e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  interface to get the inquiry details of a specific BD address.
2676e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2677e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          pointer to entry, or NULL if not found
2678e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2679e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2680e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_INQ_INFO *BTM_InqDbRead (BD_ADDR p_bda);
2681e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2682e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2683e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2684e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2685e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_InqDbFirst
2686e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2687e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function looks through the inquiry database for the first
2688e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  used entry, and returns that. This is used in conjunction with
2689e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_InqDbNext by applications as a way to walk through the
2690e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  inquiry database.
2691e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2692e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          pointer to first in-use entry, or NULL if DB is empty
2693e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2694e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2695e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_INQ_INFO *BTM_InqDbFirst (void);
2696e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2697e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2698e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2699e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2700e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_InqDbNext
2701e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2702e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function looks through the inquiry database for the next
2703e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  used entry, and returns that.  If the input parameter is NULL,
2704e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  the first entry is returned.
2705e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2706e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          pointer to next in-use entry, or NULL if no more found.
2707e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2708e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2709e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_INQ_INFO *BTM_InqDbNext (tBTM_INQ_INFO *p_cur);
2710e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2711e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2712e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2713e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2714e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_ClearInqDb
2715e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2716e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to clear out a device or all devices
2717e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  from the inquiry database.
2718e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2719e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameter        p_bda - (input) BD_ADDR ->  Address of device to clear
2720e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                                              (NULL clears all entries)
2721e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2722e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_BUSY if an inquiry, get remote name, or event filter
2723e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                          is active, otherwise BTM_SUCCESS
2724e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2725e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2726e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS  BTM_ClearInqDb (BD_ADDR p_bda);
2727e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2728e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2729e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2730e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2731e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_ReadNumInqDbEntries
2732e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2733e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          This function returns the number of entries in the inquiry database.
2734e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2735e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2736e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern UINT8 BTM_ReadNumInqDbEntries (void);
2737e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2738e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2739e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2740e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2741e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_InquiryRegisterForChanges
2742e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2743e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to register a callback for when the
2744e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  inquiry database changes, i.e. new entry or entry deleted.
2745e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2746e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_SUCCESS if successful, otherwise error code
2747e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2748e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2749e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_InquiryRegisterForChanges (tBTM_INQ_DB_CHANGE_CB *p_cb);
2750e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2751e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2752e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2753e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_ReadInquiryRspTxPower
2754e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2755e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This command will read the inquiry Transmit Power level used
27566ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach**                  to transmit the FHS and EIR data packets.
2757e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  This can be used directly in the Tx Power Level EIR data type.
2758e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2759e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_SUCCESS if successful
2760e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2761e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2762e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_ReadInquiryRspTxPower (tBTM_CMPL_CB *p_cb);
2763e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2764e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2765e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2766e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_WriteInquiryTxPower
2767e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
27686ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** Description      This command is used to write the inquiry transmit power level
27696ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach**                  used to transmit the inquiry (ID) data packets. The Controller
2770e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  should use the supported TX power level closest to the Tx_Power
2771e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  parameter.
2772e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2773e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_SUCCESS if successful
2774e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2775e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2776e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS  BTM_WriteInquiryTxPower (INT8 tx_power);
2777e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2778e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2779e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2780e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_StartDiscovery
2781e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2782e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called by an application (or profile)
2783e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  when it wants to trigger an service discovery using the
2784e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM's discovery database.
2785e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2786e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          tBTM_STATUS
2787e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                      BTM_CMD_STARTED if the discovery was initiated
2788e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                      BTM_BUSY if one is already in progress
2789e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                      BTM_UNKNOWN_ADDR if no addresses are in the INQ DB
2790e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                      BTM_ERR_PROCESSING if err initiating the command
2791e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2792e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2793e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_StartDiscovery (tBTM_CMPL_CB *p_cmpl_cb,
2794e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                   BD_ADDR_PTR p_rem_addr);
2795e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2796e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2797e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2798e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2799e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_FindAttribute
2800e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2801e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called by an application (or profile)
2802e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  when it wants to see if an attribute exists in the BTM
2803e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  discovery database.
2804e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2805e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          Pointer to matching record, or NULL
2806e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2807e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2808e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tSDP_DISC_REC *BTM_FindAttribute (UINT16 attr_id,
2809e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                     tSDP_DISC_REC *p_start_rec);
2810e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2811e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2812e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2813e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2814e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_FindService
2815e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2816e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called by an application (or profile)
2817e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  when it wants to see if a service exists in the BTM
2818e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  discovery database.
2819e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2820e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          Pointer to matching record, or NULL
2821e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2822e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2823e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tSDP_DISC_REC *BTM_FindService (UINT16 service_uuid,
2824e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                   tSDP_DISC_REC *p_start_rec);
2825e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2826e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2827e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2828e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2829e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SetDiscoveryParams
2830e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2831e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to set the BTM default discovery parameters.
2832e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  These UUID and attribute filters are used during the call to
2833e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_StartDiscovery.
2834e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2835e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          void
2836e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2837e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2838e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern void BTM_SetDiscoveryParams (UINT16 num_uuid, tSDP_UUID *p_uuid_list,
2839e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                UINT16 num_attr, UINT16 *p_attr_list);
2840e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2841e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2842e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*****************************************************************************
2843e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**  ACL CHANNEL MANAGEMENT FUNCTIONS
2844e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*****************************************************************************/
2845e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2846e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2847e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SetLinkPolicy
2848e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2849e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      Create and send HCI "Write Policy Set" command
2850e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2851e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_CMD_STARTED if successfully initiated, otherwise error
2852e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2853e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2854e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_SetLinkPolicy (BD_ADDR remote_bda,
2855e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                  UINT16 *settings);
2856e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2857e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2858e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2859e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2860e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_ReadLinkPolicy
2861e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2862e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to read the link policy settings.
2863e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  The address of link policy results are returned in the callback.
2864e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  (tBTM_LNK_POLICY_RESULTS)
2865e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2866e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_CMD_STARTED if successfully initiated, otherwise error
2867e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2868e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2869e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_ReadLinkPolicy (BD_ADDR remote_bda,
2870e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                   tBTM_CMPL_CB *p_cb);
2871e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2872e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2873e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2874e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2875e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SetDefaultLinkPolicy
2876e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2877e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      Set the default value for HCI "Write Policy Set" command
2878e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  to use when an ACL link is created.
2879e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2880e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          void
2881e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2882e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2883e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern void BTM_SetDefaultLinkPolicy (UINT16 settings);
2884e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2885e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2886e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2887e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2888e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SetDefaultLinkSuperTout
2889e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2890e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      Set the default value for HCI "Write Link Supervision Timeout"
2891e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  command to use when an ACL link is created.
2892e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2893e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          void
2894e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2895e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2896e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern void BTM_SetDefaultLinkSuperTout (UINT16 timeout);
2897e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2898e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2899e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2900e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2901e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SetLinkSuperTout
2902e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2903e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      Create and send HCI "Write Link Supervision Timeout" command
2904e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2905e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_CMD_STARTED if successfully initiated, otherwise error
2906e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2907e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2908e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_SetLinkSuperTout (BD_ADDR remote_bda,
2909e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                     UINT16 timeout);
2910e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2911e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2912e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2913e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_RegForLstoEvt
2914e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2915e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      register for the HCI "Link Supervision Timeout Change" event
2916e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2917e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          void
2918e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2919e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2920e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern void BTM_RegForLstoEvt (tBTM_LSTO_CBACK *p_cback);
2921e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2922e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2923e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* These next APIs are available if the power manager is not compiled in */
2924e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#if BTM_PWR_MGR_INCLUDED == FALSE
2925e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2926e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2927e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SetHoldMode
2928e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2929e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to set a connection into hold mode.
2930e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  A check is made if the connection is in sniff or park mode,
2931e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  and if yes, the hold mode is ignored.
2932e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2933e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_CMD_STARTED if successfully initiated, otherwise error
2934e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2935e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2936e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_SetHoldMode (BD_ADDR remote_bda, UINT16 min_interval,
2937e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                UINT16 max_interval);
2938e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2939e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2940e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2941e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2942e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SetSniffMode
2943e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2944e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to set a connection into sniff mode.
2945e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  A check is made if the connection is already in sniff or park
2946e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  mode, and if yes, the sniff mode is ignored.
2947e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2948e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_CMD_STARTED if successfully initiated, otherwise error
2949e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2950e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2951e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_SetSniffMode (BD_ADDR remote_bda, UINT16 min_period,
2952e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                 UINT16 max_period, UINT16 attempt,
2953e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                 UINT16 timeout);
2954e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2955e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2956e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2957e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2958e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_CancelSniffMode
2959e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2960e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to put a connection out of sniff mode.
2961e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  A check is made if the connection is already in sniff mode,
2962e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  and if not, the cancel sniff mode is ignored.
2963e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2964e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_CMD_STARTED if successfully initiated, otherwise error
2965e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2966e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2967e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_CancelSniffMode (BD_ADDR remote_bda);
2968e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2969e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2970e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2971e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2972e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SetParkMode
2973e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2974e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to set a connection into park mode.
2975e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  A check is made if the connection is already in sniff or park
2976e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  mode, and if yes, the park mode is ignored.
2977e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2978e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_CMD_STARTED if successfully initiated, otherwise error
2979e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2980e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2981e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_SetParkMode (BD_ADDR remote_bda,
2982e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                UINT16 beacon_min_period,
2983e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                UINT16 beacon_max_period);
2984e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2985e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2986e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
2987e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2988e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_CancelParkMode
2989e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2990e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to put a connection out of park mode.
2991e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  A check is made if the connection is already in park mode,
2992e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  and if not, the cancel sniff mode is ignored.
2993e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2994e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_CMD_STARTED if successfully initiated, otherwise error
2995e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
2996e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
2997e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_CancelParkMode (BD_ADDR remote_bda);
2998e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
2999e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3000e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3001e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3002e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_ReadAclMode
3003e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3004e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This returns the current mode for a specific
3005e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  ACL connection.
3006e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3007e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Input Param      remote_bda - device address of desired ACL connection
3008e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3009e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Output Param     p_mode - address where the current mode is copied into.
3010e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                          BTM_ACL_MODE_NORMAL
3011e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                          BTM_ACL_MODE_HOLD
3012e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                          BTM_ACL_MODE_SNIFF
3013e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                          BTM_ACL_MODE_PARK
3014e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                          (valid only if return code is BTM_SUCCESS)
3015e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3016e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_SUCCESS if successful,
3017e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_UNKNOWN_ADDR if bd addr is not active or bad
3018e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3019e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3020e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_ReadAclMode (BD_ADDR remote_bda, UINT8 *p_mode);
3021e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3022e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#endif /* if BTM_PWR_MGR_INCLUDED == FALSE */
3023e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3024e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3025e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3026e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3027e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SetPacketTypes
3028e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3029e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is set the packet types used for a specific
3030e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  ACL connection,
3031e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3032e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_CMD_STARTED if successfully initiated, otherwise error
3033e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3034e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3035e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_SetPacketTypes (BD_ADDR remote_bda, UINT16 pkt_types);
3036e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3037e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3038e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3039e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3040e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_ReadPacketTypes
3041e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3042e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is set the packet types used for the specified
3043e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  ACL connection,
3044e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3045e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          packet types supported for the connection, or 0 if no BD address
3046e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3047e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3048e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern UINT16 BTM_ReadPacketTypes (BD_ADDR remote_bda);
3049e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3050e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3051e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3052e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3053e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_IsAclConnectionUp
3054e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3055e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to check if an ACL connection exists
3056e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  to a specific remote BD Address.
3057e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3058e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          TRUE if connection is up, else FALSE.
3059e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3060e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3061e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern BOOLEAN BTM_IsAclConnectionUp (BD_ADDR remote_bda);
3062e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3063e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3064e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3065e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3066e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_GetRole
3067e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3068e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to get the role of the local device
3069e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  for the ACL connection with the specified remote device
3070e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3071e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_SUCCESS if connection exists.
3072e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_UNKNOWN_ADDR if no active link with bd addr specified
3073e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3074e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3075e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_GetRole (BD_ADDR remote_bd_addr, UINT8 *p_role);
3076e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3077e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3078e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3079e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3080e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3081e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SwitchRole
3082e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3083e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to switch role between master and
3084e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  slave.  If role is already set it will do nothing.  If the
3085e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  command was initiated, the callback function is called upon
3086e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  completion.
3087e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3088e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_SUCCESS if already in specified role.
3089e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_CMD_STARTED if command issued to controller.
3090e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_NO_RESOURCES if couldn't allocate memory to issue command
3091e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_UNKNOWN_ADDR if no active link with bd addr specified
3092e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_MODE_UNSUPPORTED if local device does not support role switching
3093e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3094e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3095e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_SwitchRole (BD_ADDR remote_bd_addr,
3096e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                               UINT8 new_role,
3097e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                               tBTM_CMPL_CB *p_cb);
3098e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3099e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3100e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3101e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_ChangeLinkKey
3102e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3103e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to change the link key of the
3104e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  connection.
3105e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3106e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_CMD_STARTED if command issued to controller.
3107e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_NO_RESOURCES if couldn't allocate memory to issue command
3108e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_UNKNOWN_ADDR if no active link with bd addr specified
3109e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_BUSY if the previous command is not completed
3110e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3111e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3112e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_ChangeLinkKey (BD_ADDR remote_bd_addr,
3113e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                  tBTM_CMPL_CB *p_cb);
3114e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3115e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3116e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3117e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_ReadRSSI
3118e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3119e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to read the link policy settings.
3120e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  The address of link policy results are returned in the callback.
3121e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  (tBTM_RSSI_RESULTS)
3122e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3123e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_CMD_STARTED if command issued to controller.
3124e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_NO_RESOURCES if couldn't allocate memory to issue command
3125e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_UNKNOWN_ADDR if no active link with bd addr specified
3126e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_BUSY if command is already in progress
3127e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3128e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3129e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_ReadRSSI (BD_ADDR remote_bda, tBTM_CMPL_CB *p_cb);
3130e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3131e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3132e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3133e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3134e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_ReadTxPower
3135e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
31366ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** Description      This function is called to read the current connection
31376ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach**                  TX power of the connection. The TX power level results
3138e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  are returned in the callback.
3139e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  (tBTM_RSSI_RESULTS)
3140e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3141e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_CMD_STARTED if command issued to controller.
3142e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_NO_RESOURCES if couldn't allocate memory to issue command
3143e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_UNKNOWN_ADDR if no active link with bd addr specified
3144e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_BUSY if command is already in progress
3145e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3146e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3147e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_ReadTxPower (BD_ADDR remote_bda, tBTM_CMPL_CB *p_cb);
3148e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3149e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3150e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3151e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_ReadLinkQuality
3152e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3153e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to read the link quality.
3154e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  The value of the link quality is returned in the callback.
3155e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  (tBTM_LINK_QUALITY_RESULTS)
3156e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3157e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_CMD_STARTED if command issued to controller.
3158e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_NO_RESOURCES if couldn't allocate memory to issue command
3159e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_UNKNOWN_ADDR if no active link with bd addr specified
3160e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_BUSY if command is already in progress
3161e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3162e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3163e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_ReadLinkQuality (BD_ADDR remote_bda, tBTM_CMPL_CB *p_cb);
3164e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3165e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3166e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3167e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_RegBusyLevelNotif
3168e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3169e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to register a callback to receive
3170e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  busy level change events.
3171e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3172e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_SUCCESS if successfully registered, otherwise error
3173e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3174e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3175e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_RegBusyLevelNotif (tBTM_BL_CHANGE_CB *p_cb, UINT8 *p_level,
3176e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                      tBTM_BL_EVENT_MASK evt_mask);
3177e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3178e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3179e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3180e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_AclRegisterForChanges
3181e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3182e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to register a callback to receive
3183e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  ACL database change events, i.e. new connection or removed.
3184e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3185e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_SUCCESS if successfully initiated, otherwise error
3186e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3187e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3188e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_AclRegisterForChanges (tBTM_ACL_DB_CHANGE_CB *p_cb);
3189e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3190e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3191e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3192e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_GetNumAclLinks
3193e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3194e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to count the number of
3195e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  ACL links that are active.
3196e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3197e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          UINT16  Number of active ACL links
3198e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3199e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3200e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern UINT16 BTM_GetNumAclLinks (void);
3201e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3202e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3203e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3204e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3205e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_ReadClockOffset
3206e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3207e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This returns the clock offset for a specific
3208e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  ACL connection.
3209e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3210e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          clock-offset or 0 if unknown
3211e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3212e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3213e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern UINT16 BTM_ReadClockOffset (BD_ADDR remote_bda);
3214e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3215e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3216e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3217e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3218e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SetQoS
3219e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3220e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to setup QoS
3221e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3222e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_CMD_STARTED if successfully initiated, otherwise error
3223e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3224e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3225e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_SetQoS(BD_ADDR bd, FLOW_SPEC *p_flow,
3226e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                          tBTM_CMPL_CB *p_cb);
3227e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3228e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3229e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*****************************************************************************
3230e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**  (e)SCO CHANNEL MANAGEMENT FUNCTIONS
3231e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*****************************************************************************/
3232e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3233e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3234e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_CreateSco
3235e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3236e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to create an SCO connection. If the
3237e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  "is_orig" flag is TRUE, the connection will be originated,
3238e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  otherwise BTM will wait for the other side to connect.
3239e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3240e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_UNKNOWN_ADDR if the ACL connection is not up
3241e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_BUSY         if another SCO being set up to
3242e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                                   the same BD address
3243e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_NO_RESOURCES if the max SCO limit has been reached
3244e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_CMD_STARTED  if the connection establishment is started.
3245e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                                   In this case, "*p_sco_inx" is filled in
3246e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                                   with the sco index used for the connection.
3247e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3248e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3249e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_CreateSco (BD_ADDR remote_bda, BOOLEAN is_orig,
3250e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                              UINT16 pkt_types, UINT16 *p_sco_inx,
3251e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                              tBTM_SCO_CB *p_conn_cb,
3252e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                              tBTM_SCO_CB *p_disc_cb);
3253e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3254e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3255e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3256e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3257e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_RemoveSco
3258e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3259e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to remove a specific SCO connection.
3260e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3261e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_CMD_STARTED if successfully initiated, otherwise error
3262e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3263e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3264e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_RemoveSco (UINT16 sco_inx);
3265e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3266e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3267e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3268e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3269e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SetScoPacketTypes
3270e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3271e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to set the packet types used for
3272e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  a specific SCO connection,
3273e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3274e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameters       pkt_types - One or more of the following
3275e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_SCO_PKT_TYPES_MASK_HV1
3276e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_SCO_PKT_TYPES_MASK_HV2
3277e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_SCO_PKT_TYPES_MASK_HV3
3278e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_SCO_PKT_TYPES_MASK_EV3
3279e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_SCO_PKT_TYPES_MASK_EV4
3280e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_SCO_PKT_TYPES_MASK_EV5
3281e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3282e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_SCO_LINK_ALL_MASK   - enables all supported types
3283e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3284e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_CMD_STARTED if successfully initiated, otherwise error
3285e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3286e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3287e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_SetScoPacketTypes (UINT16 sco_inx, UINT16 pkt_types);
3288e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3289e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3290e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3291e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3292e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_ReadScoPacketTypes
3293e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3294e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is read the packet types used for a specific
3295e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  SCO connection.
3296e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3297e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns       One or more of the following (bitmask)
3298e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_SCO_PKT_TYPES_MASK_HV1
3299e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_SCO_PKT_TYPES_MASK_HV2
3300e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_SCO_PKT_TYPES_MASK_HV3
3301e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_SCO_PKT_TYPES_MASK_EV3
3302e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_SCO_PKT_TYPES_MASK_EV4
3303e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_SCO_PKT_TYPES_MASK_EV5
3304e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3305e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          packet types supported for the connection
3306e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3307e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3308e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern UINT16 BTM_ReadScoPacketTypes (UINT16 sco_inx);
3309e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3310e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3311e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3312e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3313e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_ReadDeviceScoPacketTypes
3314e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3315e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is read the SCO packet types that
3316e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  the device supports.
3317e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3318e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          packet types supported by the device.
3319e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3320e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3321e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern UINT16 BTM_ReadDeviceScoPacketTypes (void);
3322e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3323e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3324e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3325e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3326e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_ReadScoHandle
3327e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3328e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is used to read the HCI handle used for a specific
3329e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  SCO connection,
3330e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3331e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          handle for the connection, or 0xFFFF if invalid SCO index.
3332e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3333e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3334e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern UINT16 BTM_ReadScoHandle (UINT16 sco_inx);
3335e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3336e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3337e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3338e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3339e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_ReadScoBdAddr
3340e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3341e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is read the remote BD Address for a specific
3342e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  SCO connection,
3343e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3344e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          pointer to BD address or NULL if not known
3345e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3346e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3347e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern UINT8 *BTM_ReadScoBdAddr (UINT16 sco_inx);
3348e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3349e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3350e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3351e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3352e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_ReadScoDiscReason
3353e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3354e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is returns the reason why an (e)SCO connection
3355e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  has been removed. It contains the value until read, or until
3356e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  another (e)SCO connection has disconnected.
3357e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3358e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          HCI reason or BTM_INVALID_SCO_DISC_REASON if not set.
3359e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3360e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3361e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern UINT16 BTM_ReadScoDiscReason (void);
3362e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3363e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3364e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3365e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3366e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SetEScoMode
3367e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3368e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function sets up the negotiated parameters for SCO or
3369e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  eSCO, and sets as the default mode used for calls to
3370e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_CreateSco.  It can be called only when there are no
3371e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  active (e)SCO links.
3372e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3373e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_SUCCESS if the successful.
3374e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_BUSY if there are one or more active (e)SCO links.
3375e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3376e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3377e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_SetEScoMode (tBTM_SCO_TYPE sco_mode,
3378e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                tBTM_ESCO_PARAMS *p_parms);
3379e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3380e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3381e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3382e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SetWBSCodec
3383e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3384e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function sends command to the controller to setup
3385e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  WBS codec for the upcoming eSCO connection.
3386e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3387e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_SUCCESS.
33886ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach**
3389e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3390e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3391e448862a47c08eb23185aaed574b39264f5005fcAndre EisenbachBTM_API extern tBTM_STATUS BTM_SetWBSCodec (tBTM_SCO_CODEC_TYPE codec_type);
3392e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3393e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3394e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3395e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_RegForEScoEvts
3396e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3397e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function registers a SCO event callback with the
3398e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  specified instance.  It should be used to received
3399e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  connection indication events and change of link parameter
3400e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  events.
3401e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3402e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_SUCCESS if the successful.
3403e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_ILLEGAL_VALUE if there is an illegal sco_inx
3404e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3405e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3406e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_RegForEScoEvts (UINT16 sco_inx,
3407e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                   tBTM_ESCO_CBACK *p_esco_cback);
3408e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3409e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3410e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3411e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_ReadEScoLinkParms
3412e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3413e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function returns the current eSCO link parameters for
3414e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  the specified handle.  This can be called anytime a connection
3415e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  is active, but is typically called after receiving the SCO
3416e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  opened callback.
3417e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3418e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3419e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_SUCCESS if returned data is valid connection.
3420e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_ILLEGAL_VALUE if no connection for specified sco_inx.
3421e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_MODE_UNSUPPORTED if local controller does not support
3422e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                      1.2 specification.
3423e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3424e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3425e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_ReadEScoLinkParms (UINT16 sco_inx,
3426e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                      tBTM_ESCO_DATA *p_parms);
3427e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3428e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3429e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3430e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_ChangeEScoLinkParms
3431e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3432e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function requests renegotiation of the parameters on
3433e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  the current eSCO Link.  If any of the changes are accepted
3434e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  by the controllers, the BTM_ESCO_CHG_EVT event is sent in
3435e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  the tBTM_ESCO_CBACK function with the current settings of
3436e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  the link. The callback is registered through the call to
3437e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_SetEScoMode.
3438e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3439e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3440e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_CMD_STARTED if command is successfully initiated.
3441e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_ILLEGAL_VALUE if no connection for specified sco_inx.
3442e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_NO_RESOURCES - not enough resources to initiate command.
3443e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_MODE_UNSUPPORTED if local controller does not support
3444e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                      1.2 specification.
3445e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3446e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3447e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_ChangeEScoLinkParms (UINT16 sco_inx,
3448e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                        tBTM_CHG_ESCO_PARAMS *p_parms);
3449e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3450e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3451e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3452e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_EScoConnRsp
3453e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3454e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called upon receipt of an (e)SCO connection
3455e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  request event (BTM_ESCO_CONN_REQ_EVT) to accept or reject
3456e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  the request. Parameters used to negotiate eSCO links.
3457e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  If p_parms is NULL, then values set through BTM_SetEScoMode
3458e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  are used.
3459e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  If the link type of the incoming request is SCO, then only
3460e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  the tx_bw, max_latency, content format, and packet_types are
3461e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  valid.  The hci_status parameter should be
3462e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  ([0x0] to accept, [0x0d..0x0f] to reject)
3463e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3464e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3465e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          void
3466e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3467e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3468e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern void BTM_EScoConnRsp (UINT16 sco_inx, UINT8 hci_status,
3469e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                         tBTM_ESCO_PARAMS *p_parms);
3470e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3471e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3472e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3473e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_GetNumScoLinks
3474e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3475e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function returns the number of active SCO links.
3476e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3477e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          UINT8
3478e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3479e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3480e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern UINT8 BTM_GetNumScoLinks (void);
3481e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3482e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*****************************************************************************
3483e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**  SECURITY MANAGEMENT FUNCTIONS
3484e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*****************************************************************************/
3485e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3486e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3487e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SecRegister
3488e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3489e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      Application manager calls this function to register for
3490e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  security services.  There can be one and only one application
3491e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  saving link keys.  BTM allows only first registration.
3492e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3493e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          TRUE if registered OK, else FALSE
3494e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3495e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3496e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern BOOLEAN BTM_SecRegister (tBTM_APPL_INFO *p_cb_info);
3497e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3498e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3499e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3500e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3501e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SecRegisterLinkKeyNotificationCallback
3502e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3503e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      Profiles can register to be notified when a new Link Key
3504e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  is generated per connection.
3505e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3506e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          TRUE if registered OK, else FALSE
3507e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3508e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3509e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern BOOLEAN BTM_SecRegisterLinkKeyNotificationCallback (tBTM_LINK_KEY_CALLBACK *p_callback);
3510e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3511e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3512e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3513e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3514e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SecAddRmtNameNotifyCallback
3515e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3516e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      Profiles can register to be notified when name of the
3517e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  remote device is resolved (up to BTM_SEC_MAX_RMT_NAME_CALLBACKS).
3518e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3519e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          TRUE if registered OK, else FALSE
3520e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3521e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3522e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern BOOLEAN BTM_SecAddRmtNameNotifyCallback (tBTM_RMT_NAME_CALLBACK *p_callback);
3523e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3524e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3525e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3526e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3527e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SecDeleteRmtNameNotifyCallback
3528e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3529e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      A profile can deregister notification when a new Link Key
3530e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  is generated per connection.
3531e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3532e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          TRUE if OK, else FALSE
3533e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3534e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3535e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern BOOLEAN BTM_SecDeleteRmtNameNotifyCallback (tBTM_RMT_NAME_CALLBACK *p_callback);
3536e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3537e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3538e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3539e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3540e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SecSetConnectFilterCallback
3541e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3542e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      Host can register to be asked whenever an HCI connection
3543e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  request is received.  In the registered function host
3544e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  suppose to check connectibility filters.  Yes/No result
3545e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  should be returned synchronously.
3546e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3547e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          void
3548e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3549e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3550e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern void BTM_SecSetConnectFilterCallback (tBTM_FILTER_CB *p_callback);
3551e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3552e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3553e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3554e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3555e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_GetSecurityMode
3556e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3557e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      Get security mode for the device
3558e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3559e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          void
3560e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3561e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3562e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern UINT8 BTM_GetSecurityMode (void);
3563e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3564e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3565e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3566e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3567e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_GetSecurityFlags
3568e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3569e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      Get security flags for the device
3570e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3571e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BOOLEAN TRUE or FALSE is device found
3572e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3573e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3574e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern BOOLEAN BTM_GetSecurityFlags (BD_ADDR bd_addr, UINT8 * p_sec_flags);
3575e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3576e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3577e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3578e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_ReadTrustedMask
3579e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3580e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      Get trusted mask for the device
3581e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3582e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          NULL, if the device record is not found.
3583e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  otherwise, the trusted mask
3584e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3585e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3586e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern UINT32 * BTM_ReadTrustedMask (BD_ADDR bd_addr);
3587e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3588e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3589e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3590e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3591e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SetSecurityMode
3592e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3593e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      Set security mode for the device
3594e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3595e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          void
3596e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3597e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3598e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern void BTM_SetSecurityMode (UINT8 sec_mode);
3599e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3600e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3601e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3602e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3603e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SetPinType
3604e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3605e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      Set PIN type for the device.
3606e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3607e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          void
3608e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3609e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3610e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern void BTM_SetPinType (UINT8 pin_type, PIN_CODE pin_code, UINT8 pin_code_len);
3611e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3612e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3613e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3614e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3615e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SetPairableMode
3616e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3617e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      Enable or disable pairing
3618e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3619e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameters       allow_pairing - (TRUE or FALSE) whether or not the device
3620e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                      allows pairing.
3621e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  connect_only_paired - (TRUE or FALSE) whether or not to
3622e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                      only allow paired devices to connect.
3623e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3624e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          void
3625e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3626e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3627e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern void BTM_SetPairableMode (BOOLEAN allow_pairing, BOOLEAN connect_only_paired);
3628e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3629e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3630e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3631e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SetSecurityLevel
3632e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3633e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      Register service security level with Security Manager.  Each
3634e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  service must register its requirements regardless of the
3635e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  security level that is used.  This API is called once for originators
3636e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  nad again for acceptors of connections.
3637e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3638e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          TRUE if registered OK, else FALSE
3639e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3640e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3641e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern BOOLEAN BTM_SetSecurityLevel (BOOLEAN is_originator, char *p_name,
3642e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                 UINT8 service_id, UINT16 sec_level,
3643e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                 UINT16 psm, UINT32 mx_proto_id,
3644e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                 UINT32 mx_chan_id);
3645e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3646e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3647e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3648e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SetUCDSecurityLevel
3649e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3650e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      Register UCD service security level with Security Manager.  Each
3651e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  service must register its requirements regardless of the
3652e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  security level that is used.  This API is called once for originators
3653e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  and again for acceptors of connections.
3654e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3655e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          TRUE if registered OK, else FALSE
3656e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3657e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
36586ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach    BTM_API extern BOOLEAN BTM_SetUCDSecurityLevel (BOOLEAN is_originator, char *p_name, UINT8 service_id,
36596ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach                                                    UINT16 sec_level, UINT16 psm, UINT32 mx_proto_id,
3660e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                    UINT32 mx_chan_id);
3661e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3662e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3663e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3664e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SetOutService
3665e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3666e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to set the service for
3667e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  outgoing connection.
3668e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3669e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          void
3670e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3671e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3672e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern void BTM_SetOutService(BD_ADDR bd_addr, UINT8 service_id, UINT32 mx_chan_id);
3673e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3674e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3675e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3676e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SecClrService
3677e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3678e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      Removes specified service record(s) from the security database.
3679e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  All service records with the specified name are removed.
3680e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  Typically used only by devices with limited RAM so that it can
3681e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  reuse an old security service record.
3682e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                          records (except SDP).
3683e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3684e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          Number of records that were freed.
3685e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3686e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3687e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern UINT8 BTM_SecClrService (UINT8 service_id);
3688e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3689e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3690e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3691e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SecClrUCDService
3692e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
36936ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** Description
3694e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3695e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameters       Service ID - Id of the service to remove. ('0' removes all service
3696e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                          records.
3697e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3698e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          Number of records that were freed.
3699e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3700e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3701e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern UINT8 BTM_SecClrUCDService (UINT8 service_id);
3702e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3703e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3704e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3705e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SecAddDevice
3706e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3707e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      Add/modify device.  This function will be normally called
3708e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  during host startup to restore all required information
3709e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  stored in the NVRAM.
3710e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  dev_class, bd_name, link_key, and features are NULL if unknown
3711e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3712e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          TRUE if added OK, else FALSE
3713e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3714e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3715e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern BOOLEAN BTM_SecAddDevice (BD_ADDR bd_addr, DEV_CLASS dev_class,
3716e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                             BD_NAME bd_name, BD_FEATURES features,
3717e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                             UINT32 trusted_mask[], LINK_KEY link_key,
3718e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                             UINT8 key_type, tBTM_IO_CAP io_cap);
3719e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3720e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3721e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3722e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3723e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SecDeleteDevice
3724e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3725e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      Free resources associated with the device.
3726e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3727e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          TRUE if rmoved OK, FALSE if not found
3728e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3729e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3730e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern BOOLEAN BTM_SecDeleteDevice (BD_ADDR bd_addr);
3731e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3732e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3733e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3734e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3735e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SecUseMasterLinkKey
3736e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3737e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to tell master of the piconet to
3738e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  switch to master link key
3739e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3740e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_SUCCESS if command is successully initiated
3741e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3742e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3743e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_SecUseMasterLinkKey (BOOLEAN use_master_key);
3744e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3745e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3746e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3747e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3748e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SetMasterKeyCompCback
3749e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3750e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to register for the master key complete
3751e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  status event.
3752e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3753e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameters:      mkey_cback - callback registered with the security manager
3754e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3755e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          void
3756e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3757e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3758e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern void BTM_SetMasterKeyCompCback(tBTM_MKEY_CALLBACK *mkey_cback );
3759e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3760e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3761e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3762e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3763e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SecGetDeviceLinkKey
3764e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3765e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to obtain link key for the device
3766e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  it returns BTM_SUCCESS if link key is available, or
3767e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_UNKNOWN_ADDR if Security Manager does not know about
3768e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  the device or device record does not contain link key info
3769e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3770e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_SUCCESS if successful, otherwise error code
3771e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3772e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3773e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_SecGetDeviceLinkKey (BD_ADDR bd_addr,
3774e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                        LINK_KEY link_key);
3775e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3776e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3777e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3778e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3779e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_PINCodeReply
3780e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3781e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called after Security Manager submitted
3782e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  PIN code request to the UI.
3783e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3784e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameters:      bd_addr      - Address of the device for which PIN was requested
3785e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  res          - result of the operation BTM_SUCCESS if success
3786e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  pin_len      - length in bytes of the PIN Code
3787e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  p_pin        - pointer to array with the PIN Code
3788e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  trusted_mask - bitwise OR of trusted services (array of UINT32)
3789e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3790e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          void
3791e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3792e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3793e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern void BTM_PINCodeReply (BD_ADDR bd_addr, UINT8 res, UINT8 pin_len,
3794e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                          UINT8 *p_pin, UINT32 trusted_mask[]);
3795e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3796e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3797e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3798e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3799e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_DeviceAuthorized
3800e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3801e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called after Security Manager submitted
3802e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  authorization request to the UI.
3803e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3804e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameters:      bd_addr     - Address of the device for which PIN was requested
3805e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  res         - result of the operation BTM_SUCCESS if success
3806e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3807e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          void
3808e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3809e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3810e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern void BTM_DeviceAuthorized (BD_ADDR bd_addr, UINT8 res,
3811e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                              UINT32 trusted_mask[]);
3812e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3813e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3814e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3815e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3816e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SecBond
3817e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3818e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to perform bonding with peer device.
3819e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3820e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_CMD_STARTED if successfully initiated, otherwise error
3821e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3822e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3823e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_SecBond (BD_ADDR bd_addr, UINT8 pin_len, UINT8 *p_pin, UINT32 trusted_mask[]);
3824e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3825e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3826e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3827e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SecBondCancel
3828e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3829e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to cancel ongoing bonding process
3830e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  with peer device.
3831e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3832e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_CMD_STARTED if successfully initiated, otherwise error
3833e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3834e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3835e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_SecBondCancel (BD_ADDR bd_addr);
3836e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3837e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3838e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3839e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SetEncryption
3840e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3841e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to ensure that connection is
3842e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  encrypted.  Should be called only on an open connection.
3843e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  Typically only needed for connections that first want to
3844e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  bring up unencrypted links, then later encrypt them.
3845e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3846e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameters:      bd_addr       - Address of the peer device
3847e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  p_callback    - Pointer to callback function called if
3848e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                                  this function returns PENDING after required
3849e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                                  procedures are completed.  Can be set to NULL
3850e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                                  if status is not desired.
3851e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  p_ref_data    - pointer to any data the caller wishes to receive
3852e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                                  in the callback function upon completion.
3853e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*                                   can be set to NULL if not used.
3854e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3855e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_SUCCESS   - already encrypted
3856e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_PENDING   - command will be returned in the callback
3857e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_WRONG_MODE- connection not up.
3858e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_BUSY      - security procedures are currently active
3859e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_MODE_UNSUPPORTED - if security manager not linked in.
3860e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3861e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3862e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_SetEncryption (BD_ADDR bd_addr, tBTM_SEC_CBACK *p_callback,
3863e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                  void *p_ref_data);
3864e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3865e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3866e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3867e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_ConfirmReqReply
3868e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3869e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to confirm the numeric value for
3870e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  Simple Pairing in response to BTM_SP_CFM_REQ_EVT
3871e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3872e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameters:      res           - result of the operation BTM_SUCCESS if success
3873e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  bd_addr       - Address of the peer device
3874e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3875e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3876e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern void BTM_ConfirmReqReply(tBTM_STATUS res, BD_ADDR bd_addr);
3877e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3878e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3879e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3880e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_PasskeyReqReply
3881e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3882e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to provide the passkey for
3883e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  Simple Pairing in response to BTM_SP_KEY_REQ_EVT
3884e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3885e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameters:      res           - result of the operation BTM_SUCCESS if success
3886e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  bd_addr       - Address of the peer device
3887e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  passkey       - numeric value in the range of 0 - 999999(0xF423F).
3888e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3889e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3890e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern void BTM_PasskeyReqReply(tBTM_STATUS res, BD_ADDR bd_addr, UINT32 passkey);
3891e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3892e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3893e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3894e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SendKeypressNotif
3895e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3896e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is used during the passkey entry model
3897e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  by a device with KeyboardOnly IO capabilities
3898e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  (very likely to be a HID Device).
3899e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  It is called by a HID Device to inform the remote device when
3900e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  a key has been entered or erased.
3901e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3902e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameters:      bd_addr - Address of the peer device
3903e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  type - notification type
3904e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3905e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3906e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern void BTM_SendKeypressNotif(BD_ADDR bd_addr, tBTM_SP_KEY_TYPE type);
3907e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3908e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3909e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3910e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_IoCapRsp
3911e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3912e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called in response to BTM_SP_IO_REQ_EVT
3913e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  When the event data io_req.oob_data is set to BTM_OOB_UNKNOWN
3914e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  by the tBTM_SP_CALLBACK implementation, this function is
3915e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  called to provide the actual response
3916e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3917e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameters:      bd_addr - Address of the peer device
3918e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  io_cap  - The IO capability of local device.
3919e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  oob     - BTM_OOB_NONE or BTM_OOB_PRESENT.
3920e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  auth_req- MITM protection required or not.
3921e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3922e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3923e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern void BTM_IoCapRsp(BD_ADDR bd_addr, tBTM_IO_CAP io_cap,
3924e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                     tBTM_OOB_DATA oob, tBTM_AUTH_REQ auth_req);
3925e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3926e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3927e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3928e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_ReadLocalOobData
3929e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3930e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to read the local OOB data from
3931e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  LM
3932e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3933e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3934e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_ReadLocalOobData(void);
3935e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3936e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3937e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3938e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_RemoteOobDataReply
3939e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3940e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to provide the remote OOB data for
3941e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  Simple Pairing in response to BTM_SP_RMT_OOB_EVT
3942e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3943e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameters:      bd_addr     - Address of the peer device
3944e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  c           - simple pairing Hash C.
3945e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  r           - simple pairing Randomizer  C.
3946e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3947e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3948e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern void BTM_RemoteOobDataReply(tBTM_STATUS res, BD_ADDR bd_addr, BT_OCTET16 c, BT_OCTET16 r);
3949e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3950e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3951e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3952e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_BuildOobData
3953e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3954e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to build the OOB data payload to
3955e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  be sent over OOB (non-Bluetooth) link
3956e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3957e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameters:      p_data  - the location for OOB data
3958e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  max_len - p_data size.
3959e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  c       - simple pairing Hash C.
3960e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  r       - simple pairing Randomizer  C.
3961e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  name_len- 0, local device name would not be included.
3962e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                            otherwise, the local device name is included for
3963e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                            up to this specified length
3964e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3965e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          Number of bytes in p_data.
3966e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3967e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3968e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern UINT16 BTM_BuildOobData(UINT8 *p_data, UINT16 max_len, BT_OCTET16 c,
3969e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                           BT_OCTET16 r, UINT8 name_len);
3970e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3971e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3972e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3973e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_ReadOobData
3974e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
39756ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** Description      This function is called to parse the OOB data payload
3976e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  received over OOB (non-Bluetooth) link
3977e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3978e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameters:      p_data  - the location for OOB data
3979e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  eir_tag - The associated EIR tag to read the data.
3980e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  *p_len(output) - the length of the data with the given tag.
3981e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3982e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          the beginning of the data with the given tag.
3983e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  NULL, if the tag is not found.
3984e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3985e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3986e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern UINT8 * BTM_ReadOobData(UINT8 *p_data, UINT8 eir_tag, UINT8 *p_len);
3987e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
3988e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
3989e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3990e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SecReadDevName
3991e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3992e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      Looks for the device name in the security database for the
3993e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  specified BD address.
3994e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3995e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          Pointer to the name or NULL
3996e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
3997e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
3998e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern char *BTM_SecReadDevName (BD_ADDR bd_addr);
3999e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
4000e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
4001e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*****************************************************************************
4002e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**  POWER MANAGEMENT FUNCTIONS
4003e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*****************************************************************************/
4004e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
4005e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4006e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_PmRegister
4007e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4008e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      register or deregister with power manager
4009e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4010e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_SUCCESS if successful,
4011e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_NO_RESOURCES if no room to hold registration
4012e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_ILLEGAL_VALUE
4013e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4014e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
4015e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_PmRegister (UINT8 mask, UINT8 *p_pm_id,
4016e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                               tBTM_PM_STATUS_CBACK *p_cb);
4017e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
4018e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
4019e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
4020e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4021e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SetPowerMode
4022e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4023e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      store the mode in control block or
4024e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  alter ACL connection behavior.
4025e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4026e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_SUCCESS if successful,
4027e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_UNKNOWN_ADDR if bd addr is not active or bad
4028e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4029e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
4030e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_SetPowerMode (UINT8 pm_id, BD_ADDR remote_bda,
4031e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                 tBTM_PM_PWR_MD *p_mode);
4032e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
4033e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
4034e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
4035e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4036e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_ReadPowerMode
4037e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4038e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This returns the current mode for a specific
4039e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  ACL connection.
4040e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4041e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Input Param      remote_bda - device address of desired ACL connection
4042e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4043e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Output Param     p_mode - address where the current mode is copied into.
4044e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                          BTM_ACL_MODE_NORMAL
4045e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                          BTM_ACL_MODE_HOLD
4046e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                          BTM_ACL_MODE_SNIFF
4047e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                          BTM_ACL_MODE_PARK
4048e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                          (valid only if return code is BTM_SUCCESS)
4049e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4050e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_SUCCESS if successful,
4051e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_UNKNOWN_ADDR if bd addr is not active or bad
4052e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4053e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
4054e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_ReadPowerMode (BD_ADDR remote_bda,
4055e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                  tBTM_PM_MODE *p_mode);
4056e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
4057e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
4058e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4059e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SetSsrParams
4060e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4061e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This sends the given SSR parameters for the given ACL
4062e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  connection if it is in ACTIVE mode.
4063e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4064e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Input Param      remote_bda - device address of desired ACL connection
4065e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  max_lat    - maximum latency (in 0.625ms)(0-0xFFFE)
4066e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  min_rmt_to - minimum remote timeout
4067e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  min_loc_to - minimum local timeout
4068e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4069e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4070e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_SUCCESS if the HCI command is issued successful,
4071e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_UNKNOWN_ADDR if bd addr is not active or bad
4072e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_CMD_STORED if the command is stored
4073e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4074e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
4075e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_SetSsrParams (BD_ADDR remote_bda, UINT16 max_lat,
4076e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                 UINT16 min_rmt_to, UINT16 min_loc_to);
4077e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
4078e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
4079e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4080e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_IsPowerManagerOn
4081e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4082e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to check if power manager is included.
4083e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  in the BTE version.
4084e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4085e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          TRUE if power manager is compiled in, otherwise FALSE.
4086e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4087e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
4088e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern BOOLEAN BTM_IsPowerManagerOn (void);
4089e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
4090e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
4091e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
4092e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4093e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_GetHCIConnHandle
4094e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4095e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to get the handle for an ACL connection
4096e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  to a specific remote BD Address.
4097e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4098e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          the handle of the connection, or 0xFFFF if none.
4099e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4100e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
4101e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern UINT16 BTM_GetHCIConnHandle (BD_ADDR remote_bda);
4102e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
4103e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
4104e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
4105e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4106e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_ReadStoredLinkKey
4107e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4108e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to obtain link key for the specified
4109e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  device from the NVRAM storage attached to the Bluetooth
4110e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  controller.
4111e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4112e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameters:      bd_addr      - Address of the device
4113e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  p_cb         - Call back function to be called to return
4114e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                                 the results
4115e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4116e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
4117e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_ReadStoredLinkKey (BD_ADDR bd_addr,  tBTM_CMPL_CB *p_cb);
4118e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
4119e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
4120e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
4121e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4122e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_WriteStoredLinkKey
4123e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4124e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to write link keys for the specified
4125e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  device addresses to the NVRAM storage attached to the Bluetooth
4126e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  controller.
4127e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4128e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameters:      num_keys     - Number of link keys
4129e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  bd_addr      - Addresses of the devices
4130e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  link_key     - Link Keys to be stored
4131e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  p_cb         - Call back function to be called to return
4132e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                                 the results
4133e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4134e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
4135e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_WriteStoredLinkKey (UINT8 num_keys,
4136e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                       BD_ADDR *bd_addr,
4137e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                       LINK_KEY *link_key,
4138e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                       tBTM_CMPL_CB *p_cb);
4139e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
4140e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
4141e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
4142e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4143e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_DeleteStoredLinkKey
4144e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4145e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to delete link key for the specified
4146e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  device addresses from the NVRAM storage attached to the Bluetooth
4147e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  controller.
4148e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4149e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameters:      bd_addr      - Addresses of the devices
4150e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  p_cb         - Call back function to be called to return
4151e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                                 the results
4152e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4153e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
4154e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_DeleteStoredLinkKey(BD_ADDR bd_addr, tBTM_CMPL_CB *p_cb);
4155e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
4156e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
4157e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4158e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_WriteEIR
4159e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4160e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to write EIR data to controller.
4161e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4162e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameters       p_buff - allocated HCI command buffer including extended
4163e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                           inquriry response
4164e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4165e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_SUCCESS  - if successful
4166e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_MODE_UNSUPPORTED - if local device cannot support it
4167e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4168e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
4169e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_WriteEIR( BT_HDR * p_buff );
4170e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
4171e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
4172e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4173e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_CheckEirData
4174e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4175e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to get EIR data from significant part.
4176e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4177e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameters       p_eir - pointer of EIR significant part
4178e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  type   - finding EIR data type
4179e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  p_length - return the length of EIR data
4180e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4181e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          pointer of EIR data
4182e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4183e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
4184e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern UINT8 *BTM_CheckEirData( UINT8 *p_eir, UINT8 type, UINT8 *p_length );
4185e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
4186e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
4187e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4188e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_HasEirService
4189e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4190e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to know if UUID in bit map of UUID.
4191e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4192e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameters       p_eir_uuid - bit map of UUID list
4193e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  uuid16 - UUID 16-bit
4194e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4195e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          TRUE - if found
4196e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  FALSE - if not found
4197e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4198e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
4199e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern BOOLEAN BTM_HasEirService( UINT32 *p_eir_uuid, UINT16 uuid16 );
4200e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
4201e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
4202e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4203e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_HasInquiryEirService
4204e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4205e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to know if UUID in bit map of UUID list.
4206e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4207e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameters       p_results - inquiry results
4208e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  uuid16 - UUID 16-bit
4209e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4210e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_EIR_FOUND - if found
4211e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_EIR_NOT_FOUND - if not found and it is complete list
4212e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_EIR_UNKNOWN - if not found and it is not complete list
4213e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4214e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
4215e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_EIR_SEARCH_RESULT BTM_HasInquiryEirService( tBTM_INQ_RESULTS *p_results,
4216e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                                    UINT16 uuid16 );
4217e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
4218e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
4219e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4220e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_AddEirService
4221e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4222e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to add a service in bit map of UUID list.
4223e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4224e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameters       p_eir_uuid - bit mask of UUID list for EIR
4225e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  uuid16 - UUID 16-bit
4226e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4227e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          None
4228e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4229e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
4230e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern void BTM_AddEirService( UINT32 *p_eir_uuid, UINT16 uuid16 );
4231e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
4232e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
4233e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4234e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_RemoveEirService
4235e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4236e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to remove a service in bit map of UUID list.
4237e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4238e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameters       p_eir_uuid - bit mask of UUID list for EIR
4239e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  uuid16 - UUID 16-bit
4240e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4241e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          None
4242e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4243e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
4244e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern void BTM_RemoveEirService( UINT32 *p_eir_uuid, UINT16 uuid16 );
4245e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
4246e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
4247e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4248e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_GetEirSupportedServices
4249e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4250e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function is called to get UUID list from bit map of UUID list.
4251e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4252e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameters       p_eir_uuid - bit mask of UUID list for EIR
4253e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  p - reference of current pointer of EIR
4254e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  max_num_uuid16 - max number of UUID can be written in EIR
4255e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  num_uuid16 - number of UUID have been written in EIR
4256e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4257e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_EIR_MORE_16BITS_UUID_TYPE, if it has more than max
4258e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_EIR_COMPLETE_16BITS_UUID_TYPE, otherwise
4259e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4260e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
4261e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern UINT8 BTM_GetEirSupportedServices( UINT32 *p_eir_uuid,    UINT8 **p,
4262e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                      UINT8  max_num_uuid16, UINT8 *p_num_uuid16);
4263e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
4264e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
4265e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4266e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_GetEirUuidList
4267e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4268e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function parses EIR and returns UUID list.
4269e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4270e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameters       p_eir - EIR
4271e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  uuid_size - LEN_UUID_16, LEN_UUID_32, LEN_UUID_128
4272e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  p_num_uuid - return number of UUID in found list
4273e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  p_uuid_list - return UUID 16-bit list
4274e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  max_num_uuid - maximum number of UUID to be returned
4275e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4276e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          0 - if not found
4277e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_EIR_COMPLETE_16BITS_UUID_TYPE
4278e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_EIR_MORE_16BITS_UUID_TYPE
4279e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_EIR_COMPLETE_32BITS_UUID_TYPE
4280e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_EIR_MORE_32BITS_UUID_TYPE
4281e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_EIR_COMPLETE_128BITS_UUID_TYPE
4282e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_EIR_MORE_128BITS_UUID_TYPE
4283e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4284e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
4285e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern UINT8 BTM_GetEirUuidList( UINT8 *p_eir, UINT8 uuid_size, UINT8 *p_num_uuid,
4286e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                             UINT8 *p_uuid_list, UINT8 max_num_uuid);
4287e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
4288e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
4289e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4290e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SyncStack
4291e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4292e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      For Dual-Stack support. Called to initiate switching to/from
4293e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  main stack (running on phone baseband) to mm stack (light
4294e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  stack running on multi-media chip)
4295e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4296e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameters       sync_dir: BTM_SW_BB_TO_MM: switch from BB to MM stack
4297e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                            BTM_SW_MM_TO_BB: switch from MM to BB stack
4298e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                            BTM_SW_RESYNC: resync MM and BB stacks
4299e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4300e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  p_sync_cback: callback function for event notification
4301e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns
4302e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4303e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
4304e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_SyncStack(tBTM_SW_DIR sync_dir, tBTM_SYNC_STACK_CBACK p_sync_cback);
4305e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
4306e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
4307e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4308e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SyncBtaRsp
4309e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4310e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      For Dual-Stack support. Called to indicate that upper layers
4311e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  (e.g. BTA or application) have completed synchronizing bta/app
4312e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  specific layers for switching.
4313e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4314e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  Called in response to 'BTM_SYNC_BTA_EVT'
4315e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4316e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameters       status: BTM_SUCESS: bta/app successfully synchronized
4317e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                          otherwise:  sync was unsuccessfule. Abort switch.
4318e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4319e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  p_btm_sync_info: information from bta/app that will be needed
4320e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                                  by BTE (avdt and l2cap) for switching.
4321e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4322e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          void
4323e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4324e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
4325e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern void BTM_SyncBtaRsp(tBTM_STATUS status, tBTM_SYNC_INFO *p_btm_sync_info);
4326e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
4327e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
4328e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4329e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_OpenUIPC
4330e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4331e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      For Dual-Stack support. Called to open UIPC between
4332e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  main stack (running on phone baseband) to embedded light stack
4333e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  (running on Multimedia or Bluetooth Controller chip)
4334e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4335e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameters       sync_dir: BTM_SW_BB_TO_MM: switch from BB to MM stack
4336e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                            BTM_SW_BB_TO_BTC:switch from BB to BTC stack
4337e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4338e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  p_sync_callback: callback function for event notification
4339e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns
4340e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4341e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
4342e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_OpenUIPC(tBTM_SW_DIR sync_dir, tBTM_SYNC_STACK_CBACK p_sync_callback);
4343e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
4344e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
4345e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4346e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_CloseUIPC
4347e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4348e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      For Dual-Stack support. Called to close UIPC between
4349e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  main stack (running on phone baseband) to embedded light stack
4350e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  (running on Multimedia or Bluetooth Controller chip)
4351e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
43526ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** Parameters
4353e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  p_sync_callback: callback function for event notification
4354e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns
4355e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4356e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
4357e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_CloseUIPC(tBTM_SYNC_STACK_CBACK p_sync_callback);
4358e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
4359e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
4360e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4361e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_IpcSend
4362e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4363e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      For Dual-Stack support. Called to send ipc messages from
4364e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  full stack to lite stack and vice-versa. This API is
4365e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  typically called by bta layers e.g. bta_av.
4366e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4367e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4368e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameters       len:    Length of the buffer in the ipc message
4369e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4370e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  buffer: Pointer to the buffer to be passed in the IPC message
4371e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4372e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          void
4373e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4374e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
4375e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern void BTM_IpcSend(UINT16 len, UINT8* buffer);
4376e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
4377e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
4378e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4379e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_IpcSendBuf
4380e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4381e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      For Dual-Stack support. Called to send ipc messages from
43826ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach**                  full stack to lite stack and vice-versa. This API is
4383e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  typically called by bta layers e.g. bta_av_sync.
4384e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
43856ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach**
4386e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameters       p_buf: Pointer to the buffer to be passed in the IPC message
4387e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4388e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          void
4389e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4390e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
4391e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern void BTM_IpcSendBuf(BT_HDR* p_buf);
4392e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
4393e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
4394e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4395e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_RegIpcEvtHandler
4396e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4397e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      registers the DM provided handler for IPC events
4398e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4399e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4400e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          void
4401e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4402e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
4403e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern void BTM_RegIpcEvtHandler(tBTM_IPC_EVT_CBACK *p_cback);
4404e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
4405e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
4406e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4407e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_RegRTIpcEvtHandler
4408e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4409e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      registers the RT(Audio Routing) provided handler for IPC events
4410e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4411e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4412e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          void
4413e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4414e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
4415e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern void BTM_RegRTIpcEvtHandler(tBTM_IPC_EVT_CBACK *p_cback);
4416e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
4417e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*****************************************************************************
4418e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**  N2BT
4419e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*****************************************************************************/
4420e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
4421e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Data callback for N2BT */
4422e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    typedef void (tBTM_N2BT_DATA_CB) (BD_ADDR bd_addr, UINT16 handle, UINT8 *p_data, UINT16 datalen);
4423e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
4424e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
4425e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4426e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_N2BtAcquire
4427e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4428e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      Put controller into acquisition mode
4429e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4430e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          void
4431e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4432e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
4433e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern void BTM_N2BtAcquire(BD_ADDR bd_addr, UINT16 timeout,
4434e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                        UINT8 freq, UINT8 src_addrlen, UINT8 sensor_flags,
4435e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                        UINT8 sensor_type, UINT8 sensor_clk_accuracy,
4436e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                        UINT16 add_rx_window, UINT16 init_crc,
4437e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                        UINT32 ac_low, UINT32 ac_high, UINT16 pkt_hdr,
4438e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                        UINT16 list_dur, UINT16 list_int,
4439e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                        UINT8 oor_missed_pkts, tBTM_VSC_CMPL_CB *p_cb,
4440e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                        tBTM_N2BT_DATA_CB *p_data_cback);
4441e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
4442e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
4443e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4444e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_N2BtDisconnect
4445e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4446e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      Disconnects all N2BT devices
4447e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4448e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          void
4449e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4450e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
4451e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern void BTM_N2BtDisconnect(void);
4452e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
4453e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
4454e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
4455e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4456e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_ConfigI2SPCM
4457e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4458e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function sends VSC Write_I2SPCM_Interface_Param
4459e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  as to the specified codec_type.
4460e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4461e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4462e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameter        codec_type: codec_type to be used for sco connection.
4463e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  role: master or slave role
44646ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach**                  sample_rate: sampling rate
4465e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  clock_rate:clock rate 128K to 2048K
4466e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4467e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4468e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_SUCCESS if the successful.
4469e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_ILLEGAL_VALUE: wrong codec type
4470e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4471e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
4472e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_ConfigI2SPCM (tBTM_SCO_CODEC_TYPE codec_type, UINT8 role, UINT8 sample_rate, UINT8 clock_rate);
4473e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
4474e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*****************************************************************************
4475e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**  SCO OVER HCI
4476e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*****************************************************************************/
4477e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
4478e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4479e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_ConfigScoPath
4480e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
44816ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** Description      This function enable/disable SCO over HCI and registers SCO
44826ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach**                  data callback if SCO over HCI is enabled.
4483e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4484e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameter        path: SCO or HCI
44856ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach**                  p_sco_data_cb: callback function or SCO data if path is set
4486e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                                 to transport.
4487e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  p_pcm_param: pointer to the PCM interface parameter. If a NULL
44886ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach**                               pointer is used, PCM parameter maintained in
4489e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                               the control block will be used; otherwise update
4490e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                               control block value.
4491e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  err_data_rpt: Lisbon feature to enable the erronous data report
4492e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                                or not.
4493e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4494e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_SUCCESS if the successful.
4495e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_NO_RESOURCES: no rsource to start the command.
4496e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_ILLEGAL_VALUE: invalid callback function pointer.
4497e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_CMD_STARTED :Command sent. Waiting for command cmpl event.
44986ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach**
4499e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4500e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
45016ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_ConfigScoPath (tBTM_SCO_ROUTE_TYPE path,
4502e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                  tBTM_SCO_DATA_CB *p_sco_data_cb,
4503e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                  tBTM_SCO_PCM_PARAM *p_pcm_param,
4504e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                                  BOOLEAN err_data_rpt);
4505e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
4506e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
4507e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4508e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_WriteScoData
4509e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4510e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      This function write SCO data to a specified instance. The data
45116ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach**                  to be written p_buf needs to carry an offset of
45126ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach**                  HCI_SCO_PREAMBLE_SIZE bytes, and the data length can not
4513e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  exceed BTM_SCO_DATA_SIZE_MAX bytes, whose default value is set
45146ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach**                  to 60 and is configurable. Data longer than the maximum bytes
45156ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach**                  will be truncated.
4516e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4517e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          BTM_SUCCESS: data write is successful
4518e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_ILLEGAL_VALUE: SCO data contains illegal offset value.
45196ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach**                  BTM_SCO_BAD_LENGTH: SCO data length exceeds the max SCO packet
45206ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach**                                      size.
4521e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_NO_RESOURCES: no resources.
4522e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                  BTM_UNKNOWN_ADDR: unknown SCO connection handle, or SCO is not
4523e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**                                    routed via HCI.
45246ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach**
4525e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4526e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
4527e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BTM_API extern tBTM_STATUS BTM_WriteScoData (UINT16 sco_inx, BT_HDR *p_buf);
4528e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
4529e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
4530e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4531e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_SetARCMode
4532e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4533e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      Send Audio Routing Control command.
4534e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4535e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          void
4536e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4537e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
4538e448862a47c08eb23185aaed574b39264f5005fcAndre EisenbachBTM_API extern void BTM_SetARCMode (UINT8 iface, UINT8 arc_mode, tBTM_VSC_CMPL_CB *p_arc_cb);
4539e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
4540e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
4541e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************
4542e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4543e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function         BTM_PCM2Setup_Write
4544e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4545e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description      Send PCM2_Setup write command.
4546e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4547e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns          void
4548e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach**
4549e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/
4550e448862a47c08eb23185aaed574b39264f5005fcAndre EisenbachBTM_API extern void BTM_PCM2Setup_Write (BOOLEAN clk_master, tBTM_VSC_CMPL_CB *p_arc_cb);
4551e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
4552e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#ifdef __cplusplus
4553e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach}
4554e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#endif
4555e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
4556e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#endif /* BTM_API_H */
4557