1 /****************************************************************************** 2 * 3 * Copyright (C) 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 "data_types.h" 23 #include "bt_types.h" 24 25 #include <utils/Log.h> 26 27 /******************************************************************************* 28 ** Constants & Macros 29 ********************************************************************************/ 30 #define BTIF_STORAGE_FILL_PROPERTY(p_prop, t, l, p_v) \ 31 (p_prop)->type = t;(p_prop)->len = l; (p_prop)->val = (p_v); 32 33 #define BTIF_STORAGE_MAX_ALLOWED_REMOTE_DEVICE 512 34 35 /******************************************************************************* 36 ** Functions 37 ********************************************************************************/ 38 39 /******************************************************************************* 40 ** 41 ** Function btif_storage_get_adapter_property 42 ** 43 ** Description BTIF storage API - Fetches the adapter property->type 44 ** from NVRAM and fills property->val. 45 ** Caller should provide memory for property->val and 46 ** set the property->val 47 ** 48 ** Returns BT_STATUS_SUCCESS if the fetch was successful, 49 ** BT_STATUS_FAIL otherwise 50 ** 51 *******************************************************************************/ 52 bt_status_t btif_storage_get_adapter_property(bt_property_t *property); 53 54 /******************************************************************************* 55 ** 56 ** Function btif_storage_set_adapter_property 57 ** 58 ** Description BTIF storage API - Stores the adapter property 59 ** to NVRAM 60 ** 61 ** Returns BT_STATUS_SUCCESS if the store was successful, 62 ** BT_STATUS_FAIL otherwise 63 ** 64 *******************************************************************************/ 65 bt_status_t btif_storage_set_adapter_property(bt_property_t *property); 66 67 /******************************************************************************* 68 ** 69 ** Function btif_storage_get_remote_device_property 70 ** 71 ** Description BTIF storage API - Fetches the remote device property->type 72 ** from NVRAM and fills property->val. 73 ** Caller should provide memory for property->val and 74 ** set the property->val 75 ** 76 ** Returns BT_STATUS_SUCCESS if the fetch was successful, 77 ** BT_STATUS_FAIL otherwise 78 ** 79 *******************************************************************************/ 80 bt_status_t btif_storage_get_remote_device_property(bt_bdaddr_t *remote_bd_addr, 81 bt_property_t *property); 82 83 /******************************************************************************* 84 ** 85 ** Function btif_storage_set_remote_device_property 86 ** 87 ** Description BTIF storage API - Stores the remote device property 88 ** to NVRAM 89 ** 90 ** Returns BT_STATUS_SUCCESS if the store was successful, 91 ** BT_STATUS_FAIL otherwise 92 ** 93 *******************************************************************************/ 94 bt_status_t btif_storage_set_remote_device_property(bt_bdaddr_t *remote_bd_addr, 95 bt_property_t *property); 96 97 /******************************************************************************* 98 ** 99 ** Function btif_storage_add_remote_device 100 ** 101 ** Description BTIF storage API - Adds a newly discovered device to NVRAM 102 ** along with the timestamp. Also, stores the various 103 ** properties - RSSI, BDADDR, NAME (if found in EIR) 104 ** 105 ** Returns BT_STATUS_SUCCESS if the store was successful, 106 ** BT_STATUS_FAIL otherwise 107 ** 108 *******************************************************************************/ 109 bt_status_t btif_storage_add_remote_device(bt_bdaddr_t *remote_bd_addr, 110 uint32_t num_properties, 111 bt_property_t *properties); 112 113 /******************************************************************************* 114 ** 115 ** Function btif_storage_add_bonded_device 116 ** 117 ** Description BTIF storage API - Adds the newly bonded device to NVRAM 118 ** along with the link-key, Key type and Pin key length 119 ** 120 ** Returns BT_STATUS_SUCCESS if the store was successful, 121 ** BT_STATUS_FAIL otherwise 122 ** 123 *******************************************************************************/ 124 bt_status_t btif_storage_add_bonded_device(bt_bdaddr_t *remote_bd_addr, 125 LINK_KEY link_key, 126 uint8_t key_type, 127 uint8_t pin_length); 128 129 /******************************************************************************* 130 ** 131 ** Function btif_storage_remove_bonded_device 132 ** 133 ** Description BTIF storage API - Deletes the bonded device from NVRAM 134 ** 135 ** Returns BT_STATUS_SUCCESS if the deletion was successful, 136 ** BT_STATUS_FAIL otherwise 137 ** 138 *******************************************************************************/ 139 bt_status_t btif_storage_remove_bonded_device(bt_bdaddr_t *remote_bd_addr); 140 141 /******************************************************************************* 142 ** 143 ** Function btif_storage_remove_bonded_device 144 ** 145 ** Description BTIF storage API - Deletes the bonded device from NVRAM 146 ** 147 ** Returns BT_STATUS_SUCCESS if the deletion was successful, 148 ** BT_STATUS_FAIL otherwise 149 ** 150 *******************************************************************************/ 151 bt_status_t btif_storage_load_bonded_devices(void); 152 153 /******************************************************************************* 154 ** 155 ** Function btif_storage_read_hl_apps_cb 156 ** 157 ** Description BTIF storage API - Read HL application control block from NVRAM 158 ** 159 ** Returns BT_STATUS_SUCCESS if the operation was successful, 160 ** BT_STATUS_FAIL otherwise 161 ** 162 *******************************************************************************/ 163 bt_status_t btif_storage_read_hl_apps_cb(char *value, int value_size); 164 165 /******************************************************************************* 166 ** 167 ** Function btif_storage_write_hl_apps_cb 168 ** 169 ** Description BTIF storage API - Write HL application control block to NVRAM 170 ** 171 ** Returns BT_STATUS_SUCCESS if the operation was successful, 172 ** BT_STATUS_FAIL otherwise 173 ** 174 *******************************************************************************/ 175 bt_status_t btif_storage_write_hl_apps_cb(char *value, int value_size); 176 177 /******************************************************************************* 178 ** 179 ** Function btif_storage_read_hl_apps_cb 180 ** 181 ** Description BTIF storage API - Read HL application configuration from NVRAM 182 ** 183 ** Returns BT_STATUS_SUCCESS if the operation was successful, 184 ** BT_STATUS_FAIL otherwise 185 ** 186 *******************************************************************************/ 187 bt_status_t btif_storage_read_hl_app_data(UINT8 app_idx, char *value, int value_size); 188 189 /******************************************************************************* 190 ** 191 ** Function btif_storage_write_hl_app_data 192 ** 193 ** Description BTIF storage API - Write HL application configuration to NVRAM 194 ** 195 ** Returns BT_STATUS_SUCCESS if the operation was successful, 196 ** BT_STATUS_FAIL otherwise 197 ** 198 *******************************************************************************/ 199 bt_status_t btif_storage_write_hl_app_data(UINT8 app_idx, char *value, int value_size); 200 201 /******************************************************************************* 202 ** 203 ** Function btif_storage_read_hl_mdl_data 204 ** 205 ** Description BTIF storage API - Read HL application MDL configuration from NVRAM 206 ** 207 ** Returns BT_STATUS_SUCCESS if the operation was successful, 208 ** BT_STATUS_FAIL otherwise 209 ** 210 *******************************************************************************/ 211 bt_status_t btif_storage_read_hl_mdl_data(UINT8 app_idx, char *value, int value_size); 212 213 /******************************************************************************* 214 ** 215 ** Function btif_storage_write_hl_mdl_data 216 ** 217 ** Description BTIF storage API - Write HL application MDL configuration from NVRAM 218 ** 219 ** Returns BT_STATUS_SUCCESS if the operation was successful, 220 ** BT_STATUS_FAIL otherwise 221 ** 222 *******************************************************************************/ 223 bt_status_t btif_storage_write_hl_mdl_data(UINT8 app_idx, char *value, int value_size); 224 225 /******************************************************************************* 226 ** 227 ** Function btif_storage_add_hid_device_info 228 ** 229 ** Description BTIF storage API - Adds the hid information of bonded hid devices-to NVRAM 230 ** 231 ** Returns BT_STATUS_SUCCESS if the store was successful, 232 ** BT_STATUS_FAIL otherwise 233 ** 234 *******************************************************************************/ 235 236 bt_status_t btif_storage_add_hid_device_info(bt_bdaddr_t *remote_bd_addr, 237 UINT16 attr_mask, UINT8 sub_class, 238 UINT8 app_id, UINT16 vendor_id, 239 UINT16 product_id, UINT16 version, 240 UINT8 ctry_code, UINT16 ssr_max_latency, 241 UINT16 ssr_min_tout, UINT16 dl_len, UINT8 *dsc_list); 242 243 /******************************************************************************* 244 ** 245 ** Function btif_storage_load_bonded_hid_info 246 ** 247 ** Description BTIF storage API - Loads hid info for all the bonded devices from NVRAM 248 ** and adds those devices to the BTA_HH. 249 ** 250 ** Returns BT_STATUS_SUCCESS if successful, BT_STATUS_FAIL otherwise 251 ** 252 *******************************************************************************/ 253 bt_status_t btif_storage_load_bonded_hid_info(void); 254 255 /******************************************************************************* 256 ** 257 ** Function btif_storage_remove_hid_info 258 ** 259 ** Description BTIF storage API - Deletes the bonded hid device info from NVRAM 260 ** 261 ** Returns BT_STATUS_SUCCESS if the deletion was successful, 262 ** BT_STATUS_FAIL otherwise 263 ** 264 *******************************************************************************/ 265 bt_status_t btif_storage_remove_hid_info(bt_bdaddr_t *remote_bd_addr); 266 267 /******************************************************************************* 268 ** 269 ** Function btif_storage_load_autopair_device_list 270 ** 271 ** Description BTIF storage API - Populates auto pair device list 272 ** 273 ** Returns BT_STATUS_SUCCESS if the auto pair blacklist is successfully populated 274 ** BT_STATUS_FAIL otherwise 275 ** 276 *******************************************************************************/ 277 bt_status_t btif_storage_load_autopair_device_list(); 278 279 /******************************************************************************* 280 ** 281 ** Function btif_storage_is_device_autopair_blacklisted 282 ** 283 ** Description BTIF storage API Checks if the given device is blacklisted for auto pairing 284 ** 285 ** Returns TRUE if the device is found in the auto pair blacklist 286 ** FALSE otherwise 287 ** 288 *******************************************************************************/ 289 290 BOOLEAN btif_storage_is_device_autopair_blacklisted(bt_bdaddr_t *remote_bd_addr); 291 292 /******************************************************************************* 293 ** 294 ** Function btif_storage_add_device_to_autopair_blacklist 295 ** 296 ** Description BTIF storage API - Add a remote device to the auto pairing blacklist 297 ** 298 ** Returns BT_STATUS_SUCCESS if the device is successfully added to the auto pair blacklist 299 ** BT_STATUS_FAIL otherwise 300 ** 301 *******************************************************************************/ 302 303 bt_status_t btif_storage_add_device_to_autopair_blacklist(bt_bdaddr_t *remote_bd_addr); 304 305 /******************************************************************************* 306 ** 307 ** Function btif_storage_is_fixed_pin_zeros_keyboard 308 ** 309 ** Description BTIF storage API - checks if this device has fixed PIN key device list 310 ** 311 ** Returns TRUE if the device is found in the fixed pin keyboard device list 312 ** FALSE otherwise 313 ** 314 *******************************************************************************/ 315 BOOLEAN btif_storage_is_fixed_pin_zeros_keyboard(bt_bdaddr_t *remote_bd_addr); 316 317 #if (BLE_INCLUDED == TRUE) 318 bt_status_t btif_storage_add_ble_bonding_key( bt_bdaddr_t *remote_bd_addr, 319 char *key, 320 uint8_t key_type, 321 uint8_t key_length); 322 bt_status_t btif_storage_get_ble_bonding_key(bt_bdaddr_t *remote_bd_addr, 323 UINT8 key_type, 324 char *key_value, 325 int key_length); 326 327 bt_status_t btif_storage_add_ble_local_key(char *key, 328 uint8_t key_type, 329 uint8_t key_length); 330 bt_status_t btif_storage_remove_ble_bonding_keys(bt_bdaddr_t *remote_bd_addr); 331 bt_status_t btif_storage_remove_ble_local_keys(void); 332 bt_status_t btif_storage_get_ble_local_key(UINT8 key_type, 333 char *key_value, 334 int key_len); 335 336 bt_status_t btif_storage_get_remote_addr_type(bt_bdaddr_t *remote_bd_addr, 337 int *addr_type); 338 339 bt_status_t btif_storage_set_remote_addr_type(bt_bdaddr_t *remote_bd_addr, 340 UINT8 addr_type); 341 342 #endif 343 /******************************************************************************* 344 ** 345 ** Function btif_storage_get_remote_version 346 ** 347 ** Description Fetch remote version info on cached remote device 348 ** 349 ** Returns BT_STATUS_SUCCESS if found 350 ** BT_STATUS_FAIL otherwise 351 ** 352 *******************************************************************************/ 353 354 bt_status_t btif_storage_get_remote_version(const bt_bdaddr_t *remote_bd_addr, 355 bt_remote_version_t *p_ver); 356 357 /******************************************************************************* 358 ** 359 ** Function btif_storage_set_dmt_support_type 360 ** 361 ** Description Sets DMT support status for a remote device 362 ** 363 ** Returns BT_STATUS_SUCCESS if config update is successful 364 ** BT_STATUS_FAIL otherwise 365 ** 366 *******************************************************************************/ 367 368 bt_status_t btif_storage_set_dmt_support_type(const bt_bdaddr_t *remote_bd_addr, 369 BOOLEAN dmt_supported); 370 371 372 373 /******************************************************************************* 374 ** 375 ** Function btif_storage_is_dmt_supported_device 376 ** 377 ** Description checks if a device supports Dual mode topology 378 ** 379 ** Returns TRUE if remote supports DMT else FALSE 380 ** 381 *******************************************************************************/ 382 383 BOOLEAN btif_storage_is_dmt_supported_device(const bt_bdaddr_t *remote_bd_addr); 384 385 386 #endif /* BTIF_STORAGE_H */ 387