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*******************************************************************************/ 52bt_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*******************************************************************************/ 65bt_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*******************************************************************************/ 80bt_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*******************************************************************************/ 94bt_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*******************************************************************************/ 109bt_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*******************************************************************************/ 124bt_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*******************************************************************************/ 139bt_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*******************************************************************************/ 151bt_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*******************************************************************************/ 163bt_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*******************************************************************************/ 175bt_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*******************************************************************************/ 187bt_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*******************************************************************************/ 199bt_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*******************************************************************************/ 211bt_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*******************************************************************************/ 223bt_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 236bt_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*******************************************************************************/ 253bt_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*******************************************************************************/ 265bt_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*******************************************************************************/ 277bt_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 290BOOLEAN 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 303bt_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*******************************************************************************/ 315BOOLEAN btif_storage_is_fixed_pin_zeros_keyboard(bt_bdaddr_t *remote_bd_addr); 316 317#if (BLE_INCLUDED == TRUE) 318bt_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); 322bt_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 327bt_status_t btif_storage_add_ble_local_key(char *key, 328 uint8_t key_type, 329 uint8_t key_length); 330bt_status_t btif_storage_remove_ble_bonding_keys(bt_bdaddr_t *remote_bd_addr); 331bt_status_t btif_storage_remove_ble_local_keys(void); 332bt_status_t btif_storage_get_ble_local_key(UINT8 key_type, 333 char *key_value, 334 int key_len); 335 336bt_status_t btif_storage_get_remote_addr_type(bt_bdaddr_t *remote_bd_addr, 337 int *addr_type); 338 339bt_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 354bt_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 368bt_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 383BOOLEAN btif_storage_is_dmt_supported_device(const bt_bdaddr_t *remote_bd_addr); 384 385 386#endif /* BTIF_STORAGE_H */ 387