15738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/****************************************************************************** 25738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 35738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Copyright (C) 2010-2012 Broadcom Corporation 45738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 55738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 65738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * you may not use this file except in compliance with the License. 75738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * You may obtain a copy of the License at: 85738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 95738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * See the License for the specific language governing permissions and 155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * limitations under the License. 165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ******************************************************************************/ 185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/****************************************************************************** 205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * This is the implementation file for the GATT call-in functions. 225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ******************************************************************************/ 245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bt_target.h" 265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if defined(BTA_GATT_INCLUDED) && (BTA_GATT_INCLUDED == TRUE) 285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include <string.h> 305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_api.h" 325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_sys.h" 335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_gattc_ci.h" 345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "gki.h" 355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bd.h" 365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_gattc_ci_cache_open 405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function sends an event to indicate server cache open 425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** completed. 435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Parameters server_bda - server BDA of this cache. 455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** status - BTA_GATT_OK if full buffer of data, 465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** BTA_GATT_FAIL if an error has occurred. 475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns void 495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid bta_gattc_ci_cache_open(BD_ADDR server_bda, UINT16 evt, tBTA_GATT_STATUS status, 525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 conn_id) 535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTC_CI_EVT *p_evt; 555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p_evt = (tBTA_GATTC_CI_EVT *) GKI_getbuf(sizeof(tBTA_GATTC_CI_EVT))) != NULL) 575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt->hdr.event = evt; 595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt->hdr.layer_specific = conn_id; 605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt->status = status; 625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_sendmsg(p_evt); 635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_gattc_ci_cache_load 695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function sends an event to BTA indicating the phone has 715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** load the servere cache and ready to send it to the stack. 725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Parameters server_bda - server BDA of this cache. 745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** num_bytes_read - number of bytes read into the buffer 755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** specified in the read callout-function. 765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** status - BTA_GATT_OK if full buffer of data, 775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** BTA_GATT_FAIL if an error has occurred. 785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns void 805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid bta_gattc_ci_cache_load(BD_ADDR server_bda, UINT16 evt, UINT16 num_attr, 835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTC_NV_ATTR *p_attr, tBTA_GATT_STATUS status, 845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 conn_id) 855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTC_CI_LOAD *p_evt; 875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p_evt = (tBTA_GATTC_CI_LOAD *) GKI_getbuf(sizeof(tBTA_GATTC_CI_LOAD))) != NULL) 895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memset(p_evt, 0, sizeof(tBTA_GATTC_CI_LOAD)); 915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt->hdr.event = evt; 935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt->hdr.layer_specific = conn_id; 945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt->status = status; 965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt->num_attr = (num_attr > BTA_GATTC_NV_LOAD_MAX) ? BTA_GATTC_NV_LOAD_MAX : num_attr; 975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_evt->num_attr > 0 && p_attr != NULL) 995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memcpy(p_evt->attr, p_attr, p_evt->num_attr * sizeof(tBTA_GATTC_NV_ATTR)); 1015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 1025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_sendmsg(p_evt); 1045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 1055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 1065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 1085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_gattc_ci_cache_save 1105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function sends an event to BTA indicating the phone has 1125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** save the servere cache. 1135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Parameters server_bda - server BDA of this cache. 1155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** evt - callin event code. 1165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** status - BTA_GATT_OK if full buffer of data, 1175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** BTA_GATT_ERROR if an error has occurred. 1185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*8 conn_id - for this NV operation for. 1195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns void 1215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 1235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid bta_gattc_ci_cache_save(BD_ADDR server_bda, UINT16 evt, tBTA_GATT_STATUS status, 1245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 conn_id) 1255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTC_CI_EVT *p_evt; 1275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p_evt = (tBTA_GATTC_CI_EVT *) GKI_getbuf(sizeof(tBTA_GATTC_CI_EVT))) != NULL) 1295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt->hdr.event = evt; 1315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt->hdr.layer_specific = conn_id; 1325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt->status = status; 1345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_sendmsg(p_evt); 1355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 1365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 1375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif /* BTA_GATT_INCLUDED */ 138