12dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta/****************************************************************************** 22dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta * 32dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta * Copyright (C) 2014 The Android Open Source Project 42dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta * Copyright (C) 2003-2012 Broadcom Corporation 52dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta * 62dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta * Licensed under the Apache License, Version 2.0 (the "License"); 72dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta * you may not use this file except in compliance with the License. 82dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta * You may obtain a copy of the License at: 92dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta * 102dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta * http://www.apache.org/licenses/LICENSE-2.0 112dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta * 122dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta * Unless required by applicable law or agreed to in writing, software 132dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta * distributed under the License is distributed on an "AS IS" BASIS, 142dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 152dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta * See the License for the specific language governing permissions and 162dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta * limitations under the License. 172dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta * 182dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta ******************************************************************************/ 192dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta 202dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta/****************************************************************************** 212dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta * 222dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta * This is the implementation of the API for MCE subsystem 232dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta * 242dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta ******************************************************************************/ 252dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta 262dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta#include "bta_api.h" 272dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta#include "bd.h" 282dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta#include "bta_sys.h" 292dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta#include "bta_mce_api.h" 302dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta#include "bta_mce_int.h" 312dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta#include "gki.h" 322dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta#include <string.h> 332dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta#include "port_api.h" 342dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta#include "sdp_api.h" 352dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta 362dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta/***************************************************************************** 372dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta** Constants 382dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta*****************************************************************************/ 392dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta 402dc999935d4c69ae31ea93d9014165965dd373d6Hemant Guptastatic const tBTA_SYS_REG bta_mce_reg = 412dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta{ 422dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta bta_mce_sm_execute, 432dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta NULL 442dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta}; 452dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta 462dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta/******************************************************************************* 472dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta** 482dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta** Function BTA_MceEnable 492dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta** 502dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta** Description Enable the MCE I/F service. When the enable 512dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta** operation is complete the callback function will be 522dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta** called with a BTA_MCE_ENABLE_EVT. This function must 532dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta** be called before other functions in the MCE API are 542dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta** called. 552dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta** 562dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta** Returns BTA_MCE_SUCCESS if successful. 572dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta** BTA_MCE_FAIL if internal failure. 582dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta** 592dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta*******************************************************************************/ 602dc999935d4c69ae31ea93d9014165965dd373d6Hemant GuptatBTA_MCE_STATUS BTA_MceEnable(tBTA_MCE_DM_CBACK *p_cback) 612dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta{ 622dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta tBTA_MCE_STATUS status = BTA_MCE_FAILURE; 632dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta tBTA_MCE_API_ENABLE *p_buf; 642dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta 652dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta APPL_TRACE_API(__FUNCTION__); 662dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta if(p_cback && FALSE == bta_sys_is_register(BTA_ID_MCE)) 672dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta { 682dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta memset(&bta_mce_cb, 0, sizeof(tBTA_MCE_CB)); 692dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta 702dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta /* register with BTA system manager */ 712dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta bta_sys_register(BTA_ID_MCE, &bta_mce_reg); 722dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta 732dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta if (p_cback && (p_buf = (tBTA_MCE_API_ENABLE *) GKI_getbuf(sizeof(tBTA_MCE_API_ENABLE))) != NULL) 742dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta { 752dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta p_buf->hdr.event = BTA_MCE_API_ENABLE_EVT; 762dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta p_buf->p_cback = p_cback; 772dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta bta_sys_sendmsg(p_buf); 782dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta status = BTA_MCE_SUCCESS; 792dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta } 802dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta } 812dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta return(status); 822dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta} 832dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta 842dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta/******************************************************************************* 852dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta** 862dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta** Function BTA_MceGetRemoteMasInstances 872dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta** 882dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta** Description This function performs service discovery for the MAS service 892dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta** by the given peer device. When the operation is completed 902dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta** the tBTA_MCE_DM_CBACK callback function will be called with 912dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta** a BTA_MCE_MAS_DISCOVERY_COMP_EVT. 922dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta** 932dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta** Returns BTA_MCE_SUCCESS, if the request is being processed. 942dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta** BTA_MCE_FAILURE, otherwise. 952dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta** 962dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta*******************************************************************************/ 972dc999935d4c69ae31ea93d9014165965dd373d6Hemant GuptatBTA_MCE_STATUS BTA_MceGetRemoteMasInstances(BD_ADDR bd_addr) 982dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta{ 992dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta tBTA_MCE_STATUS ret = BTA_MCE_FAILURE; 1002dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta tBTA_MCE_API_GET_REMOTE_MAS_INSTANCES *p_msg; 1012dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta 1022dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta APPL_TRACE_API(__FUNCTION__); 1032dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta if ((p_msg = (tBTA_MCE_API_GET_REMOTE_MAS_INSTANCES *)GKI_getbuf(sizeof(tBTA_MCE_API_GET_REMOTE_MAS_INSTANCES))) != NULL) 1042dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta { 1052dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta p_msg->hdr.event = BTA_MCE_API_GET_REMOTE_MAS_INSTANCES_EVT; 1062dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta bdcpy(p_msg->bd_addr, bd_addr); 1072dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta bta_sys_sendmsg(p_msg); 1082dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta ret = BTA_MCE_SUCCESS; 1092dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta } 1102dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta 1112dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta return(ret); 1122dc999935d4c69ae31ea93d9014165965dd373d6Hemant Gupta} 113