Home | History | Annotate | Download | only in include
      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