bta_pan_api.cc revision 8af480e24549ba51a3f6858d9d9af504715e0bea
15738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/****************************************************************************** 25738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 35738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Copyright (C) 2004-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 of the API for PAN subsystem of BTA, 225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Broadcom's Bluetooth application layer for mobile phones. 235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ******************************************************************************/ 255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bt_target.h" 275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_api.h" 295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_sys.h" 305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "pan_api.h" 31258c2538e3b62a8cdb403f2730c45d721e5292b4Pavlin Radoslavov#include "bt_common.h" 325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_pan_api.h" 335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_pan_int.h" 345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include <string.h> 353576c564b33c20b5e2e90fdd3bca7ce24392ca50Mike J. Chen#include "bt_utils.h" 36d7ffd64accbd50a27289a388856e56244ccbb5daMyles Watson#include "osi/include/osi.h" 373576c564b33c20b5e2e90fdd3bca7ce24392ca50Mike J. Chen 38e9e58ced195ec2c983c7723c9cbdabd45eb0f2fdMarie Janssen#if (BTA_PAN_INCLUDED == TRUE) 395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectstatic const tBTA_SYS_REG bta_pan_reg = 415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_pan_hdl_event, 435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTA_PanDisable 445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}; 455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 478af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 488af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function BTA_PanEnable 498af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 508af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description Enable PAN service. This function must be 518af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * called before any other functions in the PAN API are called. 528af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * When the enable operation is complete the callback function 538af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * will be called with a BTA_PAN_ENABLE_EVT. 548af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 558af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns void 568af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 578af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_PanEnable(tBTA_PAN_CBACK p_cback) 595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 60717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov tBTA_PAN_API_ENABLE *p_buf = 61717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov (tBTA_PAN_API_ENABLE *)osi_malloc(sizeof(tBTA_PAN_API_ENABLE)); 625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* register with BTA system manager */ 645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_register(BTA_ID_PAN, &bta_pan_reg); 655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 66717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov p_buf->hdr.event = BTA_PAN_API_ENABLE_EVT; 67717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov p_buf->p_cback = p_cback; 685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 69717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov bta_sys_sendmsg(p_buf); 705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 758af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 768af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function BTA_PanDisable 778af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 788af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description Disables PAN service. 798af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 808af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 818af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns void 828af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 838af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_PanDisable(void) 855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 86717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov BT_HDR *p_buf = (BT_HDR *)osi_malloc(sizeof(BT_HDR)); 875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_deregister(BTA_ID_PAN); 89717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov p_buf->event = BTA_PAN_API_DISABLE_EVT; 90717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov 91717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov bta_sys_sendmsg(p_buf); 925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 958af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 968af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function BTA_PanSetRole 978af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 988af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description Sets PAN roles. When the enable operation is complete 998af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * the callback function will be called with a BTA_PAN_SET_ROLE_EVT. 1008af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 1018af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns void 1028af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 1038af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 1045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_PanSetRole(tBTA_PAN_ROLE role, tBTA_PAN_ROLE_INFO *p_user_info, tBTA_PAN_ROLE_INFO *p_gn_info, 1055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_PAN_ROLE_INFO *p_nap_info) 1065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 107717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov tBTA_PAN_API_SET_ROLE *p_buf = 10817a8221910d4f5ed99f2585aa41390aa80d50f4fSharvil Nanavati (tBTA_PAN_API_SET_ROLE *)osi_calloc(sizeof(tBTA_PAN_API_SET_ROLE)); 1095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 110717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov p_buf->hdr.event = BTA_PAN_API_SET_ROLE_EVT; 111717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov p_buf->role = role; 1125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 113717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov if (p_user_info && (role & BTA_PAN_ROLE_PANU)) { 114717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov if (p_user_info->p_srv_name) 115717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov strlcpy(p_buf->user_name, p_user_info->p_srv_name, BTA_SERVICE_NAME_LEN); 1165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 117717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov p_buf->user_app_id = p_user_info->app_id; 118717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov p_buf->user_sec_mask = p_user_info->sec_mask; 119717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov } 1205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 121717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov if (p_gn_info && (role & BTA_PAN_ROLE_GN)) { 122717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov if (p_gn_info->p_srv_name) 123717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov strlcpy(p_buf->gn_name, p_gn_info->p_srv_name, BTA_SERVICE_NAME_LEN); 1245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 125717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov p_buf->gn_app_id = p_gn_info->app_id; 126717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov p_buf->gn_sec_mask = p_gn_info->sec_mask; 127717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov } 1285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 129717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov if (p_nap_info && (role & BTA_PAN_ROLE_NAP)) { 130717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov if (p_nap_info->p_srv_name) 131717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov strlcpy(p_buf->nap_name, p_nap_info->p_srv_name, BTA_SERVICE_NAME_LEN); 1325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 133717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov p_buf->nap_app_id = p_nap_info->app_id; 134717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov p_buf->nap_sec_mask = p_nap_info->sec_mask; 1355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 137717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov 138717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov bta_sys_sendmsg(p_buf); 1395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 1405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 1428af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 1438af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function BTA_PanOpen 1448af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 1458af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description Opens a connection to a peer device. 1468af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * When connection is open callback function is called 1478af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * with a BTA_PAN_OPEN_EVT. 1488af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 1498af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 1508af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns void 1518af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 1528af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 15324933b5b1a06274c47133debac5251a97128a267June R. Tate-Gansvoid BTA_PanOpen(BD_ADDR bd_addr, tBTA_PAN_ROLE local_role, tBTA_PAN_ROLE peer_role) 1545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 155717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov tBTA_PAN_API_OPEN *p_buf = 156717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov (tBTA_PAN_API_OPEN *)osi_malloc(sizeof(tBTA_PAN_API_OPEN)); 1575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 158717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov p_buf->hdr.event = BTA_PAN_API_OPEN_EVT; 159717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov p_buf->local_role = local_role; 160717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov p_buf->peer_role = peer_role; 161717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov bdcpy(p_buf->bd_addr, bd_addr); 1625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 163717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov bta_sys_sendmsg(p_buf); 1645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 1655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 1678af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 1688af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function BTA_PanClose 1698af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 1708af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description Close a PAN connection to a peer device. 1718af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 1728af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 1738af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns void 1748af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 1758af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 176e9e58ced195ec2c983c7723c9cbdabd45eb0f2fdMarie Janssenvoid BTA_PanClose(uint16_t handle) 1775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 178717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov BT_HDR *p_buf = (BT_HDR *)osi_malloc(sizeof(BT_HDR)); 1795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 180717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov p_buf->event = BTA_PAN_API_CLOSE_EVT; 181717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov p_buf->layer_specific = handle; 182717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov 183717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov bta_sys_sendmsg(p_buf); 1845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 1853576c564b33c20b5e2e90fdd3bca7ce24392ca50Mike J. Chen#else 1863576c564b33c20b5e2e90fdd3bca7ce24392ca50Mike J. Chen 187d35a648d39710bbc5ac59f8add85166455af5af7Myles Watsonvoid BTA_PanEnable(UNUSED_ATTR tBTA_PAN_CBACK p_cback) 1883576c564b33c20b5e2e90fdd3bca7ce24392ca50Mike J. Chen{ 1893576c564b33c20b5e2e90fdd3bca7ce24392ca50Mike J. Chen} 1903576c564b33c20b5e2e90fdd3bca7ce24392ca50Mike J. Chen 1913576c564b33c20b5e2e90fdd3bca7ce24392ca50Mike J. Chenvoid BTA_PanDisable(void) 1923576c564b33c20b5e2e90fdd3bca7ce24392ca50Mike J. Chen{ 1933576c564b33c20b5e2e90fdd3bca7ce24392ca50Mike J. Chen} 1943576c564b33c20b5e2e90fdd3bca7ce24392ca50Mike J. Chen 195d35a648d39710bbc5ac59f8add85166455af5af7Myles Watsonvoid BTA_PanSetRole(UNUSED_ATTR tBTA_PAN_ROLE role, UNUSED_ATTR tBTA_PAN_ROLE_INFO *p_user_info, UNUSED_ATTR tBTA_PAN_ROLE_INFO *p_gn_info, 196d35a648d39710bbc5ac59f8add85166455af5af7Myles Watson UNUSED_ATTR tBTA_PAN_ROLE_INFO *p_nap_info) 1973576c564b33c20b5e2e90fdd3bca7ce24392ca50Mike J. Chen{ 1983576c564b33c20b5e2e90fdd3bca7ce24392ca50Mike J. Chen} 1993576c564b33c20b5e2e90fdd3bca7ce24392ca50Mike J. Chen 200d35a648d39710bbc5ac59f8add85166455af5af7Myles Watsonvoid BTA_PanOpen(UNUSED_ATTR BD_ADDR bd_addr, UNUSED_ATTR tBTA_PAN_ROLE local_role, 201d35a648d39710bbc5ac59f8add85166455af5af7Myles Watson UNUSED_ATTR tBTA_PAN_ROLE peer_role) 2023576c564b33c20b5e2e90fdd3bca7ce24392ca50Mike J. Chen{ 2033576c564b33c20b5e2e90fdd3bca7ce24392ca50Mike J. Chen} 2043576c564b33c20b5e2e90fdd3bca7ce24392ca50Mike J. Chen 205d35a648d39710bbc5ac59f8add85166455af5af7Myles Watsonvoid BTA_PanClose(UNUSED_ATTR uint16_t handle) 2063576c564b33c20b5e2e90fdd3bca7ce24392ca50Mike J. Chen{ 2073576c564b33c20b5e2e90fdd3bca7ce24392ca50Mike J. Chen} 2083576c564b33c20b5e2e90fdd3bca7ce24392ca50Mike J. Chen 2095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif /* BTA_PAN_INCLUDED */ 210