text: /******************************************************************************
   *
   *  Copyright (C) 2009-2013 Broadcom Corporation
   *
   *  Licensed under the Apache License, Version 2.0 (the "License");
   *  you may not use this file except in compliance with the License.
   *  You may obtain a copy of the License at:
   *
   *  http://www.apache.org/licenses/LICENSE-2.0
   *
   *  Unless required by applicable law or agreed to in writing, software
   *  distributed under the License is distributed on an "AS IS" BASIS,
   *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   *  See the License for the specific language governing permissions and
   *  limitations under the License.
   *
   ******************************************************************************/
  
  /******************************************************************************
   *
   *  This is the interface file for BTA GATT client call-out functions.
   *
   ******************************************************************************/
  #ifndef BTA_GATTC_CO_H
  #define BTA_GATTC_CO_H
  
  #include "bta/bta_gatt_api.h"
  #include "osi/hash_functions.h"
  
  /*******************************************************************************
  **
  ** Function         bta_gattc_co_cache_open
  **
  ** Description      This callout function is executed by GATTC when a GATT server
  **                  cache is ready to be sent.
  **
  ** Parameter        server_bda: server bd address of this cache belongs to
  **                  evt: call in event to be passed in when cache open is done.
  **                  conn_id: connection ID of this cache operation attach to.
  **                  to_save: open cache to save or to load.
  **
  ** Returns          void.
  **
  *******************************************************************************/
  extern tBTA_GATT_STATUS bta_gattc_co_cache_open(BD_ADDR server_bda, BOOLEAN to_save, UINT8 *index);
  
  /*******************************************************************************
  **
  ** Function         bta_gattc_co_cache_close
  **
  ** Description      This callout function is executed by GATTC when a GATT server
  **                  cache is written completely.
  **
  ** Parameter        server_bda: server bd address of this cache belongs to
  **                  conn_id: connection ID of this cache operation attach to.
  **
  ** Returns          void.
  **
  *******************************************************************************/
  extern void bta_gattc_co_cache_close(BD_ADDR server_bda, UINT16 conn_id);
  
  /*******************************************************************************
  **
  ** Function         bta_gattc_co_cache_save
  **
  ** Description      This callout function is executed by GATT when a server cache
  **                  is available to save.
  **
  ** Parameter        server_bda: server bd address of this cache belongs to
  **                  evt: call in event to be passed in when cache save is done.
  **                  num_attr: number of attribute to be save.
  **                  p_attr: pointer to the list of attributes to save.
  **                  attr_index: starting attribute index of the save operation.
  **                  conn_id: connection ID of this cache operation attach to.
  ** Returns
  **
  *******************************************************************************/
  extern void bta_gattc_co_cache_save (BD_ADDR server_bda, UINT16 num_attr,
                                tBTA_GATTC_NV_ATTR *p_attr_list);
  
  /*******************************************************************************
  **
  ** Function         bta_gattc_co_cache_load
  **
  ** Description      This callout function is executed by GATT when server cache
  **                  is required to load.
  **
  ** Parameter        server_bda: server bd address of this cache belongs to
  **                  evt: call in event to be passed in when cache save is done.
  **                  num_attr: number of attribute to be save.
  **                  attr_index: starting attribute index of the save operation.
  **                  conn_id: connection ID of this cache operation attach to.
  ** Returns
  **
  *******************************************************************************/
  extern tBTA_GATT_STATUS bta_gattc_co_cache_load(tBTA_GATTC_NV_ATTR *attr, UINT8 index);
  
  /*******************************************************************************
  **
  ** Function         bta_gattc_co_cache_reset
  **
  ** Description      This callout function is executed by GATTC to reset cache in
  **                  application
  **
  ** Parameter        server_bda: server bd address of this cache belongs to
  **
  ** Returns          void.
  **
  *******************************************************************************/
  extern void bta_gattc_co_cache_reset(BD_ADDR server_bda);
  
  extern size_t bta_gattc_get_cache_attr_length(UINT8 index);
  
  extern void bta_gattc_co_cache_addr_init(void);
  
  extern void bta_gattc_co_cache_addr_deinit(void);
  
  extern BOOLEAN bta_gattc_co_addr_in_cache(BD_ADDR bda);
  
  extern uint8_t bta_gattc_co_find_addr_in_cache(BD_ADDR bda);
  
  extern uint8_t bta_gattc_co_find_hash_in_cache(hash_key_t hash_key);
  
  extern UINT8 bta_gattc_co_get_addr_num(void);
  
  extern void bta_gattc_co_get_addr_list(BD_ADDR *addr_list);
  
  extern void bta_gattc_co_cache_addr_save(BD_ADDR bd_addr, hash_key_t hash_key);
  
  extern BOOLEAN bta_gattc_co_cache_new_assoc_list(BD_ADDR src_addr, uint8_t index);
  
  extern BOOLEAN bta_gattc_co_cache_append_assoc_addr(BD_ADDR src_addr, BD_ADDR assoc_addr);
  
  extern BOOLEAN bta_gattc_co_cache_remove_assoc_addr(BD_ADDR src_addr, BD_ADDR assoc_addr);
  
  uint8_t* bta_gattc_co_cache_find_src_addr(BD_ADDR assoc_addr, uint8_t *index);
  
  extern BOOLEAN bta_gattc_co_cache_clear_assoc_addr(BD_ADDR src_addr);
  
  #endif /* BTA_GATT_CO_H */
  