• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /******************************************************************************
2  *
3  *  Copyright 2009-2012 Broadcom Corporation
4  *
5  *  Licensed under the Apache License, Version 2.0 (the "License");
6  *  you may not use this file except in compliance with the License.
7  *  You may obtain a copy of the License at:
8  *
9  *  http://www.apache.org/licenses/LICENSE-2.0
10  *
11  *  Unless required by applicable law or agreed to in writing, software
12  *  distributed under the License is distributed on an "AS IS" BASIS,
13  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  *  See the License for the specific language governing permissions and
15  *  limitations under the License.
16  *
17  ******************************************************************************/
18 
19 #ifndef BTIF_STORAGE_H
20 #define BTIF_STORAGE_H
21 
22 #include <bluetooth/uuid.h>
23 #include <hardware/bluetooth.h>
24 
25 #include "bt_target.h"
26 #include "bt_types.h"
27 
28 /*******************************************************************************
29  *  Constants & Macros
30  ******************************************************************************/
31 #define BTIF_STORAGE_FILL_PROPERTY(p_prop, t, l, p_v) \
32   do {                                                \
33     (p_prop)->type = (t);                             \
34     (p_prop)->len = (l);                              \
35     (p_prop)->val = (p_v);                            \
36   } while (0)
37 
38 /*******************************************************************************
39  *  Functions
40  ******************************************************************************/
41 
42 /*******************************************************************************
43  *
44  * Function         btif_storage_get_adapter_property
45  *
46  * Description      BTIF storage API - Fetches the adapter property->type
47  *                  from NVRAM and fills property->val.
48  *                  Caller should provide memory for property->val and
49  *                  set the property->val
50  *
51  * Returns          BT_STATUS_SUCCESS if the fetch was successful,
52  *                  BT_STATUS_FAIL otherwise
53  *
54  ******************************************************************************/
55 bt_status_t btif_storage_get_adapter_property(bt_property_t* property);
56 
57 /*******************************************************************************
58  *
59  * Function         btif_storage_set_adapter_property
60  *
61  * Description      BTIF storage API - Stores the adapter property
62  *                  to NVRAM
63  *
64  * Returns          BT_STATUS_SUCCESS if the store was successful,
65  *                  BT_STATUS_FAIL otherwise
66  *
67  ******************************************************************************/
68 bt_status_t btif_storage_set_adapter_property(bt_property_t* property);
69 
70 /*******************************************************************************
71  *
72  * Function         btif_storage_get_remote_device_property
73  *
74  * Description      BTIF storage API - Fetches the remote device property->type
75  *                  from NVRAM and fills property->val.
76  *                  Caller should provide memory for property->val and
77  *                  set the property->val
78  *
79  * Returns          BT_STATUS_SUCCESS if the fetch was successful,
80  *                  BT_STATUS_FAIL otherwise
81  *
82  ******************************************************************************/
83 bt_status_t btif_storage_get_remote_device_property(
84     const RawAddress* remote_bd_addr, bt_property_t* property);
85 
86 /*******************************************************************************
87  *
88  * Function         btif_storage_set_remote_device_property
89  *
90  * Description      BTIF storage API - Stores the remote device property
91  *                  to NVRAM
92  *
93  * Returns          BT_STATUS_SUCCESS if the store was successful,
94  *                  BT_STATUS_FAIL otherwise
95  *
96  ******************************************************************************/
97 bt_status_t btif_storage_set_remote_device_property(
98     const RawAddress* remote_bd_addr, bt_property_t* property);
99 
100 /*******************************************************************************
101  *
102  * Function         btif_storage_add_remote_device
103  *
104  * Description      BTIF storage API - Adds a newly discovered device to
105  *                  track along with the timestamp. Also, stores the various
106  *                  properties - RSSI, BDADDR, NAME (if found in EIR)
107  *
108  * Returns          BT_STATUS_SUCCESS if successful,
109  *                  BT_STATUS_FAIL otherwise
110  *
111  ******************************************************************************/
112 bt_status_t btif_storage_add_remote_device(const RawAddress* remote_bd_addr,
113                                            uint32_t num_properties,
114                                            bt_property_t* properties);
115 
116 /*******************************************************************************
117  *
118  * Function         btif_storage_add_bonded_device
119  *
120  * Description      BTIF storage API - Adds the newly bonded device to NVRAM
121  *                  along with the link-key, Key type and Pin key length
122  *
123  * Returns          BT_STATUS_SUCCESS if the store was successful,
124  *                  BT_STATUS_FAIL otherwise
125  *
126  ******************************************************************************/
127 bt_status_t btif_storage_add_bonded_device(RawAddress* remote_bd_addr,
128                                            LINK_KEY link_key, uint8_t key_type,
129                                            uint8_t pin_length);
130 
131 /*******************************************************************************
132  *
133  * Function         btif_storage_remove_bonded_device
134  *
135  * Description      BTIF storage API - Deletes the bonded device from NVRAM
136  *
137  * Returns          BT_STATUS_SUCCESS if the deletion was successful,
138  *                  BT_STATUS_FAIL otherwise
139  *
140  ******************************************************************************/
141 bt_status_t btif_storage_remove_bonded_device(const RawAddress* remote_bd_addr);
142 
143 /*******************************************************************************
144  *
145  * Function         btif_storage_remove_bonded_device
146  *
147  * Description      BTIF storage API - Deletes the bonded device from NVRAM
148  *
149  * Returns          BT_STATUS_SUCCESS if the deletion was successful,
150  *                  BT_STATUS_FAIL otherwise
151  *
152  ******************************************************************************/
153 bt_status_t btif_storage_load_bonded_devices(void);
154 
155 /*******************************************************************************
156  *
157  * Function         btif_storage_add_hid_device_info
158  *
159  * Description      BTIF storage API - Adds the hid information of bonded hid
160  *                  devices-to NVRAM
161  *
162  * Returns          BT_STATUS_SUCCESS if the store was successful,
163  *                  BT_STATUS_FAIL otherwise
164  *
165  ******************************************************************************/
166 
167 bt_status_t btif_storage_add_hid_device_info(
168     RawAddress* remote_bd_addr, uint16_t attr_mask, uint8_t sub_class,
169     uint8_t app_id, uint16_t vendor_id, uint16_t product_id, uint16_t version,
170     uint8_t ctry_code, uint16_t ssr_max_latency, uint16_t ssr_min_tout,
171     uint16_t dl_len, uint8_t* dsc_list);
172 
173 /*******************************************************************************
174  *
175  * Function         btif_storage_load_bonded_hid_info
176  *
177  * Description      BTIF storage API - Loads hid info for all the bonded devices
178  *                  from NVRAM and adds those devices  to the BTA_HH.
179  *
180  * Returns          BT_STATUS_SUCCESS if successful, BT_STATUS_FAIL otherwise
181  *
182  ******************************************************************************/
183 bt_status_t btif_storage_load_bonded_hid_info(void);
184 
185 /*******************************************************************************
186  *
187  * Function         btif_storage_remove_hid_info
188  *
189  * Description      BTIF storage API - Deletes the bonded hid device info from
190  *                  NVRAM
191  *
192  * Returns          BT_STATUS_SUCCESS if the deletion was successful,
193  *                  BT_STATUS_FAIL otherwise
194  *
195  ******************************************************************************/
196 bt_status_t btif_storage_remove_hid_info(RawAddress* remote_bd_addr);
197 
198 /** Loads information about bonded hearing aid devices */
199 void btif_storage_load_bonded_hearing_aids();
200 
201 /** Deletes the bonded hearing aid device info from NVRAM */
202 void btif_storage_remove_hearing_aid(const RawAddress& address);
203 
204 /** Remove the hearing aid device from white list */
205 void btif_storage_remove_hearing_aid_white_list(const RawAddress& address);
206 
207 /*******************************************************************************
208  *
209  * Function         btif_storage_is_retricted_device
210  *
211  * Description      BTIF storage API - checks if this device is a restricted
212  *                  device
213  *
214  * Returns          true  if the device is labled as restricted
215  *                  false otherwise
216  *
217  ******************************************************************************/
218 bool btif_storage_is_restricted_device(const RawAddress* remote_bd_addr);
219 
220 bt_status_t btif_storage_add_ble_bonding_key(RawAddress* remote_bd_addr,
221                                              const uint8_t* key,
222                                              uint8_t key_type,
223                                              uint8_t key_length);
224 bt_status_t btif_storage_get_ble_bonding_key(RawAddress* remote_bd_addr,
225                                              uint8_t key_type,
226                                              uint8_t* key_value,
227                                              int key_length);
228 
229 bt_status_t btif_storage_add_ble_local_key(char* key, uint8_t key_type,
230                                            uint8_t key_length);
231 bt_status_t btif_storage_remove_ble_bonding_keys(
232     const RawAddress* remote_bd_addr);
233 bt_status_t btif_storage_remove_ble_local_keys(void);
234 bt_status_t btif_storage_get_ble_local_key(uint8_t key_type, char* key_value,
235                                            int key_len);
236 
237 bt_status_t btif_storage_get_remote_addr_type(const RawAddress* remote_bd_addr,
238                                               int* addr_type);
239 
240 bt_status_t btif_storage_set_remote_addr_type(const RawAddress* remote_bd_addr,
241                                               uint8_t addr_type);
242 
243 /*******************************************************************************
244  * Function         btif_storage_load_hidd
245  *
246  * Description      Loads hidd bonded device and "plugs" it into hidd
247  *
248  * Returns          BT_STATUS_SUCCESS if successful, BT_STATUS_FAIL otherwise
249  *
250  ******************************************************************************/
251 bt_status_t btif_storage_load_hidd(void);
252 
253 /*******************************************************************************
254  *
255  * Function         btif_storage_set_hidd
256  *
257  * Description      Stores hidd bonded device info in nvram.
258  *
259  * Returns          BT_STATUS_SUCCESS
260  *
261  ******************************************************************************/
262 
263 bt_status_t btif_storage_set_hidd(RawAddress* remote_bd_addr);
264 
265 /*******************************************************************************
266  *
267  * Function         btif_storage_remove_hidd
268  *
269  * Description      Removes hidd bonded device info from nvram
270  *
271  * Returns          BT_STATUS_SUCCESS
272  *
273  ******************************************************************************/
274 
275 bt_status_t btif_storage_remove_hidd(RawAddress* remote_bd_addr);
276 
277 // Gets the device name for a given Bluetooth address |bd_addr|.
278 // The device name (if found) is stored in |name|.
279 // Returns true if the device name is found, othervise false.
280 // Note: |name| should point to a buffer that can store string of length
281 // |BTM_MAX_REM_BD_NAME_LEN|.
282 bool btif_storage_get_stored_remote_name(const RawAddress& bd_addr, char* name);
283 
284 /******************************************************************************
285  * Exported for unit tests
286  *****************************************************************************/
287 size_t btif_split_uuids_string(const char* str, bluetooth::Uuid* p_uuid,
288                                size_t max_uuids);
289 
290 #endif /* BTIF_STORAGE_H */
291